Skip to content
🎉 Welcome to the new Aptos Docs! Click here to submit feedback!

生成 PFN 身份

⚠️

验证者和 VFN 的身份一旦初始化便长期保持不变。相比之下,PFN 的身份具有更短的生命周期,可以根据需要随时重新生成。因此,按照本指南生成身份的操作只应该用于 PFN,而不适合用于验证者或 VFN。

公共全节点(PFN)在启动时会自动采用一个随机产生的(临时的)网络标识。这对绝大多数 PFN 而言是合适的。但在某些情境下,你可能需要为您的 PFN 生成并设置一个固定的网络标识,特别是在以下这些情况中:

  • 您希望将您的 PFN 作为种子进行广告宣传(即,供其他 Aptos PFN 连接)。
  • 您希望将您的 PFN 添加到上游 PFN 或 VFN 的已知身份允许列表(allowlist)中。
  • 您希望在重启和发布过程中固定您的 PFN 身份,以便遥测(telemetry)和其他监控(monitoring)工具能够随着时间追踪您的 PFN。

本指南将向您展示如何生成静态网络身份并以此身份启动您的 PFN。

⚠️

在继续之前,请确保您已经知道如何启动您的本地 PFN。详见运行 PFN 的详细文档。

生成静态身份

要为您的 PFN 创建静态身份,您首先需要生成一对私钥和公钥。然后,您需要从公钥派生出 peer_id,并在配置文件中使用 peer_id(例如 fullnode.yaml)来配置您的 PFN 的静态网络身份。

下面的步骤将指导您完成为您的 PFN 生成静态身份的过程。确切的步骤取决于您是使用 aptos-core 源代码运行还是使用 Docker 运行您的 PFN。

使用 aptos-core 源代码

如果您使用 aptos-core 源代码运行您的 PFN,请按照以下步骤操作:

  1. 生成私钥

首先,使用 Aptos CLI (aptos) 生成一个十六进制编码的静态 x25519 私钥。这将是您网络身份的私钥。运行以下 aptos CLI 命令:

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

此命令将创建一个包含私钥的 private-key.txt 文件,以及一个包含公钥的相应 private-key.txt.pub 文件。下面展示了一个示例 private-key.txt 文件和 private-key.txt.pub 文件:

Terminal
cat ~/private-key.txt
C83110913CBE4583F820FABEB7514293624E46862FAE1FD339B923F0CACC647D%
 
cat ~/private-key.txt.pub
B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813%
  1. 检索对等(peer)身份

接下来,请使用 aptos CLI 通过公钥获取对应的对等(peer)身份。在命令中加入 --host 参数,指定您的主机信息,这样才能生成并输出您 PFN 的网络地址。请按照下面的格式执行命令(记得将 --host 后的内容替换成您真实的主机信息):

Terminal
aptos key extract-peer --host example.com:6180 \
    --public-network-key-file private-key.txt.pub \
    --output-file peer-info.yaml

此命令将把您的 PFN 的公共身份信息输出到 peer-info.yaml 文件中。例如:

{
  "Result": {
    "B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813": {
      "addresses": [
        "/dns/example.com/tcp/6180/noise-ik/0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813/handshake/0"
      ],
      "keys": [
        "0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813"
      ],
      "role": "Upstream"
    }
  }
}

在这个示例中,B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813peer_id

  1. 以静态网络身份启动 PFN

从公钥提取对等身份后,您可以使用配置文件中的 peer_id 字段中的公钥启动您的 PFN(例如 fullnode.yaml)。例如:

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

在我们的例子中(来自上面的),配置文件(fullnode.yaml)现在应该包含以下信息:

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

按照这个配置启动您的 PFN,可以确保您的 PFN 被赋予之前生成的静态网络身份。

使用 Docker

如果您使用 Docker 运行您的 PFN,请按照以下步骤操作:

  1. 准备您的工具

首先,cd 进入您的本地 PFN 目录,并启动一个包含最新工具的 Docker 容器,例如:

Terminal
cd ~/my-full-node
docker run -it aptoslabs/tools:devnet /bin/bash
  1. 生成私钥

接下来,按照在aptoslabs/tools Docker 容器内的剩余步骤进行操作。

打开一个新的终端窗口并 cd 进入您启动 PFN 的 Docker 容器的目录。确保提供您希望私钥文件存储的完整路径,运行命令:

Terminal
aptos key generate \
    --key-type x25519 \
    --output-file /path/to/private-key.txt
  1. 检索对等(peer)身份

接下来,请使用 aptos CLI 通过公钥获取对应的对等(peer)身份。在命令中加入 --host 参数,指定您的主机信息,这样才能生成并输出您 PFN 的网络地址。请按照下面的格式执行命令(记得将 --host 后的内容替换成您真实的主机信息):

Terminal
aptos key extract-peer --host example.com:6180 \
    --public-network-key-file private-key.txt.pub \
    --output-file peer-info.yaml

此命令将把您的 PFN 的公共身份信息输出到 peer-info.yaml 文件中。例如:

{
  "Result": {
    "B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813": {
      "addresses": [
        "/dns/example.com/tcp/6180/noise-ik/0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813/handshake/0"
      ],
      "keys": [
        "0xB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813"
      ],
      "role": "Upstream"
    }
  }
}

在这个示例中,B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813peer_id

  1. 以静态网络身份启动 PFN

从公钥提取对等身份后,您可以使用配置文件中的 peer_id 字段中的公钥启动您的 PFN(例如 fullnode.yaml)。例如:

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

在我们(上面的)的例子中,配置文件(fullnode.yaml)现在应该包含以下信息:

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

按照这个配置启动您的 PFN,可以确保您的 PFN 被赋予之前生成的静态网络身份。