EOS白皮书说3秒出一个块,真是这样吗?

老早想写EOS的共识算法,昨天已经发现两篇优秀文章讲DPOS算法 (浅谈EOS(2)——节点选举?你需要知道的DPoS共识机制https://bihu.com/article/80075) 和 (在普熊的时代以被减损中心化的EOS说开去https://bihu.com/article/81718 )。愿意研究的还是推荐看以上两篇文章,我从另外的角度分享一点小知识。

区块链的效率和共识算法密切相关。比特币大约10分钟出一个块,6个块之后确定最终不可逆,加上块大小只有1MB,所以算下来最终TPS在7-8之间。

BTS, Steemit使用的共识算法是DPOS,其出块时间和最终不可逆时间为:

出块时间:3秒

最终不可逆:<=45秒

EOS继承了BTS,Steemit的石墨烯框架,白皮书里也写着用DPOS共识算法,也就是3秒出一个块。关心EOS开发或者关注BM Twitter的人可能知道,实际上EOS的共识效率为:

出块时间:500毫秒

最终不可逆:<= 2秒

怎么做到的呢?让BM来告诉你:

EOS白皮书说3秒出一个块,真是这样吗?

EOS使用混合dpos和bft达到500毫秒出一个块,1-2秒确认块并使块最终不可逆。

为什么可以从3秒一块提高到500毫秒一块?EOS使用了一些优化措施,我以后会详细讲。

为什么1-2秒就可以确认?背后的原理就是使用bft(拜占庭)算法收集2/3的出块者的签名,并把签名写入区块中,来达到快速确认的目的。bft(拜占庭)算法证明很复杂,它可以实现不超过1/3节点的容错,也就是只要2/3的节点确认就行。


分享到:


相關文章: