V神的75条刷屏推文:以太坊Casper研究的历史及发展状况

今天我要发一长串推文来解释以太坊Casper研究的历史和现状,包括FFG(Friendly Finality Gadget)与CBC(Correct-by-Construction)之间的竞争,混合PoS=>完全PoS的转变,随机性的作用,机制设计问题等等。

“长程攻击”

以太坊权益证明(POS)的研究开始于2014年1月的Slasher{{1}}。虽然算法非常不理想,但它引入了一些重要的想法,特别是使用惩罚来解决无利害关系(Nothing-At-Stake)问题{{2}}。过去的例子说明,我使用的惩罚力度非常小,只取消了签名奖励。

Vlad Zamfir于2014年年中加入进来,他很快就要求验证者缴纳保证金。保证金数额远大于奖励,而且可能因不当行为而被收缴。我们在2014年底花费了大量时间试图处理“长程攻击(long range attacks)”,即攻击者从主链上的保证金中撤回他们的赌注(stake),并利用它创建一个比主链拥有更多签名的替代性“攻击链”,这样他们可以欺骗客户转换到这条“攻击链”上。

如果攻击链在最近的时间点分叉离开主链,这不是问题,因为如果验证者为两个冲突的链签署两条冲突的消息,则可以将其用作惩罚它们并拿走其保证金的证据。但如果分叉在很久以前就已经发生(因此称为长程攻击),攻击者可以撤回他们的保证金,避免任何一个链的惩罚。

我们最终得出结论,长程攻击是不可避免的,差不多和PoW支持者所说的原因那样。但是,我们并没有接受他们的结论。我们意识到我们可以通过引入额外的安全假设来处理长程攻击:用户每四个月至少登录一次(保证金需要四个月才能取出),这样用户会拒绝回滚到这之前。

这对PoW支持者来说是一种让人讨厌的东西,因为它感觉像是一种信任假设:当你第一次同步时,你需要从一些可信来源获得区块链。但对于我们这些主观主义者来说,这似乎并不是什么大不了的事。你需要一些可靠的源告诉你区块链的共识规则在各种情况下是什么(并且不要忘记软件更新),因此这个PoS假设所需的额外信任度并不大。

既然我们已经确定了保证金和惩罚的机制,那么我们必须决定这些保证金和惩罚是什么。我们知道我们想要一个“经济最终确定(Economic Finality)”的属性,验证者会以这样的方式在区块上签名:如果一个块被“最终确定”,则不会有冲突块被最终确定,除非大部分验证者对与其早前消息有冲突的消息进行签名,但对有冲突的信息签名区块链是可以检测到,从而进行惩罚的。

投注共识

在一个我称之为“投注共识(consensus by bet)”的方向上,我进行了一次很长的但最终效果不佳的思考。{{3}}

通过投注达成的共识是一个有趣的结构,验证者将对哪个区块会被最终确定进行投注,并且投注本身决定了用哪条链实现共识。理论上说,PoW也有这个属性,因为挖矿是一种投注,如果你投中对的链,你可以获得收益(奖励-采矿成本);如果你投中错的链,挖矿成本就是你的损失。而PoS中,我们可以将投注推高很多。验证者投注的量开始很低,但随着验证者对一个区块越来越有信心,每个人的投注量都会呈指数级上升,直到他们最终将全部保证金押在一个区块上。这将是“最终确定”。

拜占庭容错(BFT)与CBC

与此同时,Vlad开始大量研究机制设计,特别是着眼于让Casper更加强大以应对寡头垄断。我们也开始研究受传统拜占庭容错(BFT)理论启发的共识算法,如Tendermint。

Vlad认为传统的BFT很蹩脚(他特别讨厌硬阈值{{4}},比如PBFT和Tendermint的2/3)。他尝试从头开始有效地重新发明BFT理论,使用他称之为“Correct by Construction”的方法,即CBC。

CBC的理念与传统的BFT非常不同,在后者中“最终确定”完全是主观的。在CBC的理念中,验证者签署消息,如果他们签署的消息与他们之前的消息相冲突,他们必须提交“理由”来证明:他们投票的新事物比他们投票的旧事物拥有更多的支持,故而他们有权转向新事物。

为了检测最终确定,客户要寻找可以证明大多数验证者对区块B进行可靠投票的消息模式和规律,而可靠投票使得他们无法在没有大部分验证器“非法”转换投票的情况下转换到别的区块上。

例如,如果每个人都投票支持B,那么每个人都会对包含每个人对B的投票的区块进行投票,这证明他们支持B并且知道其他人都支持B,因此他们没有合理的理由转而为别的区块投票。

实用拜占庭容错(PBFT)与FFG

