节点设置

本节将展示如何设置Story网络节点。Story从以太坊权益证明中汲取灵感,将执行客户端和共识客户端分离。执行客户端story-geth通过Engine ABI将EVM区块中继到Story共识客户端,并使用ABCI++适配器使EVM与CometBFT状态兼容。在这种架构下,共识效率不再受执行交易吞吐量的限制。

storygeth binary文件是运行Story节点所需的客户端,可从Story Github最新release页面获取:

重要提示:对于Odyssey测试网,必须从v0.12.0版本开始,因为后续升级都需要先安装此版本。请先下载此版本,以确保与测试网环境兼容。此外,请确认下载的binary文件与你的系统架构适配。

硬件要求

硬件
最低要求

CPU

4 核处理器

内存

16 GB

硬盘

200 GB

带宽

25 MBit/s

如果在AWS服务器上运行节点,建议使用M6i、R6i或C6i系列。

端口设置

确保已开启以下节点运行所需的所有端口。

  • story-geth

    • 8545

      • 如果希望节点通过HTTP上的JSON-RPC API交互,该端口必需开启。

    • 8546

      • WebSockets交互需要。

    • 30303 (TCP + API)

      • 开放点对点通信。

  • story

    • 26656

      • 开放共识客户端点对点通信。

    • 26657

      • 如果希望节点连接Tendermint RPC接口,该端口必需开启。

    • 26660

      • 如果希望公开prometheus指标,该端口必需开启。

默认文件路径

默认情况下,共识和执行客户端设置在以下数据文件夹:

  • Mac OS X

    • story 根目录: ~/Library/Story/story

    • story-geth根目录: ~/Library/Story/geth

  • Linux

    • story根目录: ~/.story/story

    • story-geth根目录: ~/.story/geth

在本节教程中,我们将story数据根目录命名为${STORY_DATA_ROOT},将geth数据根目录命名为${GETH_DATA_ROOT}

你可以通过设置--home ${STORY_CONFIG_FOLDER}story客户端覆盖这些默认配置。同样,对于geth,你可以设置--config ${GETH_CONFIG_FOLDER}。更多详细信息,请查看Story Github的自述文件:Creating a private network

下载Story binary文件时,请注意,文件名会根据操作系统而有所不同。例如,在AMD64架构的Linux系统中,binary文件可能命名为story-linux-amd64geth-linux-amd。这种命名方式有助于识别版本兼容性,但为简单起见,建议在下载后将binary文件重命名为story

mv story-linux-amd64 story

运行上方代码,接下来,你可以直接在终端中使用story命令来执行程序。在本文档的其余部分,我们将默认使用story命令。

执行客户端设置 (story-geth)

  1. 在Mac OS X系统中,OS X binary文件尚未通过Story构建流程签名,因此可能需要手动解除隔离:

sudo xattr -rd com.apple.quarantine ./geth
  1. 接下来,使用下方代码,运行 geth

./geth --odyssey --syncmode full
  • 目前,默认的 snap 节点同步模式仍在开发中。

状态清除

如果遇到问题,并希望从初始状态加入网络,请运行下方代码:

rm -rf ${GETH_DATA_ROOT} && ./geth --odyssey --syncmode full
  • Mac OS X: rm -rf ~/Library/Story/geth/* && ./geth --odyssey --syncmode full Mac OS X: rm -rf ~/Library/Story/geth/* && ./geth --odyssey --syncmode full

  • Linux: rm -rf ~/.story/geth/* && ./geth --odyssey --syncmode full Linux的: rm -rf ~/.story/geth/* && ./geth --odyssey --syncmode full

状态调试

如果你想在geth运行时检查其状态,可以通过其内置的IPC-RPC服务器进行通信,运行下方代码:

geth attach ${GETH_DATA_ROOT}/geth.ipc
  • Mac OS X:

    • geth attach ~/Library/Story/geth/odyssey/geth.ipc

  • Linux:

    • geth attach ~/.story/geth/odyssey/geth.ipc

这将连接到你的IPC服务器,你可以运行以下命令以查询相关信息:

  • eth.blockNumber : 列出geth同步的最新区块——如果显示值为undefined,则连接或同步故障。

  • admin.peers : 列出客户端连接的其他geth节点列表——如果列表为空,则连接或同步故障。

  • eth.syncing : 如果geth正在同步,将返回true值,反之,则返回false值。

共识客户端设置 (story)

最后更新于