干货 | 减轻 LMD GHOST 的 balancing attack 风险的提案_LOT:SAMA

来源|?notes.ethereum.org

作者|VitalikButerin

译者注:Balanceattack指的是攻击者快速干扰有相近算力子组的沟通。在此期间,攻击者在一个子组发布交易(称为交易子组),在另一个子组挖区块(称为区块子组),直到区块子组的树以高概率胜过交易子组的树。Balanceattack的新颖之处在于利用GHOST协议把兄弟块或叔块算入选择区块得分的特性。这个策略使得攻击者可以在与网络隔离的情况下挖一个分支,在将它的分支并入竞争区块链之前影响分支选择过程。

eth2的分叉选择区别于eth1和“基于链(chain-based)"的PoS算法(例如像Peercoin和NXT这些旧算法,但也有像Tezos、Ouroboros等的较新的算法)的一个关键是,在eth2,有非常多影响区块”得分(score)“的信息是并行到达的。

基于链的PoS算法:

波卡周报:Statemine已添加NFT和asset资产模块,目前仅可通过Sudo调用:根据PolkaWorld最新发布的波卡周报,本周重要事件包括:

1. 6月2日,Westend上的Shell平行链runtime升级到Westmint(Statemint的Westend版本);

2. 6月3日,Kusama理事会投票两次,第一次将shell的存储改为statemine的创世状态,第二次投票为shell升级了statemine逻辑,之后通过技术委员会加速并进入公投;

3. 6月4日凌晨00:30,Kusama网络在经过两次理事会+技术委员会+社区公投之后,平行链Shell升级为Statemine平行链。这意味着Kusama网络正式上线了公益平行链Statemine,并且通过治理的方式为Statemine分配了免费的插槽;

4. Statemine的NFT和asset模块已经开发完善,目前还没有对外开放资产接口,只能通过Sudo调用,下一步将通过Kusama理事会和公投开启资产发行功能;

5. 6月5日,Kusama理事会投票通过了Motion 306,将Kusama的Runtime升级到v9040,以添加2个在Kusama-Statemine上的转账方式,接下来会开启公投。[2021/6/6 23:16:08]

波卡周报:Polkadot 0.9.2已发布 等待平行链Shell升级为Statemine:据波卡周报,Polkadot 0.9.2 已发布,等待平行链Shell升级为Statemine。1.Polkadot 国库今天刚刚销毁掉了147,042个DOT,目前还有1461万个DOT等待大家去申请。2.Shell 平行链正在 Kusama 网络上运行。3.Kusama 第 108 号公投(强制恢复一个账户)没有被通过。4.Encounter 是一个独特的身份系统,正在申请成为 Kusama 的公益链。5.Kusama 理事会已经通过并执行了 Motion 295,它消除了由于 CPU 峰值导致不允许在 9010 Runtime 升级期间发送 imOnline 消息而导致的 115 个验证器的 slash 惩罚。6.Kusama 理事正投票 297 motion,以资助将 Kusama 集成到 Klever 钱包中。7.Kusama 国库目前有 345,211 KSM,有 690.42 KSM 会在一天后销毁掉。[2021/5/23 22:35:12]

(像在eth2里)每个slot上的委员会:

波卡周报:Rococo升级成功,每个测试平行链增至17个验证人:根据波卡周报,Rococo升级成功,目前每个测试平行链增加至17个验证人。

19号公投正在等待执行取消了一个错误提议,已经以> 99.9%的赞成票获得通过。

更具争议性的是21号公投,希望迅速增加验证人的数量,目前以7.75%的支持率失败。

波卡官方公布Kusama拍卖细则,Kusama可扩展的多链体系结构的关键是,平行链通过无需许可的拍卖在中继链上租用一个槽来连接网络。作为Polkadot的金丝雀网络,Kusama将首先推出平行链拍卖以进行测试和优化。平行链很可能一开始是逐渐上线Kusama网络的,这样是为了确保一切可以顺利进行,但没有任何承诺。

Patract在polkaassembly上发布一个帖子,以征集有关下一个Redspot里程碑的国库计划的反馈。

Tether CTO宣布将在波卡和Kusama网络的平行链Statemint上发行USDT稳定币。

当前Era获得奖励的最小质押DOT数是262.8 DOT。

Kusama理事会正在讨论CryptoLocally 提出的将Kusama集成到CryptoLocally的国库议案。(PolkaWorld)[2021/4/11 20:08:12]

波卡周报:增加验证人数量公投未通过 网络已升级至runtime v23:9月20日,波卡Polkadot官方社区PolkaWorld发布波卡周报。主要内容有:

1.波卡2号公投,即将使验证人数量从197人增加到236人未获通过。

2.Polkadot网络已于9月17日升级到runtime v23。若用Ledger有问题,这很可能是由于升级,官方目前正在修复相关问题。

3.第一批申请波卡财政的团队包括Patract Labs、Centrifuge、Polkascan和Encointer。

4.在验证人被超额认购之前,波卡上提名人的最大数量增加到了256人,Kusama是128人。这次的更改升级将在下一个runtime看到。

5.Polkadot版本0.8.24已于9月18日发布。该版本对即将到来的runtime v24提供了本地支持。[2020/9/21]

基于链的算法更容易证明其活性(事实上,在某些情况里活性已经被证明了),因为通常一次有一个单个行动者,使得它们充当"协作瓶颈(coordinatingbottleneck)",让每个人都对同一个分数达成共识。

