15次重大发布
0.17.0 | 2024年7月19日 |
---|---|
0.14.0 | 2024年6月24日 |
0.10.0 | 2024年3月19日 |
0.6.0 | 2023年12月13日 |
0.0.0 |
|
#1691 in 魔法豆
1,817 每月下载次数
用于 10 个crate(3个直接使用)
74KB
2K SLoC
Parachain PoV恢复
一个 parachain 需要构建 PoVs,并将其发送到 relay chain 以进行进展。这些 PoVs 是擦除编码的,其中一部分由每个 relay chain 验证器存储。由于 relay chain 决定包含哪个 parachain 的 PoV 以及因此推进 parachain,所以对应于该 PoV 的块可能没有在 parachain 网络中传播。这可能有几个原因,可能是一个恶意聚合器成功包含了其自己的 PoV 但不想与其他网络共享,或者可能是一个聚合器在能够将块分发到网络之前就宕机了。当发生类似情况时,我们可以使用此 crate 中实现的 PoV 恢复算法来恢复 PoV 并将其传播到网络的其他部分。
它的工作方式如下
-
对于每个包含的 relay chain 块,我们记录我们的 parachain 的候选者。如果属于 PoV 的块已经已知,我们什么都不做。否则,我们启动一个计时器,在指定的时间间隔内等待随机时间,然后开始恢复 PoV。
-
如果在启动和触发计时器之间导入块,我们跳过 PoV 的恢复。
-
如果计时器触发,我们使用 relay chain PoV 恢复协议来恢复 PoV。
4a. 恢复后,我们恢复块并导入它。
4b. 由于我们正在尝试恢复挂起的候选者,因此不可用性无法保证。如果块 PoV 尚未可用,我们重试。
如果我们需要恢复多个 PoV 块(希望在实际生活中不会发生),我们确保块按正确顺序导入。
依赖关系
~92–135MB
~2.5M SLoC