生成 PFN 身份
公共全节点(PFN)在启动时会自动采用一个随机产生的(临时的)网络标识.这对绝大多数 PFN 而言是合适的.但在某些情境下,你可能需要为您的 PFN 生成并设置一个固定的网络标识,特别是在以下这些情况中:
- 您希望将您的 PFN 作为种子进行广告宣传(即,供其他 Aptos PFN 连接).
- 您希望将您的 PFN 添加到上游 PFN 或 VFN 的已知身份允许列表(allowlist)中.
- 您希望在重启和发布过程中固定您的 PFN 身份,以便遥测(telemetry)和其他监控(monitoring)工具能够随着时间追踪您的 PFN.
本指南将向您展示如何生成静态网络身份并以此身份启动您的 PFN.
生成静态身份
Section titled “生成静态身份”要为您的 PFN 创建静态身份,您首先需要生成一对私钥和公钥.然后,您需要从公钥派生出 peer_id
,并在配置文件中使用 peer_id
(例如 fullnode.yaml
)来配置您的 PFN 的静态网络身份.
下面的步骤将指导您完成为您的 PFN 生成静态身份的过程.确切的步骤取决于您是使用 aptos-core
源代码运行还是使用 Docker 运行您的 PFN.
使用 aptos-core 源代码
Section titled “使用 aptos-core 源代码”如果您使用 aptos-core
源代码运行您的 PFN,请按照以下步骤操作:
- 生成私钥
首先,使用 Aptos CLI (aptos
) 生成一个十六进制编码的静态 x25519 私钥.这将是您网络身份的私钥.运行以下 aptos
CLI 命令:
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
文件:
cat ~/private-key.txtC83110913CBE4583F820FABEB7514293624E46862FAE1FD339B923F0CACC647D%
cat ~/private-key.txt.pubB881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813%
- 检索对等(peer)身份
接下来,请使用 aptos CLI
通过公钥获取对应的对等(peer)身份.在命令中加入 --host
参数,指定您的主机信息,这样才能生成并输出您 PFN 的网络地址.请按照下面的格式执行命令(记得将 --host
后的内容替换成您真实的主机信息):
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" } }}
在这个示例中,B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813
是 peer_id
.
- 以静态网络身份启动 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 被赋予之前生成的静态网络身份.
使用 Docker
Section titled “使用 Docker”如果您使用 Docker 运行您的 PFN,请按照以下步骤操作:
- 准备您的工具
首先,cd
进入您的本地 PFN 目录,并启动一个包含最新工具的 Docker 容器,例如:
cd ~/my-full-nodedocker run -it aptoslabs/tools:devnet /bin/bash
- 生成私钥
接下来,按照在aptoslabs/tools
Docker 容器内的剩余步骤进行操作.
打开一个新的终端窗口并 cd
进入您启动 PFN 的 Docker 容器的目录.确保提供您希望私钥文件存储的完整路径,运行命令:
aptos key generate \ --key-type x25519 \ --output-file /path/to/private-key.txt
- 检索对等(peer)身份
接下来,请使用 aptos CLI
通过公钥获取对应的对等(peer)身份.在命令中加入 --host
参数,指定您的主机信息,这样才能生成并输出您 PFN 的网络地址.请按照下面的格式执行命令(记得将 --host
后的内容替换成您真实的主机信息):
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" } }}
在这个示例中,B881EA2C174D8211C123E5A91D86227DB116A44BB345A6E66874F83D8993F813
是 peer_id
.
- 以静态网络身份启动 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 被赋予之前生成的静态网络身份.