连接到网络
本文档描述了如何将您的验证者节点和验证者全节点(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>
替换为文件中的值,并运行:
aptos init --profile mainnet-operator \
--network mainnet \
--private-key <operator_account_private_key> \
--skip-faucet
2. 检查账户余额
接下来,确保您有足够的资金支付网络上的交易手续费。您可以通过 CLI 运行下面的命令来检查:
aptos account list --profile mainnet-operator
这将显示您的验证账户中的代币余额。您将看到类似以下的输出:
"coin": {
"value": "5000"
}
3. 更新链上网络地址
接下来,您需要更新验证器和 VFN 的网络地址。这是为了确保您的节点能够连接到网络中的其他对等节点(peer)。首先,通过运行下面的命令获取节点的池地址。 注意:所有者地址(owner_address)是拥有质押池账户的地址,并用于初始化质押池。
aptos node get-stake-pool --owner-address <owner_address>
根据上面的命令得到的池地址,您需要为您的节点更新网络地址。这可以通过执行以下命令完成。需要注意的是,执行这个操作需要使用到 operator.yaml
文件,这个文件是在您第一次部署节点时生成的。
aptos node update-validator-network-addresses \
--pool-address <pool-address> \
--operator-config-file ~/$WORKSPACE/$USERNAME/operator.yaml \
--profile mainnet-operator
更新网络地址
要在区块链上更新节点的网络地址,您必须等待下一个纪元(epoch)的开始,因为每个纪元结束时才进行网络地址的更新。在下一个纪元开始前,您的节点是无法与网络中其它节点建立连接的。
4. 更新链上共识密钥
接下来,您需要更新节点的共识密钥。这是为了确保您的节点能够参与共识。您可以通过运行下面的命令来完成。注意,它需要池地址和 operator.yaml
文件(与上述类似)。
aptos node update-consensus-key \
--pool-address <pool-address> \
--operator-config-file ~/$WORKSPACE/$USERNAME/operator.yaml \
--profile mainnet-operator
更新共识密钥
要在链上更新您的共识密钥,您必须等待下一个纪元(epoch)开始,因为共识密钥更新是在当前纪元结束时进行的。在下一个纪元到来之前,您的节点将不能参与到共识过程中。
5. 加入验证者集合
最后,您需要加入验证者集合。您可以通过运行下面的命令来完成:
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
列表中查找您的验证者节点。
aptos node show-validator-set --profile mainnet-operator | jq -r '.Result.pending_active' | grep <pool_address>
当下一个纪元到来时,节点将被移入 active_validators
列表。运行下面的命令,在 “active_validators” 列表中查看您的验证节点:
aptos node show-validator-set --profile mainnet-operator | jq -r '.Result.active_validators' | grep <pool_address>
更新身份
成为验证者集合的一部分后,您需要更新节点的身份认证配置,使其与池地址相匹配。这一步骤对于保证您的节点能够与区块链网络中的对等节点(peer)顺利连接是必不可少的。
更新池地址
在节点的身份配置过程中忘记更新池地址是一个常犯的错误。如果您没能同时更新验证节点和 VFN 的身份文件中的池地址,将会导致您的节点无法与区块链网络中的对等节点(peer)建立连接。
根据您使用的部署方法,按照以下步骤更新您的节点身份配置。
使用源代码
如果您使用源代码部署节点,请按照以下步骤操作:
- 停止您的验证节点和 VFN,并从两个节点中删除数据目录。确保同时删除验证节点上的
secure-data.json
文件。您可以在验证者节点的配置文件中看到secure-data.json
文件的位置。 - 在
validator-identity.yaml
和validator-fullnode-identity.yaml
文件中将您的account_address
更新为您的池地址。不要更改其他任何内容。 - 重新启动验证者节点和 VFN。
使用 Docker
如果您使用 Docker 部署节点,请按照以下步骤操作:
- 停止您的节点并删除数据卷:
docker compose down --volumes
。确保同时删除验证者节点上的secure-data.json
文件。您可以在验证节点的配置文件中看到secure-data.json
文件的位置。 - 在
validator-identity.yaml
和validator-fullnode-identity.yaml
文件中将您的account_address
更新为您的池地址。不要更改其他任何内容。 - 使用:
docker compose up
重新启动节点。
使用 Terraform
如果您使用 Terraform 部署节点(例如,对于 AWS、Azure 或 GCP),请按照以下步骤操作:
-
在 Terraform 配置中增加
era
编号。应用此配置时,将清除数据。 -
在您的 terraform 模块中设置
enable_monitoring
变量。例如:config.tfmodule "aptos-node" { ... enable_monitoring = true utility_instance_num = 3 # 这将添加一个额外的实用程序实例来运行监控组件 }
-
使用:
terraform apply
应用更改。您将看到创建了一个新的 pod。运行kubectl get pods
进行检查。 -
使用以下命令找到监控负载均衡器的 IP/DNS:
Terminalkubectl get svc ${WORKSPACE}-mon-aptos-monitoring --output jsonpath='{.status.loadBalancer.ingress[0]}'
您将能够通过
http://<ip/DNS>
访问 Terraform 仪表板。 -
拉取最新的 terraform 模块
terraform get -update
,然后应用 Terraform:terraform apply
。 -
下载您的网络的
genesis.blob
和waypoint.txt
文件。查看节点文件了解下载这些文件的位置和命令。 -
在
validator-identity.yaml
和validator-fullnode-identity.yaml
文件中将您的account_address
更新为您的池地址。不要更改其他任何内容。 -
重新创建密钥。确保密钥名称与您的
era
编号匹配,例如,如果您有era = 3
,则应将密钥名称替换为:
${WORKSPACE}-aptos-node-0-genesis-e3
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
引导节点
在加入验证者集合并更新节点身份配置以匹配池地址后,您需要引导节点连接到网络。要做到这一点,请按照以下步骤操作:
- 启动 VFN。VFN 将连接到网络并开始同步。更多信息,请参见状态同步。
- VFN 同步完成后,重新启动验证节点。它将从 VFN 同步,然后连接到网络中的其他验证者并开始参与共识。
完成这两个步骤后,您的节点将连接到网络并参与共识。
后续步骤
祝贺您!您已成功将节点连接到 Aptos 网络。要验证您的节点是否运行正确,请访问节点健康文档。该文档描述了如何验证和监控您的验证节点和 VFN 的健康状况,包括初始节点验证部分。