这篇文章是由 Polkadot 联合创始人 Robert 发布的关于 Polkadot 分片和经济安全的技术文章,原文篇幅较长,PolkaWorld 将分四篇翻译和发布!本篇是该文章的第二部分 —— 介绍平行链如何与中继链同步增长。请查阅!
第一部分:Polkadot v1.0:分片和经济安全(1)
提交区块和增长平行链
将潜在的平行链块包含到平行链中需要 2 个步骤。第一个是中继链块引用平行链块以及关于其有效性的证明。下一步是检查平行链所需的相应数据。
由于中继链可以有短期分叉,每个平行链也可以有短期分叉。如果在给定高度有两个相互竞争的中继链块 A 和 B,并且 A 包含平行链块 P,B 包含平行链块 P',那么这也构成了平行链中的一个分叉。
出于本文的目的,我们将考虑 Polkadot 中继链状态机的简化版本。提醒大家一下,中继链分支中的每个块都代表从前一个状态到下一个状态的转换。
每个块表示从区块链的先前状态到某个新状态的原子变化单元。账户余额、可用性内核、治理建议和智能合约都是区块链状态的一部分。块通过固有的逻辑更新状态。
在构建区块链时,典型的设计模式是节点收集信息并在链下工作,然后将工作记录放在链上。例如,你可以通过相同的视角查看交易包含。节点参与链下八卦协议以收集新交易,然后区块作者将其选择的交易捆绑到一个区块中。平行链的工作方式相同:大部分工作都是在链下进行的,但工作记录保存在中继链上,以提供共识的规范指示。
节点为发展平行链所做的链下工作涉及整理、支持和可用性。
节点监视中继链的最新块以确定它们应该做什么工作。
校对由平行链头和 PoV 或有效性证明组成,这是检查从前一个平行链头到当前头的转换所需的所有数据。只有头部才能在链上运行,但必须提供 PoV。我们使用纠删码来确保 PoV 可用:数据被分成称为块的块,每个验证人一个块,任何足够大的块子集都可以恢复完整数据。这可以防止节点脱机或谎报拥有自己的数据。
在此示例中,数据被拆分为 9 块,任何 4 块或更大的子集都可以恢复完整数据。当验证人观察到可用性内核是空的,并且在该内核上调度的平行链是节点被分配到的平行链时,它将尝试从收集人那里收集整理并参与支持过程。新的潜在平行链区块以及验证人的证明通过八卦系统传播。这意味着每个连接良好的节点都知道每个下一个潜在的平行链块。下一个中继链区块作者监控网络状态并选择一组新的平行链区块以支持他们创建的中继链区块。
这是一个粗略地描述验证人为支持过程执行的逻辑的流程图。只要平行链的可用性内核为空,它们就会执行此逻辑。
该图显示了验证人如何从收集人那里获得新的平行链区块,并与其他验证人合作从指定的验证人那里获得足够的支持。未分配到平行链的验证人仍然会监听证明,因为无论哪个验证人最终成为中继链块的作者,都需要为多个平行链捆绑已证明的平行链块并将它们放入中继链块中。
一旦平行链区块在链上得到支持(即,它的区块头与选定验证人的证明一起出现在中继链区块中,并且通过了各种健全性检查),它就开始占据可用性内核。
当验证人观察到可用性内核被占用时,如果它不是最初证明该块的验证人组的一部分,它会尝试获取其擦除编码的 PoV 块。否则,验证人负责将块分配给相应的验证人。
可用性分布:非支持验证人向支持验证人请求它们的块。一些非支持验证人可能无法直接连接,但只要足够,就可以了。
验证人从需要分发它们的支持验证人请求他们的数据块
每个验证人都会签署关于它拥有哪些区块的平行链区块的声明,并八卦这些声明。中继链区块作者在中继链中包含此类语句。一旦 2/3+ 的验证人表明他们拥有占据内核的平行链块的块,则认为平行链块是可用的,并被正式包含为平行链的一部分,并且内核再次免费。
如果在一定数量的块内没有达到可用性,那么内核被释放,被认为是超时并且占据内核的平行链块被放弃。
总之,支持 Backing 和可用性协议 availability protocols 确保当平行链块被包含的时候,已经有一小部分验证人见证了该区块,并且至少2/3的验证人见证了平行链区块所需的 PoV 的可用性。从另一个角度来说,支持和可用性是利益相关,并实施问责制。下一节将讨论 Polkadot 如何确保在没有进行更彻底检查的情况下,没有任何平行链块被最终确定下来。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。