跳到主要内容

BOT Chain 节点配置:最佳实践

硬件规格

为了确保最佳的性能和可靠性,根据您在BOT Chain上的事务处理和状态查询的具体要求选择合适的节点类型至关重要。

归档&全节点部署指南

  1. 克隆存储库并进入目录

  2. bash

git clone https://github.com/bl-BOHR/node-deploy.git && cd node-deploy
  1. 授予执行权限(仅在Linux上第一次需要)

  2. bash

chmod +x BOHR_full_node.sh BOHR_archive_node.sh bin/geth*
  1. 初始化并启动节点

    • 全节点:

    • bash

    ./BOHR_full_node.sh reset
    • 存档节点:

    • bash

    ./BOHR_archive_node.sh reset
  2. 查看日志 节点日志位于:.local/fullnode/node/BOHR-node.log 对于需要以轻量级模式访问最新世界状态的用户来说,快速节点是理想的选择。它对系统 CPU 和磁盘空间的要求较少。

推荐配置

为了全面访问 BOT 主网的整个历史世界状态,请考虑部署存档节点。详细说明可在 BOT Chain GitHub 存储库中找到。(此处需要指向我们存储库的外部链接。)

  • 处理器:至少 2 核 CPU。

  • 内存:至少 4 GB RAM。

  • 存储:固态硬盘(SSD),最小容量为128GB。

  • 网络:稳定高速的互联网连接,最低 1 MBps。

存档节点

为了获取最新的世界状态并验证状态的有效性或生成数据证明,标准的全节点是合适的。

  • 处理器:至少 4 核 CPU。

  • 内存:至少 8 GB RAM。

  • 存储:SSD,最小容量为 1TB(建议使用 NVME SSD 以获得最佳性能)。

  • 网络:稳定高速的互联网连接,最低 2 MBps。

全节点

验证者最有价值的资产是两个密钥:一个用于签署交易,另一个用于签署区块

  • 处理器:至少 4 核 CPU。

  • 内存:至少 8 GB RAM。

  • 存储:固态硬盘(SSD),最小容量为 1TB。

  • 网络:稳定高速的互联网连接,最低 2 MBps。

对等配置

主网

  • 无需指定静态节点,主网只需要Bootnodes,这些节点已在代码中配置。另外,请确保使用最新版本的 config.toml 文件。

测试网

  • 测试网仍然需要手动配置 StaticNodes,因此 StaticNodes 列表包含在最新版本的 config.toml 中。

测试网上没有对等点的故障排除

  • 检查配置问题,例如错误的链 ID、错误的配置文件/目录。

  • 确保根据最新版本更新 config.toml 文件

  • 不要在测试网上使用引导节点,这不是必需的。

  • 删除 geth/nodesgeth/nodekey 文件/目录可能会有所帮助

  • 重新下载快照并重试。

用硬件钱包存储您的BOT

请不要将您的 RPC 端点公开到公共网络。

保护您的完整节点 RPC 免受黑客攻击

为了保护您的BOT,请勿与任何人分享您的 24 个单词。唯一需要了解它们的人就是你。简而言之,HSM 是经济实惠、高性能且便携式的硬件,有助于安全地生成、存储和管理您的私钥。当 HSM 配置正确时,恶意软件攻击和远程提取私钥会变得更加困难。

账户私钥

为了保护您的BOT,您应该只直接从官方来源下载软件,并确保您始终使用最新、最安全的版本

软件漏洞

保持 geth 始终运行很重要。有多种方法可以实现这一点,我们推荐的最简单的解决方案是将 geth 注册为 systemd 服务,以便它在系统重新启动和其他事件时自动启动。

将服务器作为守护进程运行

长时间运行(同步)并突然终止后,只有归档节点在重新启动时才有望快速重新同步。

设置备份节点

  • 以存档模式运行验证器节点

  • 优雅地关闭节点

  • 使用工具进行主动监控

