微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基板创世块不匹配

如何解决基板创世块不匹配

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

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

两台机器都运行 rust 版本 1.50.0

感谢您的帮助!

解决方法

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

您需要 create a chainspec 文件才能用于所有其他节点。请注意,您希望在一台计算机上生成此文件,然后将文件传递给其他节点(不要重新生成它,因为您遇到的创世代码会有所不同),然后再启动其他节点 using the correct chainspec and manually specifying boot nodes .

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。