#tetcoin #framework #blockchain #crypto

tc-finality-grandpa

将GRANDPA最终性小工具集成到tetcore中

显示软件包…

1 个不稳定版本

0.8.0 2021年4月5日
0.0.0 2021年3月5日

#tetcoin 中排名第 75

Download history 20/week @ 2024-03-13 32/week @ 2024-03-20 43/week @ 2024-03-27 51/week @ 2024-04-03 19/week @ 2024-04-10 19/week @ 2024-04-17 24/week @ 2024-04-24 17/week @ 2024-05-01 21/week @ 2024-05-08 21/week @ 2024-05-15 15/week @ 2024-05-22 24/week @ 2024-05-29 21/week @ 2024-06-05 18/week @ 2024-06-12 15/week @ 2024-06-19 16/week @ 2024-06-26

72 次每月下载
27 个软件包中使用了(直接使用 8 个)

GPL-3.0-or-later…

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