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

连接到网络

本文档描述了如何将您的验证者节点和验证者全节点(VFN)连接到 Aptos 网络。

⚠️

最小质押要求
只有当您的验证节点能够满足网络的最小质押要求时,您才应遵循这些说明。当前所需的最小质押要求为 100 万 APT Token。

从高层次来看,将节点连接到 Aptos 网络需要四个步骤:

初始化质押池(stake pool)

首先,您需要初始化质押池。

加入验证者集合(validator set)

其次,您需要加入验证者集合。

更新身份(identities)

第三,您需要更新节点身份配置以匹配质押池地址。

引导节点(Bootstrap)

最后,您需要引导节点,以便它们可以连接到网络并开始同步。

我们将在下面详细说明每一步。

初始化质押池

首先,您需要为节点初始化质押池。您可以初始化两种类型的池 ———— 质押池或委托池。您可以在质押委托质押部分阅读有关这些池之间差异的更多信息。

要初始化质押池,请按照质押池操作中的说明进行。如果是要初始化委托池,请按照委托池操作中的说明进行。

加入验证者集合

接下来,您需要加入验证者集合。请按照以下步骤操作:

⚠️

主网与测试网
下面显示的命令适用于 Aptos 主网。如果您要连接到不同的网络,您需要在命令中相应更改 --network 值。您可以查看 Aptos 区块链网络中的值,以了解如何根据不同的网络设置配置文件。

1. 初始化 Aptos CLI

首先,使用您的运营者账户私钥初始化 Aptos CLI。这可以在 private-keys.yaml 文件下的 account_private_key 条目中找到。

将下面命令中的 <operator_account_private_key> 替换为文件中的值,并运行:

Terminal
aptos init --profile mainnet-operator \
   --network mainnet \
   --private-key <operator_account_private_key> \
   --skip-faucet

2. 检查账户余额

接下来,确保您有足够的资金支付网络上的交易手续费。您可以通过 CLI 运行下面的命令来检查:

Terminal
aptos account list --profile mainnet-operator

这将显示您的验证账户中的代币余额。您将看到类似以下的输出:

Terminal
"coin": {
   "value": "5000"
}

3. 更新链上网络地址

接下来,您需要更新验证器和 VFN 的网络地址。这是为了确保您的节点能够连接到网络中的其他对等节点(peer)。首先,通过运行下面的命令获取节点的池地址。 注意:所有者地址(owner_address)是拥有质押池账户的地址,并用于初始化质押池。

Terminal
aptos node get-stake-pool --owner-address <owner_address>

根据上面的命令得到的池地址,您需要为您的节点更新网络地址。这可以通过执行以下命令完成。需要注意的是,执行这个操作需要使用到 operator.yaml 文件,这个文件是在您第一次部署节点时生成的。

Terminal
aptos node update-validator-network-addresses  \
   --pool-address <pool-address> \
   --operator-config-file ~/$WORKSPACE/$USERNAME/operator.yaml \
   --profile mainnet-operator

更新网络地址
要在区块链上更新节点的网络地址,您必须等待下一个纪元(epoch)的开始,因为每个纪元结束时才进行网络地址的更新。在下一个纪元开始前,您的节点是无法与网络中其它节点建立连接的。

4. 更新链上共识密钥

接下来,您需要更新节点的共识密钥。这是为了确保您的节点能够参与共识。您可以通过运行下面的命令来完成。注意,它需要池地址和 operator.yaml 文件(与上述类似)。

Terminal
aptos node update-consensus-key  \
   --pool-address <pool-address> \
   --operator-config-file ~/$WORKSPACE/$USERNAME/operator.yaml \
   --profile mainnet-operator

更新共识密钥
要在链上更新您的共识密钥,您必须等待下一个纪元(epoch)开始,因为共识密钥更新是在当前纪元结束时进行的。在下一个纪元到来之前,您的节点将不能参与到共识过程中。

5. 加入验证者集合

最后,您需要加入验证者集合。您可以通过运行下面的命令来完成:

Terminal
aptos node join-validator-set \
   --pool-address <pool-address> \
   --profile mainnet-operator

在区块链中,验证节点集合(validator set)是在每个纪元(epoch)结束时进行更新的。因此,您需要等到下一个纪元开始,您的验证者节点才有机会加入这个集合。

识别下一个纪元
您可以通过检查 Aptos Explorer或运行命令 aptos node get-stake-pool 来识别下一个时代。

6. 检查验证者集合

当您执行加入验证者集合的命令时,您的验证者节点将处于“待激活”状态,直到下一个纪元发生。您可以运行下面的命令,在 pending_active 列表中查找您的验证者节点。