下面是基于链的算法中活性的”稻草人证明概述“。

假设:

在每个slot里就有一个行动者(即区块提议者)可以参与。诚实的区块提议者在slot的前半发布他们的区块网络延迟的上限是半个slot(因此是δ<1/2,以slot为单位测量时间)。被分配到在slotN+1行动的行动者仅会基于他们在slotN前收到的信息行动。我们对节点收到在时间t发出的信息的时间建模为区间?(t,t+δ)的“云”?(到这里为止,这只是陈述了同步假设的标准学术表述)。因此,存在两种情况:

达成共识

没有达成共识

请注意,只有当在slotN的参与者不诚实时才会出现没有达成共识的情况。因此,如果被分配到某个slot的参与者是诚实的,那么要么(i)在该slot的末端每个参与者都对哪条是正确链达成共识,因为他们都是基于相同的信息计算分叉选择的,要么(ii)攻击者在之前那些他们没有参与的slot上“用掉了”?一些储备的参与权。因此,只有当攻击者对每个诚实参与者有至少一个储备的参与权时,即如果攻击者被分到的slot多于诚实节点时(也就是诚实大多数的假设被打破时),干扰才能继续。

现在看看”有很多并行证明“的情况。当有很多并行证明增加一个区块的得分时,是没有单一行动者创造瓶颈的。因此,攻击者可以操纵网络(再加上有策略地对一些他们自己的验证者广播),以便在每个epoch末端构建就哪些信息算入分叉选择没有达成共识的状态,从而使多条链中的某条链胜出。

请看论文Ebb-and-FlowProtocols:AResolutionoftheAvailability-FinalityDilemma(动态协议:可用性与最终确定性两难困境的解决方法),特别是第4和第5页,那里有对这种攻击的说明。请注意,这种攻击的确建基于一些在实践中非常难以实现的网络假设(攻击者对个人质押者的网络延迟有非常精细的控制),但尽管如此,一个能抵抗这种攻击的协议还是比一个不能的协议好。

提议的解决方案

提议的解决方案是引入明确的”同步瓶颈“小工具到分叉选择上。特别是,我们可以增加以下规则:

1.假设所有被分配到slotN的证明者的集体总权重为W

2.slotN+1里的参与者仅会认为在slotN末前到达(从参与者的角度)的证明是有效的。

3.在slotN+1的提议者应该在slotN+1的开端就马上做提议。他们的提议其实是在选择一条特定的链。在slotN+1的证明者看来,如果他们在slot进行了1/3之前就看到提议到达了,他们会将该提案视为等同于权重为W/4的证明(这个得分调整只对slotN+1有效,在slotN+1后这个得分调整会复原)。

4.把同步假设降低到δ<1/3

分析

(请注意:为了分析的简易,我们假设时钟是完全同步的,以及任何实际的时钟差异都是网络延迟的一部分。)

在slot的末端,所有验证者都已经收到一些证明集了。如果出现了攻击(例如,有k≥1的恶意证明者在slotN做证明),验证者将很可能在每个区块的得分上有分歧。但是,他们分歧的范围将不会超过k。假设(在不丧失一般性的情况下)有两个竞争区块,A和B,如果score(A)?score(B)≥0,则A"胜出",反之则B胜出。score(A)?score(B)的分歧范围的上限是2k(即每个验证者给出?score(A)?score(B)值都将在的范围内,z是个固定值)。

设Wp为提议者的权重(即Wp=上文论述的W/4)。如果提议者是诚实的,他们肯定会遵循以下两种行为:

1.如果他们看到score(A)?score(B)≥0,他们将提议A区块,否则提议B。

2.他们将马上提议他们的区块,以保证所有的证明者都在期限前看到。

设为score(A)?score(B)分歧的区间。我们区分三种情况:

z<?2k?2k≤z<0z≥0在情况(1),提议者将给B投票,这样证明者将看到在内调整过的得分;这里整个区间都是负数,因此对B有充分的共识。

在情况(3),提议者将投票给A,这样证明者将看到在内调整过的得分;这里整个区间都是正数;因此对A有充分的共识。

在情况(2),很大程度由提议者决定。取决于提议者的意见落在区间的哪个位置,提议者不是选择A就是B。因此,区间要么是(i),要么是(ii)。

如果是Wp≥2k的情况,请注意从情况(2)的定义?2k≤z<0来看,当(2.i)z<0且2k?Wp≤0,即?z+2k?Wp的上限是负数,也就是整个区间都是负的。当(2.ii)?z>?2k且Wp≥2k,即z+Wp>0,即整个区间都是正的。因此,充分共识是在A还是B取决于提议者的选择。

现在,让我们回到Wp=W/4的论述中。为了避免提议者起同步瓶颈的作用,上述推理中Wp≥2k的前提必须被打破;因此,必须有超过W/4的证明者在每个slot投票。

如果在任何单个slot中提议者起到了同步瓶颈的作用,所有诚实的证明者都将往该方向投票,使score(A)?score(B)的值与0偏差增大。为了避免其中一方在这个点上胜出,攻击者必须在该slot展示足够多的投票以与所有的诚实验证者抗衡(减去1/4来抵消提议者在slot末端投票的效用);这需要远超过W/4的证明。

因此,要维持一段时间的失活需要至少在每个slot上有W/4的恶意验证者,或?≥1/4的验证者是不诚实的。

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

金智博客

[0:0ms0-8:684ms