科普 | Casper FFG:以实现权益证明为目标的共识协议

时间:2021-07-05 20:12来源:www.51gumixiang.com作者:未知点击:

导读:
扫描关注公众号

因为CasperFFG能让任何存入押金的节点成为验证节点,因此验证节点集合会动态地伴随时间变化。节点从退出互联网至取出押金需要等待一段期间,该等待期间称为提领延迟。每一个检查点C都有其对应的朝代数,其概念为:从根检查点开始至C为止的已敲定检查点数目,比如上图中,b3的朝代数为3。每一代检查点都对应两种验证节点集合:前端验证节点集合与后端验证节点集合。理论上每代检查点的前端/后端集合会高度重复,但难保节点共谋导致前端/后端集合的大幅变化,若此情形发生,则出错时可能会砍不到坏节点的押金致使安全性遭到威胁。比如上图中,验证节点A可以退出,代表对C’分叉来讲A退出了,可是对C分叉来讲,A却从来没退出过。因此A有方法继续投旧链C,但新链C’砍不到A的押金。

这4条规则可以进一步简化为2条:

某验证节点v必不可发出两个相异的投票:<ν,s1,t1,h(s1),h(t1)>及<ν,s2,t2,h(s2),h(t2)>,且使下列任一条件成立:1.h(t1)=h(t2)验证节点必不可对某高度发出两个相异投票。2.h(s1)<h(s2)<h(t2)<h(t1)验证节点必不可投出高度围绕/被围绕于另一投票高度的投票。

ETH对权益证明的研究最早可追溯至2014年的这篇文章。从此之后,ETH研究员们便一直朝「达成基于PoS的共识协议」此一目的前进。PoS共识的设计是一个跨范围且相当复杂的问题,其包含计算机科学/经济学/密码学等方面。ETH拥有区块链生态系中最跨范围的团队,对PoS的研究可以说是相当透彻。

其中PBFT所拥有的即时敲定性,可能是其遭到Vitalik喜爱的重要原因。Vitalik在熟读PBFT后也特撰文概要,并于其中提出日后演变成CasperFFG的要紧想法。

CasperFFG的前身:砍押金的4条规则

笔者将于本文分析CasperFFG的原理,读者可以一窥权益证明共识所尝试解决的问题及其设计理念。除此之外,CasperFFG是2.0的共识机制,理解其运作也能帮研究员与开发者进一步理解ETH2.0的设计。

CasperFFG是一个达成权益证明的大胆尝试,它在ETH2.0的表现值得期待。然而ETH2.0还有很多难点留待解决,比如轻节点/链上随机数生成器/跨片买卖等等。与此同时,很多ETH2.0的角逐者也提出新的共识协议与分片技术,比如RapidChain/Harmony/Chainspace等等。

综合以上,CasperFFG几乎针对PBFT的所有方面都做出改进:

经济上的制约:PBFT是许可制的,它仰赖原本就存在信赖基础的组织一同运行协议;CasperFFG则是非许可制的,它引入最少砍押金条件,借助经济损失的风险来制约节点的行为,节点之间无需任何信赖基础也能一同运行协议,达成真的的去中心化。
抽象的出块机制:PBFT仰赖诚实的主导节点产生区块并需要视域变换机制节制拜占庭节点;CasperFFG不需要理会底层的出块机制,仅需负责形成共识。出块抽象有哪些好处是:底层链的出块频率不必与覆盖链的共识频率一致,这样可以增加效率并减少互联网的负担。比如:每100个底层区块只产生1个检查点。
流水线化的投票:PBFT具备<Prepare>、<Commit>、<View-change>等数种投票讯息;CasperFFG仅有<Vote>一种,且投票的内容并非单一的区块/请求,而是
两个形成连结的检查点,这使CasperFFG可以在不牺牲太多表达力的首要条件下变得简单很多。这部分形成链式结构的检查点,会于两个不同高度分别经历两轮投票,因为每一轮投票都会
敲定源头与
证成目的,因此共识能如流水线般不断推进。一样的设计理念也出现于Hot-Stuff,有趣的是,该论文作者DahliaMalkhi还撰文比较Hot-Stuff与CasperFFG,其相似程度可见一斑。
强健的抗攻击性:PBFT不拥有对
远程攻击与
灾难性崩溃的抗性;CasperFFG则具备特别的机制来防御这两种攻击:针对远程攻击,节点需要按期同步区块及禁止回朔已敲定的区块;针对灾难性崩溃,CasperFFG则引入
「离线溢金」机制来应付。关于这两种攻击的说明,笔者将于日后另撰文论述。

