作者:AdityaAsgaonkar
翻译&校对:IANLIU&阿剑
来源:以太坊爱好者
感谢CarlBeekhuizen的审阅。
区块链需要向用户提供两种保障——1)区块的确定性和2).区块链的活性——区块链的底层共识机制就负责提供这两种保障。以太坊2.0中,共识过程只在信标链上发生,并使用CasperFriendlyFinalityGadget(FFG)机制来帮助达成共识。本篇文章旨在描述基本的FFG机制,并证明它能提供上述两种保障。
CasperFFG是一种“确定性工具”,这意味着CasperFFG规范了区块的确定性规则,并能在事件发生之后检查区块的确定性。FFG机制与链的增长脱钩,可以作为独立组件附加在任意可用的区块链协议上来提供区块确定性。因为CasperFFG机制没有能够保证区块链活性的策略,因此从这个角度来看,它并不算是完全成熟的共识协议。让我们先从CasperFFG的结构开始,然后深入CasperFFG机制的规则,最终了解它提供的安全性&活性保证。
投票
验证者通过提交见证消息”)来对链上的区块投票。投票的格式为,包含两部分信息:来源区块目标区块——目标区块必须是S的派生区块具体来说,投票所包含的信息包括验证者的数字签名、用于确认区块的区块哈希和块高。
合理化与确定性达成
合理化与确定性达成是CasperFFG共识过程的两个阶段,可以和传统拜占庭容错共识的“prepare”和“commit”阶段做横向对比。
-因具备2/3以上的验证者投票,区块A&区块B得到合理化-
合理化:只要某区块B满足下列条件,则该块就被合理化:
区块B是创世区块,或
超过2/3以上的验证者将选票投给(A,B),其中B是A的后代区块,且A在此前已被合理化。
确定性:只要区块B满足以下条件,即获得确定性:
区块B是创世区块,或
B已满足合理性,且有超过2/3的验证者选票投给(B,C),其中C是B的直系子块。
注意:关于确定性的定义,在以太坊2.0中CasperFFG有更一般化的定义,详见此文。使用上文这种表述是为了保证通俗易懂。
CasperFFG规则
CasperFFG只有两条简单的限制规则,应用这两个规则就能防止验证者同时给(S1,T1)和(S2,T2)投票:
区块高度(T1)=区块高度(T2),或
区块高度(S1)<区块高度(S2)<区块高度(T2)<区块高度(T1)
-CasperFFG规则违反情况一:区块高度(T1)=区块高度(T2)-
-CasperFFG规则违反情况二:区块高度(S1)<区块高度(S2)<区块高度(T2)<区块高度(T1)-
安全性&活性
CasperFFG的设计目的,是提供共识安全性和针对区块敲定过程的活性。讲得具体点,CasperFFG提供以下保证:
可追责的安全性:如果两个相互冲突的区块都达成了确定性,则至少有1/3的验证者违反CasperFFG规则,而CasperFFG可以识别出这些验证者。
近似活性:无论协议运行处于什么状态,验证者都能继续履行职责、能在不违反CasperFFG规则的前提下敲定新区块。
尽管和传统的BFT文献相比,这里提到的安全性和活性定义不是那么规范,但这种诠释是非常适合用于分析区块链的确定性工具的!
事实上,熟悉BFT文献的人可能会觉得“近似活性”的概念简直异想天开;不过因为CasperFFG只是“确定性工具”,整个机制只要确保诚实的验证者能在不违反FFG规则的情况下推动推进协议,而不会被卡在任何一个环节,即可。
至于可追责安全性的定义,我们的重点是可追责性,然后这部分信息能够被权益证明机制沿用、用于在区块链上处罚恶意验证者。最终目的还是为权益证明机制提供信息,使后者的激励机制能生效,促使共识过程形成协议一开始设想的均衡状态。
安全性证明
假设两个相互冲突的区块A和B都被敲定了,那么可能有两种情况:
区块高度(A)=区块高度(B)
因为A和B在得到确定性之前先要获得合理性,则它们
各自都要收到至少2/3的验证者投票,这意味着一旦它俩都达到要求,则至少有1/3的验证者违反了CasperFFG规则。
区块高度(A)<区块高度(B)
为了让A达成确定性,需要超过2/3以上的验证者将选票投给(A,C),其中C是A的子块。
为了让B达成合理性,则在B之前必须存在连续升序的区块,且每个区块都已经被它的后一区块合理化。假设区块B_m是这串连续区块中的首块,区块高度(A)<区块高度(B_m)。
注意,这串连续的区块不存在与区块A或C相同的块高,不然就变成了上一种情形。
现在假设我们将票投给(B_n,B_m)(其中n=m-1),使得B_m获得合理性。则因为区块高度(B_m)、区块高度(B_m)皆
不等于区块高度(A)/区块高度(C),因此情况一定是区块高度(B_n)<区块高度(A)<区块高度(C)<区块高度(B_m)。
这样一来我们就能说——至少有2/3的验证者违反了CasperFFG规则二。
-安全性证明,情况:区块高度(A)<区块高度(B)-
而且只要确认票证集合、找出冲突选票、检查验证者签名,就能轻易揪出违反CasperFFG规则的验证者。
活性证明
假设P_0是最新的合理区块,Q是曾得到过验证者投票的最新区块。
接下来,任何属于P_0子块的区块P_1都能在不违反FFG规则的情况下收到2/3验证者的的投票(P_0,P_1),进而取得合理性。
P_1也能在不违反FFG规则的情况下收到2/3验证者的的投票(P_1,P_2),进而获得确定性,其中P_2是P_1的子块。
因此,至少有一组验证者能够敲定新块。
进阶阅读材料
CasperFFG初版论文——?CaspertheFriendlyFinalityGadget
对Eth2.0应用CasperFFG方法的分析——?CombiningGHOSTandCasper
原文链接:?https://www.adiasg.me/2020/03/31/casper-ffg-explainer.html
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。