EOS 目前采用DPoS+Pipelined BFT 共识机制。
DPoS共识 - 如何成为出块节点
DPoS(Delegated Proof of Stake)是权益委托证明机制。相比于比特币的PoW机制,DPoS不用浪费算力资源争夺记账权,而是通过赋予通证持有人投票权,EOS 将投票选出21个“超级节点”来担任记账人(Block Producer:区块生产者简称BP)的角色,保证整个网络的正常运行。
出块机制
每0.5秒生产一个区块。超级节点轮流出块,每轮每个超级节点连续出12个块。以 21*12 个区块为一个周期。在每个出块周期开始时,21个区块生产者会被投票选出。同时,为了防止因网络延迟而使超级节点漏掉区块,EOS 采用确定的出块顺序,通信时延低的超级节点互为邻居出块者。
Pipelined BFT - 如何进行区块确认
Pipelined BFT(Pipelined Byzantine Fault Tolerance)是基于流水线的拜占庭容错机制。
常规的PBFT(Practical Byzantine Fault Tolerance)都是生产一个区块,等待共识,然后再生产一个区块。因而共识需要比较长的时间,没法满足0.5s出块的需求。
EOS 采取了不同的实现方式,出块和共识是可以流水并行工作的,区块生产完成后,不等待PBFT共识,继续生产同时参与并处理上一个区块的PBFT共识,当PBFT共识完成后即修改为不可逆状态。
惩罚机制
任何时刻,只有一个生产者被授权产生区块。如果在某个时间内没有成功出块,则跳过该块。如果出块者错过了一个块,并且在最近24小时内没有产生任何块,则这个出块者将被删除。这确保了网络的顺利运行。
会不会分叉
在正常情况下,DPS区块链不会经历分叉,因为块生产者合作生产区块而不是竞争。如果有区块分叉,共识将自动切换到最长的链条。具有更多生产者的区块链长度将比具有较少生产者的区块链增长速度更快。此外,应该没有块生产者会同时在两个区块链分叉上生产块。如果一个块生产者发现这么做了,就可能被投票出局。