跳转到内容

自定义 PFN 网络

在运行 PFN 的过程中,您可以出于不同的目的来设置节点的网络连接配置.比如,您可以向节点的配置中添加一条种子节点信息,以实现您的节点与您挑选的特定对等节点(peer)建立连接.或者,您还可以如生成 PFN 身份文档中描述的那样,设置一个静态的网络身份,让其他节点能够连接到您的 PFN.

本文档概述了如何根据不同的情况配置您的 PFN 网络,包括:

  • 允许节点连接到您的 PFN.
  • 将您的 PFN 连接到种子对等节点(seed peer).
  • 为其他 PFN 配置优先访问.
  • 配置您的 PFN 作为私有 PFN.

一旦您使用静态身份启动了 PFN,您可以允许其他人连接到您的 PFN:

  • 请确保开放您想要允许外部连接使用的 TCP 端口(如 61806182 ).这一步骤对于让其他节点能够连接到您的 PFN 是必须的.
  • 如果您正在使用 Docker,在 docker-compose.yaml 文件的端口部分只需要添加 - "6180:6180"- "6182:6182" .
  • 与他人分享您的 PFN 静态网络身份.然后,他们可以在节点的配置文件的 seeds 键中使用它连接到您的 PFN.详见以下部分.
  • 确保您在 addresses 中配置的端口号与您在 PFN 配置文件中配置的端口号相匹配(例如, 6180 6182).

下面的片段显示了允许其他节点连接到您的 PFN 的配置文件条目和格式.每个种子对等节点(seed peer)条目的格式应具有唯一的 peer_id, addresses 列表和 role:

<Peer_ID>:
addresses:
# 使用 DNS
- "/dns4/<DNS_Name>/tcp/<Port_Number>/noise-ik/<Public_Key>/handshake/0"
role: Upstream
<Peer_ID>:
addresses:
# 使用 IP
- "/ip4/<IP_Address>/tcp/<Port_Number>/noise-ik/<Public_Key>/handshake/0"
role: Upstream

例如:

B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813:
addresses:
- "/dns4/pfn0.node.devnet.aptoslabs.com/tcp/6182/noise-ik/B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813/handshake/0"
role: "Upstream"
B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813:
addresses:
- "/ip4/100.20.221.187/tcp/6182/noise-ik/B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813/handshake/0"
role: "Upstream"

要把种子对等节点添加到您的 PFN,您需要在 PFN 的配置文件中添加种子对等节点的地址,具体位置是公共网络配置中的 seeds 配置项.每一个种子对等节点的信息包括一个独一无二的 peer_id,addresses 列表,以及 role 的角色(比如 Upstream).以下是一个配置文件的示例,其中手动添加了种子对等节点:

full_node_networks:
- discovery_method: "onchain"
listen_address: ...
seeds: # 所有种子都在下面声明
bb14af025d226288a3488b4433cf5cb54d6a710365a2d95ac6ffbd9b9198a86a:
addresses:
- "/dns4/pfn0.node.devnet.aptoslabs.com/tcp/6182/noise-ik/bb14af025d226288a3488b4433cf5cb54d6a710365a2d95ac6ffbd9b9198a86a/handshake/0"
role: "Upstream"
7fe8523388084607cdf78ff40e3e717652173b436ae1809df4a5fcfc67f8fc61:
addresses:
- "/dns4/pfn1.node.devnet.aptoslabs.com/tcp/6182/noise-ik/7fe8523388084607cdf78ff40e3e717652173b436ae1809df4a5fcfc67f8fc61/handshake/0"
role: "Upstream"
f6b135a59591677afc98168791551a0a476222516fdc55869d2b649c614d965b:
addresses:
- "/dns4/pfn2.node.devnet.aptoslabs.com/tcp/6182/noise-ik/f6b135a59591677afc98168791551a0a476222516fdc55869d2b649c614d965b/handshake/0"
role: "Upstream"

要配置您的 PFN 允许其他节点即使在您的 PFN 达到最大可用网络连接数时也能连接到它,请遵循以下方法:

在您的 PFN 的配置文件中,将其他节点作为种子对等节点添加,并使用 Downstream 角色.这将允许其他节点直接连接到您,并获得优先访问权.例如:

seeds:
<其他节点的对等ID>
addresses:
- <其他节点的地址>
role: Downstream # 允许节点连接到我们

类似地,要使其他节点主动连接到您的 PFN,请让其他节点的配置文件中添加以下内容:

seeds:
<您的节点的对等ID>
addresses:
- <您的节点的地址>
role: PreferredUpstream # 允许节点连接到种子对等节点

如果您希望,您也可以将您的 PFN 配置为私有 PFN.这意味着您的 PFN 将不允许未经身份验证的连接,具体来说,任何不是验证器,VFN 或种子对等节点的节点都将无法连接到您的 PFN.

要将您的 PFN 配置为私有 PFN,请在您的 PFN 配置文件中添加以下内容.注意,您应该将其添加到 full_node_networks 配置中的公共网络条目中:

...
full_node_networks:
- discovery_method: "onchain"
listen_address: ...
max_inbound_connections: 0 # 防止任何未经身份验证的传入连接
mutual_authentication: true # 需要身份验证的连接
...