本篇专注于从 Tendermint 代码实现来还原其原理。
本文是介绍以太坊PoS共识的第三部分。以太坊的PoS-Part1共识协议总览以太坊的PoS-Part2LMDGHOST最终确定性Finality最终确定性(Finality)是指区块保证不会被回滚,会永远成为链的一部分。上篇文章介绍了作为以太坊ForkCho
本文是介绍以太坊PoS共识的第二部分。共识协议是个组合学习以太坊PoS时,可以发现所谓的共识协议不是一个单一的协议,而是以下三个部分的组合。ProposeRule:区块发布规则,负责打包区块并发布到链上,比如以太坊的ProposeRule是ProofofStake,
在Shardora共识协议开发之前我产生过两个疑惑?一个是BFT共识居然要求少于1/3的恶意节点,这听起来是个很强的信任假设,这真的可行吗?另一个是HotStuff共识这么好用,为什么主流的这几条公链不用,只是因为历史原因吗?在了解了以太坊PoS设计过程之后,我基本有了答案。
我们在 Shardora 实现了 HotStuff 作为共识层之后,学习并参考了 Tendermint,特别是参考其对接 PoS 的部分,以进一步完善 Shardora 共识的效率和安全性。
原生HotStuff的局限相比其他BFT类共识算法,HotStuff(下文简称HS)通过增加一个投票阶段的方式实现了正常和异常情况下O(n)的通讯复杂度,并且没有牺牲响应性(Responsiveness)。具体请参考文章HotStuff工程设计与实现。然而,HS有以下两个局限
文章从原生 HotStuff 出发,重点讨论 Chained HotStuff 的方案设计和工程实现。