节点设置
最后更新于
本节将展示如何设置Story网络节点。Story从以太坊权益证明中汲取灵感,将执行客户端和共识客户端分离。执行客户端story-geth
通过Engine ABI将EVM区块中继到Story
共识客户端,并使用ABCI++适配器使EVM与CometBFT状态兼容。在这种架构下,共识效率不再受执行交易吞吐量的限制。
story
和geth
binary文件是运行Story节点所需的客户端,可从Story Github最新release
页面获取:
story-geth
执行客户端:
版本链接:story-geth/releases
最新稳定版 (v0.10.0):story-geth/v0.10.0
story
共识客户端:
版本链接:story/releases
最新稳定版 (v0.12.1):story/v0.12.1
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-amd64
或geth-linux-amd
。这种命名方式有助于识别版本兼容性,但为简单起见,建议在下载后将binary文件重命名为story
。
运行上方代码,接下来,你可以直接在终端中使用story
命令来执行程序。在本文档的其余部分,我们将默认使用story
命令。
在Mac OS X系统中,OS X binary文件尚未通过Story构建流程签名,因此可能需要手动解除隔离:
接下来,使用下方代码,运行 geth
:
目前,默认的 snap
节点同步模式仍在开发中。
如果遇到问题,并希望从初始状态加入网络,请运行下方代码:
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服务器进行通信,运行下方代码:
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
值。