查看原文
其他

Polkadot v1.0:分片和经济安全(1)

Rob Habermeier PolkaWorld 2022-03-30

加入 PolkaWorld 社区,共建 Web 3.0!

这篇文章是由 Polkadot 联合创始人 Robert 发布的关于 Polkadot 分片和经济安全的技术文章,原文篇幅较长,PolkaWorld 将分四篇翻译和发布!本篇是该文章的第一部分!请查阅!


这篇文章是关于支撑 Polkadot 的技术。Polkadot 是具有异构分片的分片区块链。在这种情况下,分片意味着将工作拆分到多个子区块链上,称为平行链。异构意味着每个区块链都有自己的状态转换功能,该功能专为特定用例而构建。不同类型的交易会有不同的归属地,这使得特定场景的链可以最有效地为其用户服务。Polkadot 为所有平行链提供安全和消息传递功能。


这篇文章主要是为对区块链共识有一定了解的技术读者写的。我希望它对除了开发者以外的人有用,并为大家提供对基础层区块链面临的问题和挑战以及 Polkadot 如何解决这些问题的见解。我不会详细介绍我们的解决方案的每一个细微差别,但我会深入描述我们考虑的事物类型以及如何保证我们的目标实现。



Polkadot 之前的链

 

对区块链的简化理解只涉及一条单链,从这条链的创世区块延伸到其尽头。对于许多人来说,这是唯一重要的链概念,它代表了所有已经发生并已被网络同意的状态转换。任何区块链共识系统的最终目标都是为观察者提供这一事实来源。然而,这条单链,我们可以称为最终链或规范链,只是可能存在的许多可能的竞争链中最后剩下的幸存者。区块链共识算法的作用是从许多可能的链开始,最终只确定其中一个。


区块生产者可以产生下一个区块,但一次可能有多个获胜者。在工作量证明中,矿工通过找到一种方法来生成一个新块,当该块 hash 到一个低于某个困难目标的唯一随机数,从而获得在给定块之上的生产块的权利。在充分竞争的环境中,矿工可能需要大量尝试才能找到满足此条件的区块。作为参考,在撰写本文时,比特币网络的累积哈希率为每秒 162 Exahashes,这意味着比特币矿工总每秒要尝试 162 万亿次来获得贡献下一个区块的权利,难度目标设定为平均每 10 分钟只有一个哈希值低于目标值。请注意,多个矿工可以大致同时找到一个解决方案,该解决方案在区块链中引入了一个小分叉。未来的矿工将不得不选择在哪些区块上进行开采,这可能会导致分叉变长。规则是遵循最长的链,对于从过去的区块开始的攻击者来说,追赶并压倒更长的链变得越来越困难。因此,在最长链中足够深的块可以被认为是概率上最终的块。


Ouroboros 系列权益证明协议使用称为可验证随机函数 (VRF) 的加密技术,通过将时间划分为离散的插槽并将每个验证人从已注册和质押的验证人集合(验证人集合)中分配出来来模拟工作证明每个 slot 产生一个可验证的随机值的机会,如果低于阈值,则作为允许验证人创建新块的凭证。与工作量证明一样,多个验证人可能会产生一个低于阈值的 VRF 值并同时创建块,从而导致分叉。验证人不会激励故意引入分叉,他们会受到 slash 惩罚来扣除他们的链上的质押。这些协议还提供了最长链分叉选择规则下的概率确定性。


与工作量证明中的矿工不同,Ouroboros 式网络中的验证人只需要运行一次计算就有机会创建一个块,而不像矿工必须做的大量哈希值。这允许验证人将大部分时间花在构建带有交易的区块上,并随后允许区块链包含更有价值的计算。


Polkadot 的中继链使用一种称为 BABE 的协议,它是 Ouroboros Praos 的演变。BABE 对 Praos 的具体改进是 BABE 避免了依赖中心化 NTP 服务器让验证人知道当前时间。



虽然概率确定性很好,但等待一个块在最长链中达到一定深度是一种效率低下的机制,因为它旨在适应预期的最坏情况,即网络处于一定程度的网络压力和攻击之下。可能大多数网络已经就哪些区块是规范链的一部分达成了一致。事实上,在几乎所有情况下,网络都能够在一个区块达到最长链的最小深度之前就已经达成共识。为此,我们引入了确定性小工具(finality gadget)和绝对确定性(absolute finality)的概念。最终性小工具是在概率性最终区块链之上运行的二级共识协议,它证明了网络将认为哪些区块是最终区块的更快协议。这些共识协议引入了进一步的经济安全属性:在不 slash 惩罚至少 1/3+ 验证人集合总权益的情况下,确定性小工具永远不会最终确定 2 个竞争块。


Polkadot 的中继链使用称为 GRANDPA 的确定性小工具。它可以在任何特定长度的子链上实现近乎瞬时的最终确定性,并且通过让验证人反复对他们认为位于最长链头部的块进行反复投票来粗略地发挥作用。GRANDPA 目前在 Polkadot 和 Kusama 网络上运行,在撰写本文时拥有 900 个验证人的 Kusama 上,它可以在 3 秒内实现新区块的最终确定性。



BABE 和 GRANDPA 的结合允许 Polkadot 仅使用来自单个验证人的输入来乐观地增长链,这很快,并通过获得绝大多数验证人的签名在后台完成。这种属性的组合意味着在良好的网络条件下,Polkadot 实现了高吞吐量和低延迟,而在糟糕的网络条件下,中继链实现了高吞吐量和(更)高延迟,因为 GRANDPA 将转向跟踪 BABE 的最终性。



分片:通过子集选择进行扩展