运行备份节点的步骤

  1. 安装最新版本的geth

  2. 使用快速同步模式同步到最新高度。您可以下载最新的快照,也可以在节点完全同步后开始快速同步

  3. 优雅地关闭你的节点kill -HUP $(pgrep geth)

  4. 重新启动您的节点。

Why Node will be Offline for a While After Restart? or What will Happen If the Client is Force Killed?

重现步骤:

原因

  • 运行节点同步一段时间。

  • 突然终止节点(kill -9 或系统崩溃)。

  • 重启节点,观察从1小时前的区块高度到哪里重新同步。

如果 Geth 崩溃(或未正常关闭),则内存中保存的最近状态将丢失并需要重新生成。需要Geth很长时间才能恢复状态。

根本原因是 geth 会定期刷新状态树。该周期在 config.toml 中定义为 trieTimeout。

您可以通过向 geth 控制台发送命令来停止挖掘新块

如何将备份节点升级为验证节点?

使用 geth Attach ipc:path/to/geth.ipc 连接到您的验证器节点

然后,让备份节点恢复验证,

miner.stop()

鼓励每个候选验证者独立运行其操作,因为不同的设置可以提高网络的弹性。由于验证者投入大量资金,因此保护他们免受不同的 DoS 和 DDoS 攻击非常重要。在本节中,我们将讨论 BOT Chain 为其验证者采用的安全机制。

miner.start()

确保验证者的安全

验证者负责确保网络能够承受拒绝服务攻击。减轻这些风险的一种推荐方法是验证者在所谓的哨兵节点架构中仔细构建其网络拓扑。 Sentry 节点可以快速启动或更改其 IP 地址。由于与哨兵节点的链接位于私有 IP 空间中,因此基于互联网的攻击无法直接干扰它们。这将确保验证者阻止提案,并且投票始终能够到达网络的其余部分。

哨兵节点(DDOS防护)

要设置哨兵节点架构,您可以按照以下说明操作:

请不要将您的验证器全节点 RPC 端点公开到公共网络。

  1. 构建私有网络并在验证器节点与其哨兵之间建立可信的私有连接

安装你的全节点

在哨兵节点的控制台上,运行 admin.nodeInfo.enode 您应该得到与此类似的内容。

  1. 将哨兵设置为验证节点的对等点

!!!注意:[::] 将被解析为 localhost (127.0.0.1)。如果您的节点位于本地网络上,请检查每个单独的主机并使用 ifconfig 查找您的 IP 如果您的对等点不在本地网络上,您需要知道您的外部 IP 地址(使用服务)来构造 enode URL。复制该值并在第一个运行的节点的控制台中,

enode://f2da64f49c30a0038bba3391f40805d531510c473ec2bcc7c201631ba003c6f16fa09e03308e48f87d21c0fed1e4e0bc53428047f6dcf34da344d3f5bb69373b@[::]:30306?discport=0

更新验证节点的config.toml文件

如果成功则返回 true,但这并不意味着节点添加成功。

# make node invisible
NoDiscovery = true
# connect only to sentry
StaticNodes = ["enode://f2da64f49c30a0038bba3391f40805d531510c473ec2bcc7c201631ba003c6f16fa09e03308e48f87d21c0fed1e4e0bc53428047f6dcf34da344d3f5bb69373b@[10.1.1.1]:30306"]

要确认运行 admin.peers,您应该会看到刚刚添加的节点的详细信息。

这样,您的验证器节点将尝试仅与您提供的哨兵节点进行对等。

要确认运行 admin.peers,您应该会看到刚刚添加的节点的详细信息。

  1. 确认连接

geth 使用多个 TCP 端口用于不同的目的。

防火墙配置

geth 使用侦听器 (TCP) 端口和发现 (UDP) 端口,默认情况下均位于 31000。

如果您需要运行JSON-RPC,您还需要TCP端口8545。请注意,JSON-RPC端口不应该向外界开放,因为从那里您可以进行管理操作。

If you need to run JSON-RPC, you'll also need TCP port 8545. Note that JSON-RPC port should not be opened to the outside world, because from there you can do admin operations.