全节点的网络身份

全节点将自动以随机生成的网络身份启动。这适用于常规的全节点。然而:

  • 您可能希望将您的全节点添加到特定上游 全节点的允许列表(即 Aptos 网络中的另一个 全节点 参与者),因为

    • 您可能需要在此特定上游 全节点 上的 全节点 的特定权限,或者

    • 这个上游 全节点只允许已知身份连接到它,或者

    • 您可能希望宣传您的 全节点 以供其他 Aptos 全节点 连接(以帮助支持 Aptos 网络)。

在这种情况下,如果您使用静态网络身份运行 全节点,而不是每次启动 全节点 时都会不断变化的随机生成的网络身份,这会有所帮助。

本指南将向您展示如何:

  • 为您的 全节点 创建一个静态网络身份。

  • 启动具有静态网络标识的节点。

  • 允许其他 全节点连接到您的 全节点

在您继续之前

在继续之前,请确保您已经知道如何启动本地 全节点。有关详细文档,请参阅运行全节点

Docker 仅在 LINUX 上支持

目前仅 Linux x86-64 平台支持 Docker 容器。如果您在 macOS 或 Windows 平台上,请使用 Aptos-core 源方法。

为全节点创建静态身份

为您的全节点创建一个静态身份:

  1. 您首先为您的全节点创建一个私钥、公钥对。

  2. 接下来,您从公钥中派生出 peer_id

  3. 最后,您使用 fullnode.yaml 中的peer_id为您的全节点创建静态网络身份。

请按照以下详细步骤操作:

1. 准备

使用 Aptos-core 源代码

拷贝 aptos-labs/aptos-core 存储库。例如:

$ git clone <https://github.com/aptos-labs/aptos-core.git>
$ cd aptos-core
$ ./scripts/dev_setup.sh
$ source ~/.cargo/env

使用Docker

或者,如果您使用的是 Linux x86-64 平台,则可以使用 Aptos Docker 映像。

cd进入本地公共全节点的目录并使用最新工具启动 Docker 容器,例如

$ cd ~/my-full-node
$ docker run -it aptoslabs/tools:devnet /bin/bash

2. 生成私钥

使用 Aptos-core 源代码

运行 Aptos CLI aptos s 以生成十六进制编码的静态 x25519 私钥。这将是您的网络身份的私钥**。**

注意

以下命令还将创建一个相应的 private-key.txt.pub文件,其中包含公共身份密钥。

aptos key generate --key-type x25519 --output-file /path/to/private-key.txt

示例 private-key.txt 和相关的 private-key.txt.pub 文件如下所示:

$ cat ~/private-key.txt
C83110913CBE4583F820FABEB7514293624E46862FAE1FD339B923F0CACC647D%

$ cat ~/private-key.txt.pub
B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813%

使用Docker

aptoslabs/tools Docker 容器内运行此步骤。打开一个新终端并 cd 进入您为全节点启动 Docker 容器的目录。确保提供要存储私钥 TXT 文件的完整路径,运行以下命令:

aptos key generate \\
    --key-type x25519 \\
    --output-file /path/to/private-key.txt

3. 检索对等身份

使用 Aptos-core 源代码

aptos key extract-peer  --private-key-file private-key.txt  \\
    --output-file peer-info.yaml

使用Docker

aptoslabs/toolsDocker 容器内部:

$ aptos key extract-peer \\
    --private-key-file /path/to/private-key.txt \\
    --output-file /path/to/peer-info.yaml

这将创建一个 YAML 文件,其中您的 peer_id与您提供的 private-key.txt 相对应。

示例输出 peer-info.yaml

---
B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813:
  addresses: []
  keys:
    - "0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813"
role: Upstream

在此示例中,B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813peer_id。在您的 fullnode.yamlpeer_id 字段中使用它来为您的全节点创建一个静态身份。

以静态网络身份启动节点

生成公钥后,您可以使用配置文件fullnode.yamlpeer_id 字段中的公钥以静态网络身份启动 全节点:

full_node_networks:
- network_id: "public"
  discovery_method: "onchain"
  identity:
    type: "from_config"
    key: "<PRIVATE_KEY>"
    peer_id: "<PEER_ID>"

在我们的示例中,您将指定上面生成的peer_id来代替 <PEER_ID>

full_node_networks:
- network_id: "public"
  discovery_method: "onchain"
  identity:
    type: "from_config"
    key: "C83110913CBE4583F820FABEB7514293624E46862FAE1FD339B923F0CACC647D"
    peer_id: "B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813"

允许其他全节点连接

端口和端口设置

有关端口设置及其使用方式的说明,请参阅端口和端口设置

使用静态身份启动 全节点 后,您可以允许其他人通过您的节点连接到 devnet。

注意

在以下步骤中,使用的端口号仅用于说明。您可以使用您选择的端口号。

  • 确保打开端口 6180(或 6182,例如,取决于您的节点正在侦听的端口)并打开防火墙。

  • 如果您使用 Docker,只需在 docker-compose.yaml文件的端口下添加"6180:6180"”或"6182:6182"

  • 与他人共享您的全节点 静态网络身份。然后他们可以在他们的fullnode.yaml文件的seeds键中使用它来连接到您的 全节点。

  • 确保您在addresses中输入的端口号与您在 全节点 配置文件 fullnode.yaml中的端口号匹配(例如,61806182)。

在 Discord 频道 advertise-full-nodes 中以以下格式分享您的全节点 静态网络身份:

<Peer_ID>:
  addresses:
  # with DNS
  - "/dns4/<DNS_Name>/tcp/<Port_Number>/noise-ik/<Public_Key>/handshake/0"
  role: Upstream
<Peer_ID>:
  addresses:
  # with 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"

注意

对等 ID 与 AccountAddress 同义。请参阅 NetworkAddress 以了解addresses键值是如何构造的。

Last updated