Casper如何保持着超大规模的验证人的情况下,实现即时最终性?当下以太坊共识验证人的规模大约是60万,这么多的验证节点,在技术上面保证了以太坊极大的去中心化。但是以太坊共识算法是确定性的算法,也就是说经过了一定的时间后,某个区块一定是不会改变的,而不是概率性确定。casper采取对PBFT算法
当下以太坊共识验证人的规模大约是60万,这么多的验证节点,在技术上面保证了以太坊极大的去中心化。但是以太坊共识算法是确定性的算法,也就是说经过了一定的时间后,某个区块一定是不会改变的,而不是概率性确定。
casper采取对PBFT算法进行改造,保持pbft算法的即时敲定性,但是必须解决pbft的以下三个问题:
LMD 让“消息 (messages)”发挥了作用,即以太坊2.0链上的最终性是“由最新消息驱动的”。消息就是证明 (attestation),所有这一切归结起来就是,拥有最多投票的分叉链将被认为是“权威链”。
上图中体现了由最新消息驱动的分叉选择规则:绿色区块表示经由 LMD GHOST 分叉选择规则证明了的区块,笑脸符号表示最新的验证者证明 (attestations),某个区块中的证明总量 (笑脸总数) 就是该区块的权重,用区块中的数字表示。
在上图中,尽管位于上方的那条分叉链是最长的链,但下方的那条由绿色区块组成的链才是“权威链”**,因为绿色区块包含了最多的证明,也就是拥有最多的验证者投票**。
每个epoch的第一个区块我们称之为检查点。 每个epoch里面32个slot,每个slot会根据随机算法,选出一个委员会,这个committee的第一个validator成为proposer,proposer出块,committee的validtor对区块进行attestation投票,同时对上一个 epoch的检查点进行FFG投票,也就是会进行两次投票,一次attestation投票给本slot的新出块,同时对上一个epoch的检查点区块进行投票。attestation投票是为了分叉链选择做依据。FFG投票是为了进行区块的justified和finalized。
每个epoch会把全网所有的验证人随机的全部分配到每个slot,而每个slot的committee的validator都会对上一个epoch的检查点进行FFG投票,这也意味着,本epoch走完时,上一个epoch的检查点已经被justified(+2/3的验证人对其投了FFG投票)。pre-pre-epoch的检点已经被finalized(不会再改变,相等于pbft的+2/3的commit投票)。
从这里我们知道,casper是通过把全网60万validator通过随机分组的方式组成每个slot的committee,如果是32个slot的话,每个slot的committee的validator数量是60万/32 == 2万左右。这2万左右个validator对在slot时间(12秒)内对当下slot进行attestation投票和对上一个Epoch进行FFG投票。以这样的方式把对于一个区块的投票,变成了对于一个epoch的投票(和polkadot的grandpa对于链进行投票一个意思),从而加快了的区块链性能。
而且对于一个检查点的投票周期,从PBFT的全部validator在一个view周期内全部投票完毕,变成了全部validator在32个slot时间内(12秒*32==6.4分钟)投票完毕,解决(缓解)了pbft在大规模验证人情况下的消息复杂度剧增的问题。
当然了,这里的validator的退出是会带来一个远程攻击,解决办法是validator请求提出后,会有一个延迟期,延迟期过了才能退出。
https://support.token.im/hc/zh-cn/articles/17271785866009-imToken-Labs-%E4%BB%A5%E5%A4%AA%E5%9D%8A-PoS-%E6%BC%94%E8%BF%9B%E5%8F%B2 https://learnblockchain.cn/article/1235 https://www.tuoluo.cn/article/detail-56560.html https://www.techflowpost.com/article/detail_10681.html https://www.8btc.com/article/473424 https://zhuanlan.zhihu.com/p/135231626 https://www.jianshu.com/p/f8656a2a4a9d
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!