一文读懂主流共识机制:PoW、PoS和DPoS

以技术视角详细介绍PoW、PoS和DPoS共识的技术原理。

PoW、PoS和DPoS可以说是最广为认知的共识机制。网络上有很多介绍这三种机制的文章,但大部分的文章都只停留在科普和基本原理的层面。对于区块链工程师来说,浅尝辄止是远远不够的,本文章以技术视角来详细介绍3种共识的技术原理。

所谓的共识机制,是保证区块信息在全网节点中保持一致共识的机制。如旧文关于“共识机制”,你知道的很可能是错的提到,共识机制可分为两个阶段:1)提出共识内容;2)对内容达成共识。

上述的三种共识算法在阶段2的都是遵循最长链原则,而这类共识也统称为中本聪共识,本文对此不再进一步展开,重点介绍阶段1的差异。

01 PoW(Proof-of-Work)工作量证明机制

工作量证明PoW(Proof of Work),通过算力的比拼来选取一个节点,由该节点决定下一轮共识的区块内容(记账权)。PoW要求节点消耗自身算力尝试不同的随机数(nonce),从而寻找符合算力难度要求的哈希值,不断重复尝试不同随机数直到找到符合要求为止,此过程称为“挖矿”。具体的流程如下图:

640.jpeg

第一个找到合适的nonce的节点获得记账权。节点生成新区块后广播给其他节点,其他节点对此区块进行验证,若通过验证则接受该区块,完成本轮共识,否则拒绝该区块,继续寻找合适的nonce。

至今为止,寻找一个满足要求的nonce是非常困难的,要求节点消耗大量的算力。随着有效区块的不断积累,恶意节点需要消耗极大的算力才有可能推翻以前的区块,完成「双花」攻击。

02 PoS(Proof-of-Stake)权益证明机制

PoW要求所有的节点消耗大量的算力来争夺记账权,但在每一轮共识中,只有一个节点的工作量有效,意味着有大量的资源被浪费,因此,权益证明机制Proof of Stake(PoS)在2013年被提出并首次应用在PeerCoin系统中,目的是解决资源浪费的问题。

在PoS共识中,节点争夺记账权依靠的不是算力而是权益(代币)。PoS同样需要计算哈希值,但与PoW不同的是,不需要持续暴力计算寻找nonce值,具体流程如下:

640.png

每个节点在每一轮共识中只需要计算一次Hash,当拥有的权益越多,满足Hash目标的机会越大,获得记账权的机会越大。可以说,PoS是一个资源节省的共识协议。PeerCoin定义的权益除了与代币数量有关,引入了币龄(Coin Age),100个代币持有两天,币龄为200,因此持有的代币数量越多,时间越长,获得记账权的机会越大。

03 DPoS(Delegate-Proof-of-Work)委托权益证明机制

委托权益证明 Delegate Proof of Stake(DPoS), 是由PoS演化而来的。持币用户通过抵押代币获得选票,以投票的方式选出若干的节点作为区块生产者,代表持币用户履行产生区块的义务。DPoS与公司董事会制度相似,让持币用户将生产区块的工作委托给更有能力胜任的专业人士去完成,同时也能享受参与出块获得的奖励。

6401.png

用户投票最多的若干节点成为出块节点,以EOS为代表是21个节点。在每一轮共识中,轮流选出一个出块节点产生区块,并广播给其他的出块节点进行验证。若节点在规定时间内无完成出块,或产生无效区块,会被取消资格,取而代之的是重新投票选取新的出块节点。

值得一提的是,EOS初期的DPoS的共识方法才采用的是最长链共识,意味着与PoW一样区块没有绝对的最终性,交易的不可逆需要等待多个区块确认。在18年时,EOS使用拜占庭共识代替最长链共识,名为BFT-DPoS。

04 结束语

本文以工程师的技术视角介绍三种主流的共识机制的技术原理。受篇幅限制,下一篇文章进一步对比三种共识的优缺点和适用场景。

参考资料:Analysis of the main consensus protocols of blockchain

欢迎关注公众号:区块链Hacker

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2021-02-24 07:31
  • 阅读 ( 269 )
  • 学分 ( 11 )
  • 分类:共识

0 条评论

请先 登录 后评论
子叶
子叶

区块链工程师

5 篇文章, 61 学分