Terminal
aptos node show-validator-set --profile mainnet-operator | jq -r '.Result.pending_active' | grep <pool_address>

当下一个纪元到来时,节点将被移入 active_validators 列表。运行下面的命令,在 “active_validators” 列表中查看您的验证节点:

Terminal
aptos node show-validator-set --profile mainnet-operator | jq -r '.Result.active_validators' | grep <pool_address>

更新身份

成为验证者集合的一部分后,您需要更新节点的身份认证配置,使其与池地址相匹配。这一步骤对于保证您的节点能够与区块链网络中的对等节点(peer)顺利连接是必不可少的。

⚠️

更新池地址
在节点的身份配置过程中忘记更新池地址是一个常犯的错误。如果您没能同时更新验证节点和 VFN 的身份文件中的池地址,将会导致您的节点无法与区块链网络中的对等节点(peer)建立连接。

根据您使用的部署方法,按照以下步骤更新您的节点身份配置。

使用源代码

如果您使用源代码部署节点,请按照以下步骤操作:

  1. 停止您的验证节点和 VFN,并从两个节点中删除数据目录。确保同时删除验证节点上的 secure-data.json 文件。您可以在验证者节点的配置文件中看到 secure-data.json 文件的位置。
  2. validator-identity.yamlvalidator-fullnode-identity.yaml 文件中将您的 account_address 更新为您的池地址。不要更改其他任何内容。
  3. 重新启动验证者节点和 VFN。

使用 Docker

如果您使用 Docker 部署节点,请按照以下步骤操作:

  1. 停止您的节点并删除数据卷:docker compose down --volumes。确保同时删除验证者节点上的 secure-data.json 文件。您可以在验证节点的配置文件中看到 secure-data.json 文件的位置。
  2. validator-identity.yamlvalidator-fullnode-identity.yaml 文件中将您的 account_address 更新为您的池地址。不要更改其他任何内容。
  3. 使用:docker compose up 重新启动节点。

使用 Terraform

如果您使用 Terraform 部署节点(例如,对于 AWS、Azure 或 GCP),请按照以下步骤操作:

  1. 在 Terraform 配置中增加 era 编号。应用此配置时,将清除数据。

  2. 在您的 terraform 模块中设置 enable_monitoring 变量。例如:

    config.tf
    module "aptos-node" {
      ...
      enable_monitoring           = true
      utility_instance_num        = 3  # 这将添加一个额外的实用程序实例来运行监控组件
    }
  3. 使用:terraform apply 应用更改。您将看到创建了一个新的 pod。运行 kubectl get pods 进行检查。

  4. 使用以下命令找到监控负载均衡器的 IP/DNS:

    Terminal
    kubectl get svc ${WORKSPACE}-mon-aptos-monitoring --output jsonpath='{.status.loadBalancer.ingress[0]}'

    您将能够通过 http://<ip/DNS> 访问 Terraform 仪表板。

  5. 拉取最新的 terraform 模块 terraform get -update,然后应用 Terraform:terraform apply

  6. 下载您的网络的 genesis.blobwaypoint.txt 文件。查看节点文件了解下载这些文件的位置和命令。

  7. validator-identity.yamlvalidator-fullnode-identity.yaml 文件中将您的 account_address 更新为您的池地址。不要更改其他任何内容。

  8. 重新创建密钥。确保密钥名称与您的 era 编号匹配,例如,如果您有 era = 3,则应将密钥名称替换为:

Terminal
${WORKSPACE}-aptos-node-0-genesis-e3
Terminal
export WORKSPACE=<您的工作空间名称>
 
kubectl create secret generic ${WORKSPACE}-aptos-node-0-genesis-e2 \
    --from-file=genesis.blob=genesis.blob \
    --from-file=waypoint.txt=waypoint.txt \
    --from-file=validator-identity.yaml=keys/validator-identity.yaml \
    --from-file=validator-full-node-identity.yaml=keys/validator-full-node-identity.yaml

引导节点

在加入验证者集合并更新节点身份配置以匹配池地址后,您需要引导节点连接到网络。要做到这一点,请按照以下步骤操作:

  1. 启动 VFN。VFN 将连接到网络并开始同步。更多信息,请参见状态同步
  2. VFN 同步完成后,重新启动验证节点。它将从 VFN 同步,然后连接到网络中的其他验证者并开始参与共识。

完成这两个步骤后,您的节点将连接到网络并参与共识。

后续步骤

祝贺您!您已成功将节点连接到 Aptos 网络。要验证您的节点是否运行正确,请访问节点健康文档。该文档描述了如何验证和监控您的验证节点和 VFN 的健康状况,包括初始节点验证部分。