这篇文章是针对 EOS.IO 白皮书中的共识算法,学习和总结的目前常见的几种共识算法的定义以及优缺点。
首先让我们先理解一下,什么是共识算法,我把它理解为达成共识的一种运作机制。目前已经很多共识算法,包括 PoW、PoS、DPoS、PBFT 等。
1. PoW 共识算法(Proof of Work)即工作证明。
这是比特币系统采用的算法,区块链的核心是公共账本,比特币所有交易都需要记账人记账才能被记录在区块链上,作为回报记账的人会有一定的收益。记账的人我们称之为矿工,记账的过程就是挖矿,所有矿工都可以通过计算哈希值,谁最快求解出哈希值,就可以获得交易的记账权并获得比特币作为收益。这就是 POW 共识算法。
计算哈希值的速度与计算机的算力有关,算力越高求解速度越快,获得的几率也越高。算力可以理解为计算机的计算能力,哈希值是哈希函数的值,哈希函数是一种加密学的计算机算法。(有兴趣的同学可以自己了解一下)
矿工获得记录之后会在全网公布,其他节点的矿工验证后也在区块链中记下这条记录。
PoW 的优缺点
优点:完全去中心化,相对安全且稳定。
缺点:区块确认时间慢,挖矿导致资源浪费严重,手续费偏高,容易分叉,无法满足商用。
2. PoS 共识算法(Proof of Stake)即股权证明。
PoS 是在 PoW 共识算法基础上的升级版,它根据节点所持有的代币数量和时间,分配等比例的权益和收益,挖矿难度也降低。
PoS 的优缺点
优点:缩短了区块的确认时间,同时也节省资源。
缺点:拥有代币的人未必参与记账,容易分叉,安全性稍差。
3. DPoS 共识算法(Delegated Proof of Stake),即委任权益证明。
EOS.IO 采用的是 DPOS 共识算法,又叫股份授权证明机制,这个共识算法是全网持有此代币的人可以通过投票,选举出区块的生产者。每一个区块由一个生产者确认产出,每 21 个区块为一个周期,所以每个周期需要 21 位生产者。这 21 个生产者会在每次区块周期开始前投票选出。
同时为了保持产生区块的效率,还引进了淘汰制,共识算法中规定,如果生产者错过了一个区块,并且 24 小时内没有再生产区块,那就会被淘汰。
DPoS 的优缺点
优点:区块确认速度快,所以交易速度快,可以达到秒级。
缺点:不是完全去中心化,还是依赖代币。
以上三种共识算法各有千秋,PoW 是目前运作最稳定的共识算法,但是占用资源浪费能源,交易速度慢等问题仍然严重。DPoS 直接解决了这几个问题,无需浪费过多资源,交易的处理速度更是能达到秒级。
EOS.IO 定位为区块链的操作系统,可以在其上构建 Dapp ,采用 DPoS 共识算法是很棒的选择,构建的应用也将极大的提升用户体验。试想我们不可能在区块链应用中给朋友发一个红包,等待半小时对方才能收到。
以上如有不正确的还望大家指正和给予建议,感谢。