底物创世块不匹配

我目前正在做这个教程。当我按照描述进行操作并在同一台机器上执行 alice 和 bob 节点时,它按预期工作:节点正在连接并正在创建和完成块。现在我想通过互联网和不同的机器完成同样的事情。所以我在我的 PC 上执行 bootnode,在我的笔记本电脑上执行另一个节点。我从相同的代码编译,并转发了我的路由器中的端口。所以现在我期望与在本地机器上运行时相同的行为。因此,当我执行它们时,我看到两个控制台中都打印了网络流量,但是 bob 节点打印了一个警告:Bootnode with peer id '12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp' is on a different chain (our genesis: 0xbfbd…3144 theirs: 0x8859…14c4)并且它们没有连接 ( Idle 0 peers)。

所以从警告中我得出结论,他们没有相同的创世块,这显然是作为区块链运行所必需的。但是根据我的理解,加入节点应该从引导节点复制链的当前状态。如何更改 bob 部分以使用链的 alices 状态?

两台机器都运行 rust 版本 1.50.0

谢谢你的帮助!

回答

Rust 编译不是确定性的,因此不幸的是,在两台计算机上编译的完全相同的区块链的完全相同的代码将不会具有相同的创世哈希。(特别是因为该链的部分起源是 Wasm 运行时 blob,它是用 Rust 非确定性编译的)。

您需要创建一个用于所有其他节点的 chainspec文件。请注意,您想在一台计算机上生成它,然后将文件传递给其他节点(不要重新生成它,因为您遇到的创世代码会有所不同),然后再使用正确的链规范启动其他节点和手动指定引导节点。


以上是底物创世块不匹配的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>