EOS共识机制BFT-DPOS

参考:
BFT-DPOS共识机制的进化过程及背后逻辑
EOS的DPOS共识机制
详解 EOS 的新共识机制 BFT-DPoS
1、白皮书
EOS.IO 采用授权委托证明(DPOS)的算法: EOS 区块链上所有代币持有者可以都通过一个持续的投票系统选择区块生产者。想参与区块生产,只要能说服代币持有人给自己投票,最终(得票最高的那些节点)被选为区块生产者。
EOS.IO每 0.5 秒产生一个区块,并且在任一时间仅有一个生产者获权生产区块。如果在预定时间内没有区块生成,则跳过该块。相应的,当跳过一个或多个块时,区块链中会存在一个大于等于 0.5 秒的时间间隔。每一轮产生 126 个区块(共 21 个区块生产者,每个生产者生产6个块)。
在每轮开始时,根据代币持有者的投票选出 21 个不同的区块生产者。获选的生产者的生产顺序由 15 个或更多生产者一致同意决定。如果一个生产者错过了一个块,并且在过去 24 小时均未产生任何块,则会被从生产者的名单中剔除,直至他通知区块链表明他打算再次开始生产区块。这种方式可以排除不可靠的生产者来最小化错过的区块数量,从而确保网络的顺畅运行。
分叉的处理:因为其区块生产过程中,生产者是合作而不是竞争关系,理论上不会分叉。如果有分叉,将自动切换到最长的链上。原因是拥有较多生产者的区块链分叉会比生产者少的链增长速度要快得多,生产者占比越高的分叉链丢失的区块会更少。
添加了拜占庭容错机制的 DPOS 算法需要所有生产者签名所有区块,但禁止同一个生产者签名两个时间戳或高度相同的区块。一个区块一旦被 15 个生产者签名,那么这个区块就可以被视为不可逆了。 任何生产者一旦签名两个相同时间戳或相同区块高度的区块,这种不诚信行为就会留下密码学证据。在这一模型下,不可逆的共识将在 1 秒内达成。
2、解析
2.1 DPOS
DPOS意思是授权权益证明共识机制。相比于比特币的PoW机制,DPoS不用浪费算力资源争夺记账权,其通过赋予EOS通证持有人投票权,选出21个“超级节点”来担任记账人的角色,保证整个网络的正常运行。21个超级节点轮流负责记账每一个区块产生后,会按照顺序传递到下一个超级节点中,第二个超级节点要负责打包新的区块,同时确认上一区块的内容,当某一区块被超过2/3的超级节点确认后,该区块将被确认为不可逆区块。
BFT + DPOS
BFT + DPOS + 小块
2.2 BFT
BFT(Byzantine Fault Tolerance),意思是拜占庭容错算法,DPoS共识加上BFT算法后,验证时不再按照出块顺序由超级节点一个个验证区块内容,而是让出块节点成为主节点,出块后同时向剩下20个节点进行广播,并获得节点的验证反馈,如果有超过2/3的节点验证通过,则该区块成为不可逆区块。BFT可以使得EOS的区块确认速度显著增加。
2.3 21个超级节点的产生
http://EOS.IO软件中,区块是由21个生产都轮流生产的。在每一轮生产开始时,唯一的21个生产者就被选定了。 每一轮,总得票最多的前20个生产者自动选定,而最后一位根据相对其他生产者得票数的比例选出。利用从区块时间获得的伪随机数,选定的区块生产者顺序被打乱。这种打乱的行为是确保生产者与其他生产者保持均衡的连通性。
2.4 分叉的处理
一般情况下,DPOS机制的区块链不会经历任何分叉,因为区块生产者是合作产生区块而不竞争区块。如果发生分叉,共识会自动的切换到最长的链上。这种机制可以运行是因为区块添加到分叉链上的速率与共用该共识的区块生产者比例是正相关的。换句话,一个分叉链有更多的区块生产者,它的链长度增加的更快。除此之处,不允许有一个区块生产者同时在两个链中。如果区块生产者被抓到这样做很可能会被投票出局。这种双重生产的密码学凭证可以用于自动移除滥用行为的生产者。
2.5 块的确认
通过在一群数量有限的节点中,使用轮换或者其他算法来筛选出某个节点作为主节点。并且赋予该节点出块的权利。在主节点是将该时段的交易打包成区块后用自己的私钥对该区块签名,并将其广播到所有节点。当主节点收到至少三分之二的不同节点的签名区块后,则该区块完成了所有节点的验证成为不可逆区块串联到区块链中。

猜你喜欢

转载自blog.csdn.net/http188188/article/details/81630528
今日推荐