为什么Polkadot的GRANDPA协议不够安全?

栏目: IT技术 · 发布时间: 4年前

本文将讨论Polkadot为解决拜占庭容错问题而提出的共识协议——GRANDPA协议。在本文中,我们默认读者已经熟悉拜占庭容错问题,所以我们将直接介绍Polkadot的GRANDPA协议是如何解决拜占庭容错问题的。首先,我们将简洁明了地介绍GRANDPA协议的主要内容。然后,我们将讨论可能导致GRANDPA协议失效的攻击方式。最后,我们会就如何解决上述安全漏洞,提出可能的解决方法。

为什么Polkadot的GRANDPA协议不够安全?

概率确定性与可证明确定性

经由Casper FFG(Friendly Finality Gadget)协议启发,GRANDPA是一种新的、拜占庭容错的(BFT)、确定性 工具 的(Finality Gadget)共识协议。确定性工具(Finality Gadget)是一套经由一定提议机制而最终确定一条区块链上内容的机制。由“确定性工具”最终确认的链上内容,具有最终性,即不可逆。

正如Polkadot Wiki上所说:“那种运行纯粹中本聪式POW共识协议的区块链,只能达到概率确定性并完成最终共识。”与之相对,像GRANDPA或Casper FFG之类拥有确定性工具机制的协议,则可以为我们提供更强大的保证,称为可证明确定性。GRANDPA的确定性工具机制带来的可证明确定性,保证了经过一定共识机制运作之后,那些被最终确认的区块里的内容将永不可逆。

Polkadot的GRANDPA

Polkadot,是通过一个提名权益证明(NPoS)系统,将BABE用作其区块生成机制的(BABE,即著名的Blind Assignment for Blockchain Extension,即区块链扩展盲分配)。这个系统使用提名权益证明机制(NPoS),顾名思义,这个系统会通过一个提名过程选出验证者。在这个区块链系统中,为了从一个普通的参与者变成一个提名者,参与者需要先将其代币作为抵押品。这之后,这个升级为提名者的参与者,就可以提名他/她认可的节点作为验证者了。当被他/她提名的验证者偏离协议,他/她抵押的权益就将被削减,作为惩罚;相反,当被他/她提名的验证者遵守协议时,他/她也会获得报酬,作为奖励。另外值得一提的是,在这个区块链系统中,当选了的验证者在共识协议中的投票权是同等的。

有了GRANDPA(GHOST-based Recursive Ancestor Deriving Prefix Agreement)作为它的确定性工具机制,Polkadot的中继链包含两个不同的协议,分别对应两种不同类型的网络。我们要讨论的是第一个协议。这个协议对应的网络,是部分同步的,并且最多可以有1/3的参与者是恶意的。我们生活中遇到的网络,通常都是部分同步的。这是一个分布式系统的专业术语,简而言之,是指:网络在大多数情况下是同步的,当网络不同步时,经过一定时间,也会回到同步的状态(同步也是分布式系统的专业术语,这个可以暂时理解成日常用语里的“同步”)。

关于GRANDPA,值得注意的是:1)只有被确定性工具机制最终确认的区块能影响区块的生成  2)可以同时为不同高度的多个区块投票,这与Casper FFG不同。

本文只讨论Polkadot的第一个协议。它专为部分同步网络设计,不能容忍网络分区或DoS攻击。另外值得注意的一点是,该协议假定在未知时间GST之后,网络变为同步。

每个参与者都存储一个由BABE产生的区块树,这个区块树的根区块是创世块。参与者可以对树上的一个区块投票。如果一个区块B获得X票,X票包括了B自己和B的子孙节点的所有票。然后,⅔-GHOST函数g(S)返回获得票仓S里绝对多数的区块中区块高度最大的那个区块,记作B。

然后,区块作者着手确定这个区块B在票仓S中获得绝对多数的可能性。GRANDPA协议的论文《Byzantine Finality Gadgets》这样定义:“我们说,如果至少有2t + 1张票是超额投票(即一个投票者投了多于一张票)或者投给了除B子孙区块的其他区块,那么区块B在票仓S中占据大多数是不可能的;否则,区块B在票仓S中获得绝对多数是可能的。”此外,论文还指出,“一个区块B在一个票仓S里获得绝对多数是可能的,当且仅当存在一个容错票仓T,T是票仓S的子集,并且区块B在票仓T中占绝对多数。”

这个协议在实践中会出现以下的几个问题:

如果我们假设区块B和C不一致,而t个恶意投票者加1个诚实投票者投票给了B,2t个诚实投票人投给了C,那么根据上述定义,B得到绝对多数是可能的。然而,因为诚实的投票人不会超额投票,所以票仓S里不总是有一个子票仓T使得T里有绝对多数。这就使得GRANDPA无法实现活跃性保证。接下来,我们将详细介绍这种情况。

假设我们保持相同的情况,以B和C作为在某个回合r中产生的两个子区块-也就是说,BABE在此回合经历一个分叉,并且结果产生了两个子块B和C。

为什么Polkadot的GRANDPA协议不够安全?

在第r轮,t + 1个投票者(所有t个恶意投票者+ 1个诚实投票者)投票给B,其余2t诚实投票者投票给C。因此,对每个投票者i,我们的g()函数都会从前一个回合的estimate,E_ {r-1,i} [ E_{r,v} 表示投票者v在r轮的一个estimate,这个estimate包含了所有本可以在r轮最终确定却实际上没有被最终确定的区块的信息,详见论文《Byzantine Finality Gadgets》] 中输出一个向B、C的一个祖块。相应地,每个参与者都预先承诺(pre-commit)该祖块。(值得注意的是,即使是网络上诚实的节点,也可能由于网络延迟或异步而出现这种分裂的投票结果。一个诚实节点可以首先接收到区块B,因此它投票给B。其他诚实节点首先接收到C,因此他们投票给C。)

现在,每个投票者i估计从第r-1轮的E_ {r-1,i}来的祖块可能是哪个块。由于C_ {r,i} [ C_ {r,i}表示参与者i在r轮收到的所有预先承诺(pre-commits)] 可能导致E_ {r,i}的任何子级得到多数投票,因此回合r无法完成,整个共识过程失败。

即使可以通过修正GRANDPA中的语义定义来解决此处讨论的问题,我们也可以类似地将在Tendermint协议的讨论中提到的那些攻击用于GRANDPA。最终,我们只能得出结论,GRANDPA协议在上述网络中不安全。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTTP Essentials

HTTP Essentials

Stephen A. Thomas、Stephen Thomas / Wiley / 2001-03-08 / USD 34.99

The first complete reference guide to the essential Web protocol As applications and services converge and Web technologies not only assume HTTP but require developers to manipulate it, it is be......一起来看看 《HTTP Essentials》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具