我最终放弃了投注共识,因为这种方法似乎过于冒险。所以我转而试图理解像PBFT(实用拜占庭容错算法)这样的算法是如何运行的。这花了一段时间,但几个月后我明白了。

我设法简化了PBFT{{5}}并将其转换到区块链的环境中,将其描述为四个“削减条件(slashing conditions)”,这些规则说明了哪些消息的组合是自相矛盾并因此是非法的。{{6}}

我定义了一个规则,用于确定块何时被最终确定,并证明了关键的“安全性”和“可信活跃性(plausible liveness)”属性:(i)如果块已最终确定,那么在没有> =1/3验证者违反削减条件的情况下,冲突块无法最终确定(ii)如果一个区块最终确定,2/3诚实的验证者总是可以合作以最终确定一个新的区块。因此,只要> 2/3是诚实的,该算法既不能“回头”也不会“卡住”。

我最终将最小的削减条件从四个简化为两个,并从那里得到了Friendly Finality Gadget(FFG),它被设计为可用作任何PoW或PoS或其他区块链之上的覆盖层,以增加最终确定的保证。

CBC与FFG之间的分歧

最终确定是一个非常重要的进步:一旦块被最终确定,无论网络延迟如何都是安全的(与PoW中的确定不同),并且逆转区块需要≥= 1/3的验证者作弊,但这种行为是可检测到的,验证者的保证金也会被扣除。因此,逆转最终确定的成本可能会达到数十亿美元。Casper CBC和Casper FFG方法都实现了这一目标,尽管技术上有所不同。

请注意,虽然两者以不同的方式运行,但Casper CBC和Casper FFG都是需要在某些现有的分叉选择规则之上应用的“覆盖层”。简单来说,在Casper CBC中,最终确定覆盖适应分叉选择规则,而在Casper FFG中,分叉选择规则适应最终覆盖。

Vlad最初对分叉选择规则的偏好是“最新消息驱动的GHOST”,让GHOST适应PoS{{7}}。我最初的偏好是开始使用混合PoS,使用PoW作为基本分叉选择规则。在Casper FFG的初始版本中,PoW将逐个区块地“运行”链,随后PoS将最终确定块。 Casper CBC从一开始就完全的PoS。

与此同时,Vlad和我都提出了我们对共识*激励*理论各自的看法。

在这里,一个非常重要的区别存在于*唯一可归因错误*和*非唯一可归因错误*之间,前者你可以说出谁负责,因此可以惩罚他们,而后者多方中的一方可能导致错误的发生。非唯一可归因错误的典型案例是离线与审查,也称为“说话人——听众错误等同(speaker-listener fault equivalence)”。惩罚唯一可归因错误(例如Casper FFG削减条件)很容易。惩罚非唯一不可归因错误很难。

如果由于少数群体下线或者大多数人对少数群体进行审查而无法判断区块是否已停止最终确定怎么办?在这个问题上基本上有三种思想流派{{8}}:(i)对双方进行一定程度的惩罚(ii)对双方进行严厉惩罚(Vlad的偏好)(iii)将链分叉为两条,对每条链上的一方进行惩罚,并让市场决定哪条链更有价值(我的偏好)。

2017年11月,Casper FFG削减条件,加上我通过“quadratic leak”机制解决“1/3离线”问题的想法,成为一篇论文{{9}}。

当然,我很清楚吸引社交层来解决51%的攻击并不是一件好事,所以我开始寻找方法来至少允许在线客户*自动*实时检测哪个链是“合法的”,哪个是“攻击链”。

我之前有一些想法(每个客户都有一个“可疑分”){{10}}。这个想法有些内容,但仍然不是最理想的;除非网络延迟正好为零,否则只能保证客户的可疑分最多会有差异,而不能保证客户完全同意。

与此同时,我对Vlad模型的主要批评与“受挫攻击(discouragement attacks)”有关,攻击者可以威胁要进行51%的攻击,导致每个人都亏损,从而逼迫其他人退出,从而在接近零成本的情况在主宰这个链。而Vlad(和Georgios Piliouras一起)也开始研究经济模型,以估计在他的模型下这种攻击的实际成本。

值得注意的是,所有这些问题并不是PoS所独有的。事实上,在PoW中,人们倾向于放弃对这些问题的思考并假设51%的攻击是不可能的,但是一旦要发生,51%的攻击是必须不惜一切代价防止的世界末日。

但是,正如以太坊的传统一样,Vlad和我都没有意识到“雄心勃勃”这个词可能只是一种恭维,继续致力于我们各自的方法,以降低51%攻击的激励,减少和恢复其带来的破坏。

猜你喜欢

转载自blog.csdn.net/mgcexnz/article/details/81778513