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

加入 PolkaWorld 社区,共建 Web 3.0!

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

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

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

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

Polygon首席信息安全官:UST昨日的抛售很可疑:5月8日消息,Polygon首席信息安全官Mudit Gupta表示,UST昨日抛售很可疑:

1. Terraform Labs昨天从Curve中移除了1.5亿美元的UST流动性;

2. 1分钟后,一个新近转入资金的地址将8400万UST桥接到以太坊,4分钟后,它抛售UST,引发抛售;

3. 不久之后,Terraform Labs从Curve中移除了另外1亿美元的UST流动性;

4. 随着UST开始脱锚,一位未知人士开始抛售ETH并购买UST(1亿美元以上);

5. 由于UST的交易价格低于锚定汇率,他们一直在获利,同时避免了抛售ETH的不利影响;

Mudit Gupta称已经形成了自己的结论,但对分享它感到不自信/舒服。[2022/5/9 2:59:14]

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

数据:OpenSea总用户数超过120万,Polygon网络为59万:11月7日消息,数据显示,当前,OpenSea的以太坊网络用户数约为63万,Polygon网络用户数为59万,这意味着,OpenSea总用户数已经突破120万。但该数据仅仅是独立的钱包地址数,这并不意味着OpenSea的使用人数达到了120万人。此外,Polygon网络仅仅落后以太坊网络4万地址数。这意味着Polygon网络的增长非常迅速。[2021/11/7 6:37:05]

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

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

O3 Swap报告跨链交易存在问题,BSC和Polygon上共3.35亿美元资产被转移至两个地址:8月10日消息,在跨链聚合协议O3 Swap(O3)电报群中,工作人员表示,有用户报告跨链交易问题,包括跨链池O3 Hub存取款问题,并建议用户在问题解决之后再进行交易。

数据显示,O3 Swap(O3)跨链池出现资产大额转移,币安智能链和Polygon上共3.35亿美元资产被转移至两个地址。大约两小时内,币安智能链上6613枚BNB、87603671枚USDC、26629枚ETH、1023枚BTCB、32107854枚BUSD、888888888枚BabyLoserCoin被转至0x0D6e开头的地址,除BabyLoserCoin外总价值超2.5亿美元。此外,Polygon上85089719枚USDC被转移至0x5dc36开头的地址。[2021/8/10 1:46:41]

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

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

Polygon联合创始人:NFT和游戏是人们被区块链吸引的方式:Polygon联合创始人Sandeep Nailwal将NFT和游戏视为人们被区块链吸引的方式。Nailwal表示,即使在美国,NFT游戏也比好莱坞、NBA和其他多个行业的总和还要大。各种模式将颠覆游戏行业的商业模式。(Coindesk)[2021/7/22 1:08:22]

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

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

Akropolis重入攻击事件:攻击者使用自己构造token导致合约使用相同差值铸币两次:11月14日,慢雾发布DeFi协议Akropolis重入攻击事件简析。内容显示:

1. 攻击者使用自己创建的token进行deposit,此时Akropolis合约会先记录一次合约中所有代币的总量;

2. Akropolis合约调用用户自己创建的token的transferFrom函数的时候,攻击者在transferFrom函数中重入Akropolis合约的deposit函数,并转入DAI到Akropolis合约中;

3. 此时在重入的交易中,由于Akropolis合约会先获取合约中所有代币的总量,这个值和第一次调用deposit函数获取的合约代币总量的值一致;

4. Akropolis合约计算充值前后合约中代币总量的差值,攻击者在充值DAI后,会得到一定量的Delphi token,获得token的数量就是充值DAI的数量;

5. 铸币完成后,流程回到第一次deposit往下继续执行,这时合约会再次获取合约中所有代币的总量,这时由于在重入交易时,攻击者已经转入一定量的DAI,所以得到的代币总余额就是攻击者在重入交易完成后的代币总余额;

6. 此时合约再次计算差值,由于第一次deposit的时候合约中所有代币的总量已经保存,此时计算出来的差值和重入交易中计算的差值一致,Akropolis合约再次铸币给攻击者。总结:攻击者使用自己构造的token,对Akropolis合约的deposit函数进行重入,导致Akropolis合约使用相同的差值铸币了两次,但是只触发了一次转账,当攻击者提现的时候,就可以提两倍的收益,从而获利。[2020/11/14 20:48:37]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

支持

审批检查

争议 Disputes

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

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

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

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

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

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

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

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

翻译:PolkaWorld 社区

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

地球链

[0:15ms0-0:963ms