Aptos Wiki
MoveMove 社区Aptos 链接合集Sui WikiStarcoin Wiki
  • 🎉欢迎
  • 💡概览
    • 起源
    • 愿景
    • 主网路线图
    • 激励测试网(1)
    • 技术路线图
    • 激励测试网(2)
    • 激励测试网(3)
    • 激励测试网(4)
  • 📌基础
    • 账户(Account)
    • 事件(Events)
    • 证明(Proof)
    • Gas 和交易费
    • 节点网络和同步
    • 验证者节点
    • 全节点
    • 交易和状态
  • 🔄交易
    • 与 Aptos 区块链交互
  • 📓教程
    • Petra 钱包插件安装使用
    • 教程指引
    • 您的第一笔交易
    • 您的第一个 Move 模块
    • 您的第一个 NFT
    • 运行本地网络
    • 开发网 Devnet
      • 运行全节点(官方教程)
      • 运行全节点(社区教程)
        • Windows
        • Linux
    • 测试网 Testnet
      • 社区教程
        • AIT-3 新功能
        • 节点要求
        • AIT-3 步骤
        • 使用 Docker
        • 全节点搭建
        • 加入测试网
        • 离开激励测试网
  • 🖊️博客
    • Block-STM:我们如何在 Aptos 区块链上每秒执行超过 16 万笔交易
  • 🗻生态
    • Aptos 宣布资助计划!
    • Aptos 生态项目汇总
      • 聚合器
        • Hippo Labs
      • Defi
        • 🟢Pontem Network
        • 🟢Vial Protocol
        • 1KX Protocol
        • Seam Money
        • Aries Markets
        • Empo Finance
        • Ultima protocol
        • Econia
        • Zaptos Finance
        • Laminar Market
        • Thala Labs
        • AptoSwap
        • Aptoslend
        • ASwap
      • 基础设施
        • 🟢Aptos 域名服务
        • Nutrios
        • Dialect
        • Switchboard
      • NFT
        • 🟢Topaz NFT Marketplace
        • TokenMasksLabs
        • Clone Protocol
        • Aptos Ape Society
      • 钱包
        • 🟢Fewcha Wallet
        • 🟢Martian Wallet
        • Volt.id wallet
        • ONTO Wallet
        • Hive Wallet
        • Blocto
      • 工具
        • ChainIDE
        • Paymagic
        • Aptosphere
        • Saber Labs
  • ❓问题(FAQ)
    • 常见问题
    • 如何分享自己的节点
    • 如何运行多个节点
    • 如何修改节点配置文件
Powered by GitBook
On this page
  • 前提条件​
  • 硬件要求​
  • 存储要求
  • 开始​
  • 使用 Aptos-core 源码​
  • 使用 Docker​
  • 验证您的全节点的正确性​
  • 验证初始化同步​
  • (可选)验证出站网络连接​​
  • (可选)检查 Docker 分类帐大小​
  • 添加上游种子节点​
  • 高级指南​
  • 为全节点创建静态身份​
  • 检索公共网络身份​
  • 使用静态网络身份启动节点​
  • 允许其他全节点连接​
  • 更新全节点新版本
  1. 教程
  2. 开发网 Devnet

运行全节点(官方教程)

开发网运行全节点教程(非测试网)

Previous开发网 DevnetNext运行全节点(社区教程)

Last updated 2 years ago

您可以运行 来验证状态并同步到 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。

  1. 从 GitHub 下载并克隆 Aptos-core 项目,并通过运行以下命令准备您的开发环境:

    git clone https://github.com/aptos-labs/aptos-core.git
    cd aptos-core
    ./scripts/dev_setup.sh
    source ~/.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. 运行 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

出站网络连接数应大于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.txt

    key 文件示例:

    $ cat /path/to/private-key.txt
    B8BD811A91D8E6E0C6DAC991009F189337378760B55F3AD05580235325615C74
  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.yaml

    yaml 输出示例:

     ---
     ca3579457555c80fc7bb39964eb298c414fd60f81a2f8eedb0244ec07a26e575:
       addresses: []
       keys:
         - ca3579457555c80fc7bb39964eb298c414fd60f81a2f8eedb0244ec07a26e575
       role: 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 新地址格式 ✨

  1. 关闭您的全节点

  2. 删除数据文件(目录路径是您在 public_full_node.yaml 文件中指定的), 默认是 /opt/aptos/data

  3. 删除 genesis.blob 和 waypoint.txt 文件(取决于您怎么配置,你也可能没有这个文件)

  4. 使用新的 waypoint 更新 public_full_node.yaml (如果你直接将 waypoint 配置在这里)

  5. 重启全节点

开始

使用 Aptos-core 源码

下载 devnet 的 和 文件。

使用 Docker

将公共全节点的 和 配置文件下载到此目录中。

将 devnet 的 和 文件下载到该目录中。

验证您的全节点的正确性

验证初始化同步

将此命令返回的同步版本(例如 71000)与 上显示的当前版本(最新)进行比较。 如果您的节点正在赶上当前版本,则它正在正确同步。 注意:节点和状态页面之间存在一些版本差异是可以的,因为状态页面不会自动刷新。

(可选)验证出站网络连接​

按照以下步骤将您的节点更新到最新版本:.

删除您可能已添加到配置文件(例如,public_full_node.yaml)中的任何种子节点。 种子可能会阻止您连接到网络。种子对等点在部分中讨论。

(可选)检查 Docker 分类帐大小

添加上游种子节点

高级指南

为全节点创建静态身份

使用 项目构建 aptos-operational-tool ,我们可以使用 cargo 构建来运行这些工具。 例如:

检索公共网络身份

使用静态网络身份启动节点

允许其他全节点连接

Aptos 地址现在是 32 字节而不是 16 字节。 如果您之前添加了种子对等点,请确保将它们更新为新的 32 字节格式。 对于使用静态身份的人,您可以按照相同的说明,为上面的 FullNode 创建一个静态身份。

当 devnet 被擦除并使用更新版本发布时,您还需要更新 fullnode,以确保它可以与新网络保持同步。 一般步骤如下:

获取最新的 和 文件

请参阅上面的 部分以检查节点是否再次进行状态同步。

📓
FullNodes
​
验证者节点概念
全节点概念
REST 规范
​
​
​
genesis
waypoint
​
docker compose
aptos-core
genesis
waypoint
​
​
Aptos 状态页面
​
​
​
​
​
aptos-labs/aptos-core
​
​
​
​
genesis
waypoint
更新步骤
添加上游种子对等点
重新生成您的身份
验证初始同步