每一个节点都需要对检查点送出投票,投票的内容是由两个不同高度的检查点组成的连结,连结的起点高度较低,称为源头;连结的终点高度较高,称为目的。节点会将投票广播到互联网中,并同时采集来自其他节点的投票。其中若投票给某连结L的节点押金总和超越全部押金的2/3,则称L为绝对多数连结,以s→t表示。比如上图中,b1/b2/b3之间都形成了绝对多数连结,分别以b1→b2、b2→b3表示。

CasperFFG是运行于ETH2.0之上的覆盖链,这个覆盖链同样由检查点构成,各检查点之间的跨度称为时期,1个时期切成64个时段,每一个时段对应16个片,因此每片在每时期中都有对应的时段,并只能在轮到自己时才广播其对检查点的投票,且每分片只能1个时段中投出1票——也就是说,各分片需要先对投票内容形成共识,不过各片内部形成共识的办法仍尚未定论,最近最新的提案是用聚合签名。另外,CasperFFG在ETH2.0中的分叉选择规则是最新消息驱动GHOST。

PBFT虽然具备即时敲定性,但并不具备抵抗共谋的能力,因此需要一个惩罚机制来遏止作恶的行为,只须节点做出逾越规则的行为,便需要承受经济损失——透过经济学法则来调节节点的行为正是PoS的设计理念。任何支付押金的节点,都可以加入互联网参与共识,不需要其他人的许可,因此基于PoS模型的共识都是非许可制的。

那样下一个问题是:哪些行为该被惩罚?Vitalik仔细推敲PBFT后发现,PBFT仅需 4条规则便能确保共识运作好:

最后要特别感谢ETH研究员Chih-ChengLiang提供要紧素材并与笔者一同很多讨论及给予回报,没他的帮助便不会有这篇文章的诞生。

CasperFFG是如何开始的?

CasperFFG遭到PBFT的启发,并可以被视为改良后的PBFT——它继承了PBFT的要紧设计,同时添加新的机制与简化若干规则。若读者对PBFT感到陌生,可以参考笔者近日针对PBFT的分析文:

-ETH2.0:分片-

前言

理论上,CasperFFG于每一个检查点的投票应该要与底层出块机制的投票分开;事实上,ETH2.0的底层投票内容会同时包含顶层投票内容,好似顶层投票搭了底层投票的便车,借此优化效能。这样在每一个时期结束时,每一个片都会收到所有其他片在该时期的投票,CasperFFG活跃性得以保持。

结语

这2条规则便是CasperFFG的最少砍押金条件。

CasperFFG怎么样运作?



-CasperFFG:检查点树-
CasperFFG是一个将出块机制抽象化的覆盖链,只负责形成共识。出块机制由底层链达成,而来自底层链的出块称为
检查点。检查点组成
检查点树,比如:把高度为0、50、100、150的区块哈希值取出,形成一棵新的树,如上图所示。最底部的检查点则称为
根检查点。

在这里要澄清一下「许可」这件事。大家会说他「非许可制」,是由于任何验证节点可以加入和退出。但假如在他加入的时候,链要保持一个验证节点清单,从这个角度看又有点是「许可制」。从PBFT的角度看,投票的验证节点也需要从许可的清单中挑选。

若想搞懂区块链就不可以忽略的经典:PBFT

那样验证节点该对哪些检查点打造连结?每一个节点都需要遵循分叉选择规则来选择下一个要连接的检查点,CasperFFG的规则是:选择最高的「已证成」状况的检查点。

CasperFFG与CasperCBC的瑜亮情结

笔者于近日翻译了一篇关于CasperFFG进步脉络的要紧文献:

值得注意的是:片是一个抽象层,并不特指某一群节点。为了更知道这个定义,笔者扩充一下上文的例子:假设写作业有找答案及抄答案两个步骤,那样A/B2人写2题作业,由读速快的A找第1题答案,读速慢的B找第2题答案;由手速快的B抄第1题答案,手速慢的A抄第2题答案。这样,A/B便可以根据读/写的快/慢来分别负责不同题目的不同步骤。

现在的ETH只有1条区块链,所有节点需要各自处置所有买卖;在ETH2.0中,互联网会分成1024个片,每片分别运行1条分片链,它们将各自处置一部分的买卖后再将结果交由1条信标链统整。因此,ETH2.0预计会有1条信标链与1024条分片链。

