在最早的EOS技术白皮书中,EOS主要采用上述的DPoS机制每3秒来产生一个区块,而在最新版的EOS Dwan 3.0中为使区块链系统有更快的出块速度,EOS 采用了BFT-DPoS共识机制从而达到了500毫秒的出块间隔。该机制的具体过程是:EOS的持有者通过投票系统对各个超级节点竞选者进行投票,选出21个节点为超级节点。然后这21个超级节点以自身的网络资源状况商议出一个出块权拥有顺序,在每个超级节点拥有出块权时,以间隔为500毫秒(500毫秒是EOS团队通过大量实验测试得出的当前网络状态下可达到的最小的稳定状态下的出块间隔)连续产生12个新区块,然后切换到下一个超级节点连续产生之后的12个区块。
该方式可以保证一个超级节点可以连续以500毫秒的间隔产生区块,因为在同一超级节点产生新区块时不受当前网络状况的影响,但由于网络的延迟很难使得其他节点对已经产生的区块进行确认,使其成为不可逆区块。因此EOS引入了 BFT协议,当超级节点A产生第一个新区块后,A将该区块进行签名并广播给其他超级节点,其他超级节点对该区块进行验证后对其进行签名并返回给A节点,当A节点收到来自14个不同节点签名的区块后,该区块就成为不可逆区块串联到之前的区块链中(以500毫秒产生新区块的过程和对区块进行BFT协议共识的过程在超级节点中是同时进行的,即确认过程不影响超级节点产生新的区块)。EOS团队通过大量实验测试,在当前的网络状况下,一个超级节点广播一个新区块并确认的过程可在1秒的时间内完成。因此,每个新区块的产生到成为不可逆区块最多需要1.5秒的时间,这就使得跨链通信的时延大大缩小。因为一个区块链在引入另一条区块链的交易状态时必须等待其成为不可逆交易,所以两个基于EOS的区块链在3秒钟以内就可以进行一次来回的通信,而以太坊进行类似的通信需要9分钟,比特币需要3小时以上。
上述过程虽然可以保证同一超级节点产生新区块时可以达到500毫秒的间隔,但当切换超级节点产生区块时,由于网络延迟使得上一节点产生的最后几个新区块有可能被该超级节点忽略。为解决此问题,EOS选用了确定顺序的超级节点轮流出块,比如以纽约(美国东海岸)、芝加哥(美国中部)、洛杉矶(美国西海岸)、日本东京、中国上海这样的顺序,该顺序使得上一节点产生的最后区块传播到下一节点时有最小的延迟,从而避免下一个超级节点忽略上一节点产生的区块。如果是随机定义出块权的超级节点,那么在现有的网络条件下,出块间隔只有控制在3 秒时才可保证下一节点较大概率上不会忽略上一节点产生的区块。
使用上述BFT-DPoS协议就可以使得EOS的出块间隔从原来的3秒降低到500毫秒,这也使得跨链通信的时延大大缩短,单位时间内可确认的交易数量大大提升。笔者相信如果这样的机制在EOSIO1.0的正式版本中成功实现,那无疑是区块链技术向支持百万级别用户的目标迈出的巨大一步。