金色观察|为Casper FFG延长验证epoch区间
以太坊 明年就要完成难度炸弹了,这意味着会彻底实施权益证明,不过目前在共识算法细节上仍然在进行讨论研究。
在11月19日, Vitalik 在研究者论坛里提到了一个建议,是关于Casper FFG的,其主要内容我们节选如下:
在Casper FFG保证安全性和活性不变的情况下,允许增加连续epoch之间验证区间来适应延迟。例如,如果epoch 100、101未能证明是正确的,则链可以尝试证明 epoch 102、104、108 的合理性,增加了验证区间,这样两个连续尝试的 epoch 仍然可以成功验证,以便在多个epoch 延迟的情况下也可以为我们提供最终结果。
这个调整是需要对Casper FFG的共识算法中的验证部分进行修改的。目前还未见讨论成果。为了弄明白为什么提及这个部分的设计,我们尝试用下文理解Vitalik这次的建议。
Casper FFG和Casper FFG CBC是以太坊对权益证明的共识算法研究的两个思路,其对拜占庭容错等算法进行了修订和再研,因此是核心算法问题,应该说这是以太坊最明确的未来以及最核心的技术讨论,其主要的思路是在解决共识算法中的确认问题。
Vlad最早开始设计机制时,特别是希望Casper可以更强健地抵制寡头形成,并且抛弃掉一些其他算法的问题,比如传统拜占庭容错理论(尤其拥有硬上限,比如实用拜占庭容错算法PBFT和Tendermint中的2/3),在彻底改造BFT理论后,则出现了Correct by Construction的方法,即CBC。
而因为CBC对于算法中的验证的设定更复杂,在CBC里定义了一系列规则(罚没条件)来确定什么时候区块会敲定确认,并证实关键的“安全性”和“合理活性(Plausible Liveness)。
不过以太坊最终把罚没条件从4条简化为2条,就得到了 Casper FFG(Friendly Finality Gadget),它被设计为可以覆盖在任何PoW或PoS或其它类型的区块上,用于增加确定性保证。
2017年12月31日Casper FFG在以太坊的Python测试网上测试,不过后来进展缓慢。
2018年6月,以太坊做了一个决定:彻底放弃“用合约实现混合Casper FFG”,追求完全 Casper独立链,改变这个设计让整合分片变得更加容易,也就是会直接在2.0上应用。
不过Casper FFG(以及CBC)都要求,在每一个“轮次epoch”有完整的验证者集来投票敲定区块,意味着每秒钟都会有数以千计的签名要通过网络发送。即使有BLS 签名聚合方案,在几秒内完成“100 个确认”安全性也是很难的。
其需要拥有一个强大的链上随机数源来公正地选出提议者,不过链上随机性也是难以实现的,所以最终使用了可验证延迟函数(Verifiable Delay Function,VDF)进行了验证计算,消除了提前操纵的可能。
此时,Vitalik还将Casper FFG的实现确定性的时间从 2.5 个轮次减少到理论上最优的 2 个轮次。
尽管有可验证延迟函数的进展,但网络延迟的假设还是必要的,这是有效发现攻击的需求,也就因此会出现延长epoch验证区间的思路。
期待在权益证明正式上线时的Casper FFG和CBC。