由根检查点开始,若两个检查点之间形成绝对多数连结,则该连结的目的进入「已证成」状况;而在连结打造当下已处于「已证成」状况的源头,则进入「已敲定」状况;根检查点则预设为「已证成」及「已敲定」状况。由此可知,每一个检查点在经过两次投票后,会先「证成」而后「敲定」,几乎等同于PBFT的「预备」与「提交」。比如在上图右侧的分支中,r/b1/b2皆为「已敲定」状况,只有b3为「已证成」状况。

为了让每代检查点在出错时都能确实归责,因此需要缝合机制将检查点的前端/后端集合「缝」起来,确保每一个错误都一定能归责。

ETH2.0是一个基于EVM并整理CasperFFG与海量优化提案的分布式帐本。ETH2.0除去想达成PoS,还试图将每秒买卖数扩展到10000笔的量级,使区块链成为如网际互联网普通的基础设施,并且让任何存入32个ETH的押金的节点都能成为验证节点。

简而言之,PBFT是一个具备二轮投票工具制的共识协议,且具备下列特质:

许可制的:只有被「允许」的节点能参与共识。
基于领袖的:只由主导节点负责「提案」,其他节点只负责投票,因此需要视域变换机制来节制不诚实的主导节点。
基于通讯的:用决定性的多数决来形成共识,而不是非决定性的算力解谜赛局。
安全性重于活跃性的:无论互联网是不是延迟,协议都能保证共识的安全性,这赋予协议
即时敲定的特质。

因为CasperFFG相当简单,ETH研究员一度达成了合约版本的CasperFFG:

分片即是为了增加可扩展性的要紧设计,也是ETH2.0非常重要的目的。分片就是分工合作,大家可以用一个容易的例子来讲明分片的定义:2人写2题作业,2人各写不一样的1题再合起来肯定比2人都各写完2题来得更有效率。

Vitalik在这篇文章中概要了这4条规则,并把它们称为PBFT的「最少的砍押金条件」,任何违反此4条规则的行为都要被取走押金。这4条规则如下:

1.提交:收到2/3节点的预备讯息后才能提交。2.预备:每一个预备讯息只能指向某个也具备2/3节点预备讯息的高度,且这部分预备讯息也需要都指向同一个高度。3.预备提交一致性:任何新的预备讯息只能指向最后一个已提交的或其他比其更新的高度。4.不重复预备:不可以在同一个高度送出两次预备。

-CasperFFG:验证节点集合的大幅变化引起的分叉-

同样地,在ETH2.0中,除去有1024个片,还会有1024个持续委员会与1024个交联委员会:

每一个片都会对应1个持续委员会与1个交联委员会,好似上例中每一个题目可以根据读/写的步骤来对应不一样的个体。

链上随机数决定各委员会的分派,好似上例中根据读/写的快/慢来分派题目。
持续委员会负责维护分片链与产生
分片区块、交联委员会负责维护信标链与产生
信标区块,好似上例中读速快的负责找答案、手速快的负责抄答案。各区块的出块节点也交由链上随机数决定。
换句话说,每一个验证节点都需维护1条唯一的信标链及1条所属片的分片链,也都会隶是与该分片对应之1个交联委员会与1个持续委员会。

然而,这个合约版的CasperFFG后来被弃用了!在合约版中原本假设投票可以被并行处置,但在计算投票报酬有不少中间状况,不同投票处置的先后顺序将会干扰最后得到的状况,这代表并行化将没办法达成协议。而要修正这个问题则需要要在合约与推广客户端做很多修改,失去了「逻辑用合约达成,防止修改推广客户端」的精神。因此,为了可以更好地整理CasperFFG与其他优化提案,全新的ETH2.0 磅礴亮相了。

ETH2.0中的CasperFFG

CasperFFG与ETH2.0是经过海量研究员/开发者不断激荡与迭代的要紧结晶,但一直以来都缺少提供系统性论述的中文材料,期望此文可以帮中文世界的研究员/开发者迅速理解CasperFFG与ETH2.0的精要。

2017年,VitalikButerin与VirgilGriffith一同发表了 CaspertheFriendlyFinalityGadget。CasperFFG是受PBFT启发并经过改良的共识协议,它虽然被设计得非常简单,但其对安全性的证明却不容易。

最少的砍押金条件

相关文章
推荐文章

热门标签

区块链平台靠谱吗_听听一个过来人是怎么说的_星球网

Copyright © 2002-2021 星球网 (http://yuchub.com) 网站地图 TAG标签 备案号:

声明: 本站文章均来自互联网,不代表本站观点 如有异议 请与本站联系 本站为非赢利性网站