运行全节点(官方教程)
开发网运行全节点教程(非测试网)
您可以运行 FullNodes 来验证状态并同步到 Aptos 区块链。 FullNodes 可以由任何人运行。 FullNodes 通过相互查询或直接查询验证者来复制区块链的完整状态。
本教程详细介绍了如何配置公共 FullNode 以连接到 Aptos 开发网。 Aptos Labs 提供的 FullNode 具有速率限制,可能会阻碍在测试网上的开发。 运行全节点将直接为您提供数据以避免此类速率限制。
注意:您的公共 FullNode 将通过 REST 端点连接到 devnet,可在您的计算机上的 localhost:8080 来访问该端点。
前提条件
在开始学习本教程之前,我们建议您熟悉以下内容:
硬件要求
为了运行生产级的全节点,我们建议使用以下硬件:
CPU: Intel Xeon Skylake 或更新,4 核
内存:8GiB RAM
如果运行全节点用于开发或测试目的:
CPU: 2 核
内存:4GiB RAM
存储要求
注意:Aptos 存储的数据量取决于区块链的账本历史(长度)和链上状态(例如账户)的数量。 这可能受到许多因素的影响,包括:区块链的年龄、平均交易率和账本修剪器的配置。
鉴于 DevNet 目前每周都会重置(请参阅 Discord 上的 #devnet-release 频道),我们估计 Aptos 需要的存储空间不会超过几 GB。
开始
您可以通过两种方式配置公共 FullNode:使用 Aptos-core 源码或 Docker。
使用 Aptos-core 源码
从 GitHub 下载并克隆 Aptos-core 项目,并通过运行以下命令准备您的开发环境:
检出 devnet 分支:
git checkout origin/devnet
准备你的配置文件:
将
config/src/config/test_data/public_full_node.yaml
拷贝到你的工作目录。在你当前的工作目录中更新 public_full_node.yaml 文件:
指定你想存储 devet 的数据目录到
base:data_dir
;例如:./data
。拷贝和粘贴 waypoint 文件内容到
waypoint
区域。通读配置并进行任何其他所需的更改。 您可以通过检查以下文件作为示例来查看
public_full_node.yaml
文件应该具有哪些配置:docker/compose/public_full_node/public_full_node.yaml
运行 aptos-node:
cargo run -p aptos-node --release -- -f ./public_full_node.yaml
您现在已成功配置并开始运行连接到 Aptos devnet 的全节点。
注意:这将在 target/release/aptos-node
下构建一个发布二进制文件。发布二进制文件往往比调试二进制文件快得多,但缺少对开发有用的调试信息。 只需省略 --release
标志即可构建调试二进制文件。
使用 Docker
您还可以使用 Docker 来配置和运行您的全节点。
安装 Docker 和 Docker-Compose。
为您的公共全节点创建一个目录。
将公共全节点的 docker compose 和 aptos-core 配置文件下载到此目录中。
运行 docker-compose:
docker-compose up
.
验证您的全节点的正确性
验证初始化同步
在您的 FullNode 的初始同步期间,可能需要传输大量数据。 可以通过查询指标端口来监控进度,以查看您的节点当前同步到的版本。 运行以下命令:
该命令将输出节点的当前同步版本。 例如:
将此命令返回的同步版本(例如 71000)与 Aptos 状态页面上显示的当前版本(最新)进行比较。 如果您的节点正在赶上当前版本,则它正在正确同步。 注意:节点和状态页面之间存在一些版本差异是可以的,因为状态页面不会自动刷新。
(可选)验证出站网络连接
出站网络连接数应大于0。运行以下命令:
该命令将输出节点的出站网络连接数。 例如:
如果返回的出站连接数(例如 3)不超过 0,则意味着您的节点无法连接到 Aptos 区块链。 如果您遇到这种情况,请按照以下步骤操作,看看它们是否能解决问题:
按照以下步骤将您的节点更新到最新版本:更新步骤.
删除您可能已添加到配置文件(例如,public_full_node.yaml)中的任何种子节点。 种子可能会阻止您连接到网络。种子对等点在添加上游种子对等点部分中讨论。
(可选)检查 Docker 分类帐大小
可以通过进入 Docker 容器并检查大小来监控 DevNet 的区块链账本的体积。 这将允许您查看区块链分类帐当前消耗了多少存储空间。 运行这些命令来检查:
添加上游种子节点
注意:您可能会在节点的错误消息中看到 NoAvailablePeers
。 这在节点首次启动时是正常的。 等待节点运行几分钟,看看它是否连接到对等点。 如果没有,请按照以下步骤操作:
Devnet 验证器全节点最多只能接受约 5000 个连接。 如果我们的网络容量很大,您的全节点可能无法连接。 您可能会在节点的错误消息中不断看到 NoAvailablePeers
。 如果发生这种情况,您可以在 FullNode 配置文件中设置种子以添加要连接的新对等点。 我们准备了一些 FullNode 地址供您使用,如下所示。
此外,请随意使用社区提供的那些(任何已经运行全节点的人都可以提供他们的地址供您连接)。 将这些添加到您的 discovery_method
下的配置文件中:
高级指南
如果您想深入了解节点配置的更多自定义,本高级指南将向您展示:
为您的新全节点创建静态网络身份
检索其他节点许可列表的公共网络身份
启动带有或不带有静态网络标识的节点
为全节点创建静态身份
全节点将自动以随机生成的网络身份(PeerId 和公钥对)启动。 这对于常规的全节点非常有用,但如果您需要另一个节点将您列入白名单或提供特定权限,或者如果您希望始终以相同的身份运行您的全节点,则可以创建静态网络身份。
使用 aptos-labs/aptos-core 项目构建
aptos-operational-tool
,我们可以使用 cargo 构建来运行这些工具。 例如:或者,您可以使用我们的 docker 镜像。 使用最新的工具版本启动一个 docker 容器,例如:
运行密钥生成器,输出十六进制编码的静态 x25519 PrivateKey。 这将是您网络身份的私钥。
或者在 aptoslab/tools docker 容器内执行:
key 文件示例:
检索公共网络身份
在前一个密钥文件上运行 peer 生成器
或者在 aptoslab/tools docker 容器内执行:
yaml 输出示例:
在这个示例中,
ca3579457555c80fc7bb39964eb298c414fd60f81a2f8eedb0244ec07a26e575
是 peer id, 也是从您在上一步生成的私钥派生的公钥。这将创建一个 yaml 文件,其中包含您的公共身份,以提供给上游完整节点。 如果您想通过特定的上游完整节点连接您的完整节点,并且该完整节点仅允许已知身份连接到它们,这将非常有用。
使用静态网络身份启动节点
一旦我们有了静态身份,我们可以用它启动一个节点。
示例:
允许其他全节点连接
使用静态身份启动全节点后,您可以打开节点以允许其他人通过您的节点连接到 devnet。 确保在防火墙上打开端口 6180(或 6182,取决于您的节点正在侦听的端口,可以在 fullnode config yaml 文件中配置),并共享您的节点信息以供其他人用作 seeds
。
确保您在地址中输入的端口号与您在全节点配置中的端口号(6180 或 6182)相匹配。 例子:
更新全节点新版本
✨ DEVNET 新地址格式 ✨
Aptos 地址现在是 32 字节而不是 16 字节。 如果您之前添加了种子对等点,请确保将它们更新为新的 32 字节格式。 对于使用静态身份的人,您可以按照相同的说明重新生成您的身份,为上面的 FullNode 创建一个静态身份。
当 devnet 被擦除并使用更新版本发布时,您还需要更新 fullnode,以确保它可以与新网络保持同步。 一般步骤如下:
关闭您的全节点
删除数据文件(目录路径是您在
public_full_node.yaml
文件中指定的), 默认是/opt/aptos/data
删除
genesis.blob
和waypoint.txt
文件(取决于您怎么配置,你也可能没有这个文件)使用新的 waypoint 更新
public_full_node.yaml
(如果你直接将 waypoint 配置在这里)重启全节点
请参阅上面的 验证初始同步 部分以检查节点是否再次进行状态同步。
Last updated