让我们回到分片。分片的目标是通过以交易的形式在许多称为分片的链上拆分工作来提高吞吐量。分片由顶级区块链引用和保护。在 Polkadot 中,顶级区块链称为中继链,分片是平行链。中继链上出现的大多数数据都是包含对新平行链区块的引用的交易,这使得处理中继链本身的任何分叉变得便宜。请注意,我在这里区分了中继链的任意分叉和最终的中继链。我们在这里的大部分工作是确保中继链的最终部分(用户将其视为规范链)仅包含对有效平行链块的引用。


此图或类似图在互联网上广泛分布。它们展示了验证人如何被分成组并分配给平行链,并从收集人那里获得平行链区块提案。在这篇文章中,我对许多更细微的概念进行了视觉解释。



如果每个验证人只需要检查一些提交的平行链块,而不是全部,分片就只是对可扩展性的改进。如果有 10 条平行链,并且每个验证人必须检查所有 10 条链中的所有区块,我们不妨将所有交易放在一个区块链上,然后收工。诀窍是找到一种方法,让每个验证人在保持经济安全的同时尽可能少地做验证工作:提倡不良平行链区块的验证人在经济上不会受到激励。更具体地说,在他们所有质押被惩罚之前,将一个坏的平行链区块包含在最终的中继链中,一组对抗性的验证人应该不可能串通一气。验证人,实际上是验证人的一小部分,可以串通以获得中继链的未最终分叉所引用的不良平行链块,但我们保证这些分叉在最终确定之前被忽略,并且违规者被惩罚。


当引用它们的中继链块最终确定时,平行链块被最终确定。

当引用它们的中继链块最终确定时,平行链块被最终确定


让我们对我们要防御的对手做出一些具体的假设:


  • 攻击者最多可以控制所有验证人的 1/3,并且可以控制所有这些验证人的行为完全符合预期。

  • 攻击者可以查看诚实验证人人与其控制的验证人之间的所有网络消息

  • 攻击者可以随时拒绝最多 X% 的验证人,阻止他们发送或接收消息。

  • 在攻击者开始拒绝任何验证人之前需要一个固定的延迟


在这篇文章中,我不会为该协议设置正式的安全证明,但这些约束应该可以让我们深入了解我们打算防御的攻击类型。


事实上,我们平行链共识的基本单元实际上并不是平行链,而是我们称之为可用性内核或简称内核的东西。这些类似于 CPU 内核:它们并行运行,并在离散的 slot 中安排工作。每个平行链都有自己的专用内核,这意味着它总是被调度到一个特定的内核上。但是,我们也可以将多个链多路复用到一个内核上。唯一的区别是调度算法。


内核服务是中继链吞吐量的有效描述。内核直接对应于验证人需要做的工作量。每个内核最多可以在每个中继链块处理一个平行链块,在峰值。


在任何分片区块链系统中,只有一些验证人检查每个平行链块,数据可用性是确保检查平行链块所需的数据可以恢复以进行欺诈检测的关键组成部分。可用性内核由中继链管理,并跟踪哪些平行链块正在等待数据可用性。可用性内核的主要目的是作为调度原语,并在数据可用性比平时慢时提供背压。


可用性内核的逻辑如下所示。当内核准备好接受新的平行链块时,内核是空的,此时它们被占用。然后,数据要么变得可用,要么可用性过程超时。那时,内核再次变空。



将平行链共识划分为 5 个不同的协议是有帮助的,这些协议在中继链共识中交织在一起。


1. 收集

2. 支持

3. 可用性

4. 审批检查

5. 争议 Disputes


Collation 收集是创建平行链块的过程。收集人构建一个平行链块并将其发送给验证人。


Backing 支持是由一小组中继链验证人最初检查平行链块并在中继链上注册的过程。支持的主要副产品是,如果后来的协议失败,它要求验证人将自己置于危险之中。


Availability 可用性是支持验证人分发检查平行链块所需的数据片段并确保以后可以检查的过程。


Approval Checking 批准检查是随机验证人恢复数据并执行平行链区块的过程。他们根据是否认为平行链区块有效来批准或发起争议。


Disputes 争议是解决验证人对平行链区块的冲突意见、忽略不良平行链区块并惩罚违规者的过程。争议仅作为故障保险存在,预计不会经常触发。


请注意,验证人可能同时参与这些协议中的每一个,并且通常是它们的多个实例化。例如,验证人可能在参与支持较新区块和对更旧区块争议的同时,参与对管道更下游的平行链区块的批准投票。


这种内部并行性也反映了实现的架构:这些协议中的每一个都被实现为一个独立的子系统,并且所有子系统都并行运行。每个节点总是在做一些事情。


原文链接:https://polkadot.network/blog/polkadot-v1-0-sharding-and-economic-security/

翻译:PolkaWorld 社区




活动预告


1 月 25 日本周二晚上 7点,Litentry 将做客 PolkaWorld 直播间为大家分享先行网 Litmus 的 Crowdloan 策略!点击下方预约直播!



  • PolkaWorld Telegram 群:

    t.me/polkaworld

  • PolkaWorld Youtube 频道:

    https://www.youtube.com/c/PolkaWorld

  • PolkaWorld Twitter:

    @polkaworld_org

  • PolkaWorld 网站:

    https://polkaworld.pro/

更多内容


波卡周报|Parity 发起国库议案资助 Polkadot 网络研究!

科普 | 问答式了解 vsBond 的使用方法与价格属性

平行链上线后,波卡网络目前每天处理多少笔交易?


关注 PolkaWorld

发现 Web 3.0 时代新机遇


点个 “在看” 再走吧!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存