如何激活 Substrate GRANDPA 敲定?

Nik*_*kin 5 parity blockchain substrate

我想以 Babe/Grandpa 共识开始一条链。我可以Toolbox->RPC->author->insertKey()在 UI 中开始块生产。但我不知道如何开始区块终结。

我试过设置爷爷钥匙的方式与我坐在里面的宝贝钥匙一样Toolbox->RPC->author->insertKey()

  • 密钥类型: gran
  • 苏瑞: //Alice
  • publicKey:(0x88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee我也试过sr25519版本0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d

它没有帮助。

在这里,您可以看到块编号正确递增,而最终计数器保持为 #0:

2020-01-16 15:03:19 Idle (1 peers), best: #101 (0x56ce…7c6a), finalized #0 (0x885c…85d7), ? 0 ? 0
2020-01-16 15:03:21 Imported #102 (0xe984…2776)
2020-01-16 15:03:24 Idle (1 peers), best: #102 (0xe984…2776), finalized #0 (0x885c…85d7), ? 0.1kiB/s ? 10 B/s
2020-01-16 15:03:27 Starting consensus session on top of parent 0xe98487a704c4fb20239df06ba4e8dda9e57c3fa1813b97819c16311c4ac92776
2020-01-16 15:03:29 Idle (1 peers), best: #102 (0xe984…2776), finalized #0 (0x885c…85d7), ? 72 B/s ? 76 B/s
2020-01-16 15:03:31 Imported #103 (0xc3ef…1438)
2020-01-16 15:03:34 Idle (1 peers), best: #103 (0xc3ef…1438), finalized #0 (0x885c…85d7), ? 0.1kiB/s ? 10 B/s
Run Code Online (Sandbox Code Playgroud)

Jos*_*rff 2

有一个关于使用 Substrate 启动网络的很好的教程,它几乎涵盖了您正在寻找的主题,但有一个小例外,它使用 Aura 而不是 Babe 进行块生产。

如果您想使用众所周知的 Alice、Bob 等帐户作为验证器,将其密钥放入密钥库的最简单方法是--alice在启动节点时提供标志。本教程的步骤 2中介绍了此方法。从substrate --help

--alice添加到密钥库的会话密钥
    的快捷方式。--name Alice --validatorAlice

如果您想使用自己生成的密钥,则必须按照您的描述进行 RPC 调用。本教程的步骤 4 末尾介绍了此过程。

可以按照您的尝试通过 RPC 调用插入众所周知的 Alice 密钥。当您尝试此方法时,您可能没有最终确定块,原因有两个。

  • GRANDPA 要求 2/3 的验证者进行最终投票来最终确定任何事情(研究)。如果您的链规范中有其他验证器,则在您将正确的密钥插入至少 2/3 的验证节点之前,任何事情都不会最终确定。
  • 插入键时,您可能需要提供完整的开发短语,而不仅仅是//Alice.

  • 我找到了一个临时解决方案。通过 RPC 注入密钥后重新启动节点将开始最终确定。可能是 Substrate 的一个错误。 (4认同)
  • 我使用“aura”和“substrate-node-template”存储库完成了教程。同样的问题,通过 RPC 调用提交总共 2 个祖父密钥不会启动最终确定,但指定 `--alice` 和 `--bob` 会启动。是否可以以某种方式调试这个过程? (3认同)