显示软件包…
1 个不稳定版本
0.8.0 | 2021年4月5日 |
---|---|
0.0.0 |
|
在 #tetcoin 中排名第 75
72 次每月下载
在 27 个软件包中使用了(直接使用 8 个)
2.5MB
59K SLoC
将GRANDPA最终性小工具集成到tetcore中。
此软件包是不稳定的,API和用法可能会更改。
此软件包提供了一个长时间运行的future,该future产生最终性通知。
用法
首先,使用block_import
函数创建一个块导入包装器。GRANDPA工作器需要与这个块导入对象链接,所以还会返回一个LinkHalf
。所有导入的块(从网络、共识或其他方式)都必须通过此包装器,否则共识可能会以意想不到的方式中断。
接下来,使用LinkHalf
和本地配置来run_grandpa_voter
。这需要一个Network
实现。返回的future应该被驱动到完成,并将在后台最终化块。
更改权限集
在GRANDPA中更改权限集的大致想法是,在某个时候,我们达成协议,确定当前集可以最终化的最大块高,一旦达到该高度的块被最终化,下一个集将从这个高度开始最终化。
从技术上来说,这将作为一个投票规则来实现,该规则表示,“如果在块B中的N个块内有变更信号,只有在它们包含B的情况下才对长度为NUM(B) + N的链进行投票”。这种条件包含逻辑很复杂,因为它需要查看链的任意远的历史。
相反,我们跟踪一个列表,其中包含到目前为止看到的所有信号(跨所有分支),按它们将应用的块号升序排序。我们从不对编号高于最早交接块号的链进行投票(这是num(signal) + N)。在最终化一个块时,根据信号块是否包含在新的最终化链中,我们应用或修剪任何已签署的更改。
许可证:GPL-3.0-or-later WITH Classpath-exception-2.0
依赖项
~33–49MB
~861K SLoC