运行全节点(官方教程)
开发网运行全节点教程(非测试网)
本教程详细介绍了如何配置公共 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。
- 1.从 GitHub 下载并克隆 Aptos-core 项目,并通过运行以下命令准备您的开发环境:git clone https://github.com/aptos-labs/aptos-core.gitcd aptos-core./scripts/dev_setup.shsource ~/.cargo/env
- 2.检出 devnet 分支:
git checkout origin/devnet
- 3.准备你的配置文件:
- 将
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
- 4.运行 aptos-node:
cargo run -p aptos-node --release -- -f ./public_full_node.yaml
您现在已成功配置并开始运行连接到 Aptos devnet 的全节点。
注意:这将在
target/release/aptos-node
下构建一个发布二进制文件。发布二进制文件往往比调试二进制文件快得多,但缺少对开发有用的调试信息。 只需省略 --release
标志即可构建调试二进制文件。您还可以使用 Docker 来配置和运行您的全节点。
- 1.安装 Docker 和 Docker-Compose。
- 2.为您的公共全节点创建一个目录。
- 3.
- 5.运行 docker-compose:
docker-compose up
.
在您的 FullNode 的初始同步期间,可能需要传输大量数据。 可以通过查询指标端口来监控进度,以查看您的节点当前同步到的版本。 运行以下命令:
curl 127.0.0.1:9101/metrics 2> /dev/null | grep "aptos_state_sync_version{.*\"synced\"}" | awk '{print $2}'
该命令将输出节点的当前同步版本。 例如:
71000
将此命令返回的同步版本(例如 71000)与 Aptos 状态页面上显示的当前版本(最新)进行比较。 如果您的节点正在赶上当前版本,则它正在正确同步。 注意:节点和状态页面之间存在一些版本差异是可以的,因为状态页面不会自动刷新。
出站网络连接数应大于0。运行以下命令:
curl 127.0.0.1:9101/metrics 2> /dev/null | grep "aptos_connections{direction=\"outbound\""
该命令将输出节点的出站网络连接数。 例如:
aptos_connections{direction="outbound",network_id="Public",peer_id="aabd651f",role_type="full_node"} 3
如果返回的出站连接数(例如 3)不超过 0,则意味着您的节点无法连接到 Aptos 区块链。 如果您遇到这种情况,请按照以下步骤操作,看看它们是否能解决问题:
可以通过进入 Docker 容器并检查大小来监控 DevNet 的区块链账本的体积。 这将允许您查看区块链分类帐当前消耗了多少存储空间。 运行这些命令来检查:
# 获得容器id:
id=$(docker container ls | grep public_full_node_fullnode_1 | grep -oE "^[0-9a-zA-Z]+")
# 进入容器:
docker exec -it $id /bin/bash
# 查看卷(ledger)大小:
du -cs -BM /opt/aptos/data
注意:您可能会在节点的错误消息中看到
NoAvailablePeers
。 这在节点首次启动时是正常的。 等待节点运行几分钟,看看它是否连接到对等点。 如果没有,请按照以下步骤操作:Devnet 验证器全节点最多只能接受约 5000 个连接。 如果我们的网络容量很大,您的全节点可能无法连接。 您可能会在节点的错误消息中不断看到
NoAvailablePeers
。 如果发生这种情况,您可以在 FullNode 配置文件中设置种子以添加要连接的新对等点。 我们准备了一些 FullNode 地址供您使用,如下所示。此外,请随意使用社区提供的那些(任何已经运行全节点的人都可以提供他们的地址供您连接)。 将这些添加到您的
discovery_method
下的配置文件中:...
full_node_networks:
- discovery_method: "onchain"
# The network must have a listen address to specify protocols. This runs it locally to
# prevent remote, incoming connections.
listen_address: ...
seeds:
bb14af025d226288a3488b4433cf5cb54d6a710365a2d95ac6ffbd9b9198a86a:
addresses:
- "/dns4/pfn0.node.devnet.aptoslabs.com/tcp/6182/ln-noise-ik/bb14af025d226288a3488b4433cf5cb54d6a710365a2d95ac6ffbd9b9198a86a/ln-handshake/0"
role: "Upstream"
7fe8523388084607cdf78ff40e3e717652173b436ae1809df4a5fcfc67f8fc61:
addresses:
- "/dns4/pfn1.node.devnet.aptoslabs.com/tcp/6182/ln-noise-ik/7fe8523388084607cdf78ff40e3e717652173b436ae1809df4a5fcfc67f8fc61/ln-handshake/0"
role: "Upstream"
f6b135a59591677afc98168791551a0a476222516fdc55869d2b649c614d965b:
addresses:
- "/dns4/pfn2.node.devnet.aptoslabs.com/tcp/6182/ln-noise-ik/f6b135a59591677afc98168791551a0a476222516fdc55869d2b649c614d965b/ln-handshake/0"
role: "Upstream"
...
如果您想深入了解节点配置的更多自定义,本高级指南将向您展示:
- 为您的新全节点创建静态网络身份
- 检索其他节点许可列表的公共网络身份
- 启动带有或不带有静态网络标识的节点
全节点将自动以随机生成的网络身份(PeerId 和公钥对)启动。 这对于常规的全节点非常有用,但如果您需要另一个节点将您列入白名单或提供特定权限,或者如果您希望始终以相同的身份运行您的全节点,则可以创建静态网络身份。
- 1.$ git clone https://github.com/aptos-labs/aptos-core.git$ cd aptos-core$ ./scripts/dev_setup.sh$ source ~/.cargo/env$ cargo run -p aptos-operational-tool -- <command> <args>或者,您可以使用我们的 docker 镜像。 使用最新的工具版本启动一个 docker 容器,例如:$ docker run -i aptoslab/tools:devnet sh -x$ aptos-operational-tool <command> <arg>
- 2.运行密钥生成器,输出十六进制编码的静态 x25519 PrivateKey。 这将是您网络身份的私钥。$ cargo run -p aptos-operational-tool -- generate-key --encoding hex --key-type x25519 --key-file /path/to/private-key.txt或者在 aptoslab/tools docker 容器内执行:$ aptos-operational-tool generate-key --encoding hex --key-type x25519 --key-file /path/to/private-key.txtkey 文件示例:$ cat /path/to/private-key.txtB8BD811A91D8E6E0C6DAC991009F189337378760B55F3AD05580235325615C74
- 1.在前一个密钥文件上运行 peer 生成器$ cargo run -p aptos-operational-tool -- extract-peer-from-file --encoding hex --key-file /path/to/private-key.txt --output-file /path/to/peer-info.yaml或者在 aptoslab/tools docker 容器内执行:$ aptos-operational-tool extract-peer-from-file --encoding hex --key-file /path/to/private-key.txt --output-file /path/to/peer-info.yamlyaml 输出示例:---ca3579457555c80fc7bb39964eb298c414fd60f81a2f8eedb0244ec07a26e575:addresses: []keys:- ca3579457555c80fc7bb39964eb298c414fd60f81a2f8eedb0244ec07a26e575role: Downstream在这个示例中,
ca3579457555c80fc7bb39964eb298c414fd60f81a2f8eedb0244ec07a26e575
是 peer id, 也是从您在上一步生成的私钥派生的公钥。 - 2.这将创建一个 yaml 文件,其中包含您的公共身份,以提供给上游完整节点。 如果您想通过特定的上游完整节点连接您的完整节点,并且该完整节点仅允许已知身份连接到它们,这将非常有用。
一旦我们有了静态身份,我们可以用它启动一个节点。
full_node_networks:
- network_id: "public"
discovery_method: "onchain"
identity:
type: "from_config"
key: "<PRIVATE_KEY>"
peer_id: "<PEER_ID>"
示例:
full_node_networks:
- network_id: "public"
discovery_method: "onchain"
identity:
type: "from_config"
key: "B8BD811A91D8E6E0C6DAC991009F189337378760B55F3AD05580235325615C74"
peer_id: "ca3579457555c80fc7bb39964eb298c414fd60f81a2f8eedb0244ec07a26e575"
使用静态身份启动全节点后,您可以打开节点以允许其他人通过您的节点连接到 devnet。 确保在防火墙上打开端口 6180(或 6182,取决于您的节点正在侦听的端口,可以在 fullnode config yaml 文件中配置),并共享您的节点信息以供其他人用作
seeds
。<Peer_ID>:
addresses:
# with DNS
- "/dns4/<DNS_Name>/tcp/<Port_Number>/ln-noise-ik/<Public_Key>/ln-handshake/0"
role: Upstream
<Peer_ID>:
addresses:
# with IP
- "/ip4/<IP_Address>/tcp/<Port_Number>/ln-noise-ik/<Public_Key>/ln-handshake/0"
role: Upstream
确保您在地址中输入的端口号与您在全节点配置中的端口号(6180 或 6182)相匹配。 例子:
bb14af025d226288a3488b4433cf5cb54d6a710365a2d95ac6ffbd9b9198a86a:
addresses:
- "/dns4/pfn0.node.devnet.aptoslabs.com/tcp/6182/ln-noise-ik/bb14af025d226288a3488b4433cf5cb54d6a710365a2d95ac6ffbd9b9198a86a/ln-handshake/0"
role: "Upstream"
bb14af025d226288a3488b4433cf5cb54d6a710365a2d95ac6ffbd9b9198a86a:
addresses:
- "/ip4/100.20.221.187/tcp/6182/ln-noise-ik/bb14af025d226288a3488b4433cf5cb54d6a710365a2d95ac6ffbd9b9198a86a/ln-handshake/0"
role: "Upstream"
✨ DEVNET 新地址格式 ✨
Aptos 地址现在是 32 字节而不是 16 字节。 如果您之前添加了种子对等点,请确保将它们更新为新的 32 字节格式。 对于使用静态身份的人,您可以按照相同的说明重新生成您的身份,为上面的 FullNode 创建一个静态身份。
Last modified 1yr ago