浅谈DPOP共识机制
区块链作为比特币系统中的底层技术受到了广泛关注,是解决分布式系统一致性问题的一种可行方法。区块链技术的核心是如何实现共识。良好的共识机制可提升系统性能,促进区块链技术的应用。
共识机制是区块链技术的基础和核心,共识机制决定参与节点以何种方式对某些特定的数据达成一致,早在1975年,Akkoyunlu、Ekanadham和Huber 提出计算机领域的“两军问题”,对于共识机制的研究从此开始,Lamport、Shostak和Pease提出“拜占庭将军问题”,研究在可能存在故障节点或者恶意攻击的情况下,非故障节点如何对待特定数据达成一致,拜占庭将军问题成为共识机制研究的基础。
2008年,Nakamoto提出比特币,共识机制进入区块链共识时代。BTC的初衷是建设一个开放的公有区块链基础设施,网络中的节点可以自由地加入以及退出,能够平等地竞争记账权。在这一类共识机制下,节点获得记账权的概率与该节点拥有某种资源的比例相关,并且这种资源是难以垄断的,因此POW共识机制就诞生了。
POW共识机制
POW工作量证明机制,通过一个竞争机制(计算猜测一个nonce随机值,得以解决规定的哈希问题),让计算工作完成最出色的节点获得记账的权利。POW通过这种算力消耗的经济惩罚限制了恶意节点的参与,因为它需要付出大量的经济成本。而这个计算过程就是挖矿。
我们将PoW的哈希解谜过程表示为节点不断改变区块头部的nonce使区块Hash满足目标条件Target的过程,可以由以下的公式描述:
Target根据网络的难度进行设定,难度每隔一段时间根据规定的算法进行调整,目的是保证网络中挖掘出区块的时间期望为固定值。H(x)表示Hash函数,我们把x的取值范围称为节点的搜索空间。
PoW机制中节点的搜索空间是所有正整数,由于Hash函数的特性,不等式左边可以认为是在Hash函数值域上均匀分布的随机变量,Target对于全体节点都是相同的,节点获得记账权的概率取决于其计算Hash的速度。
BTC以及其分叉通证(BCH、BSV)、LTC、ETH(当前Metropolis版本)等大部分主流数字通证均采用PoW共识机制,它们之间的区别主要是采用的哈希算法不同,以及具体参数例如难度调节机制、区块激励机制的不同。
为了解决POW挖矿带来的巨大能源消耗问题,以太坊ETH从POW转化为POS共识机制,接下来我们说说POS共识机制。
以太坊ETH区块链结构
POS共识机制
为了解决POW工作量证明共识机制带来的巨大能源消耗问题,基于权益证明的POS共识机制被提出。权益是指节点或用户拥有的资产,如代币,根据用户拥有资产比例决定成为下一个区块生产者的概率,拥有资产比例越高,其成为生产者的概率就越大。
点点(Peercoin)是首个将PoS理念加入到共识机制中的数字通证。Peercoin的PoS挖矿过程与PoW工作量证明类似,同样需要节点进行哈希计算并使结果满足目标值,目标值越大,则越容易获得生产区块的权利。其挖矿过程可以表示为:
不等式左边Hash函数搜索空间中的Timestamp表示当前时间。Peercoin规定了一个区块的时间戳必须在由前一个区块所决定的时间范围之内,否则该区块不会被其他节点接受。StakeModifier是每过一定数量区块就根据最新区块Hash重新计算的值,它的设计是为了防止节点提前计算未来某个时间的Hash值。这样得出的Hash可以保证是节点在规定的时间范围内计算出的。不等式右边BaseTarget由当前PoS挖矿的基础难度决定,CoinAge表示节点投入参与记账权竞争的币龄。
与PoW网络的节点在一个非常广泛的搜索空间里寻找nonce不同,由于时间戳取整数进行Hash运算, Peercoin网络中的节点固定时间间隔内的搜索空间是有限的,限制了节点因算力差异产生的竞争。而节点币龄越大,目标空间也越大,Hash值满足条件的概率越高。
Peercoin的激励机制在于,获得记账权的节点可以添加一笔权益输入,根据区块内所有交易消耗总币龄的多少生产一定比例的利息支付给自己,Peercoin中每一单位的通证一年的币龄会产生1%的利息。
与PoW的最长链原则类似(累计工作量最高),Peercoin的区块也会记录该区块内交易的总币龄,累计消耗币龄最多的链将成为主链。
在网络安全性方面,对PoS共识机制发起51%攻击的可能仍然存在,但相比PoW,对PoS进行51%攻击所需的成本通常可能会更高。在以币龄为权益的PoS算法中,攻击者发起攻击不仅需要金钱成本,还要付出时间成本,恶意囤积通证的可能性也被限制。攻击者在记录一次区块后币龄会清零,该部分通证一段时间内不能再被用于竞争记账权,增加了重组区块链历史、发动双花攻击的难度。最后,攻击者必须持有通证才能竞争记账权,发起以破坏区块链为目的攻击会使攻击者本身遭受损失。
虽然解决了能源消耗问题,PoS也引入了新的问题。在传统PoS中,节点不需要在线也可以累积币龄,这可能导致网络在线的记账节点数量较低,网络安全得不到保障。
DPOP共识机制
随着POW共识机制、POS共识机制的相继提出及应用,慢慢又有新的共识机制比如DPOS共识机制、PBFT共识机制等,每一种机制都有优势及劣势,不是产生矿霸,就是产生庄家。2012年 一位名叫Cediva的人提出了是否可以在POS中增加一种新的算法,即每个人在节点或社区的工作参与度加上POS的持有Toke数量进行奖励,这样可以促进token持有量,也可以增加节点能动性,他在2019年成立的N&A团队中正式提出了这个构想并命名为DPOP,权益证明+参与度证明共识机制。
Cediva通过对N&A公链进行实践,完善了DPO共识机制,Cediva在多委员会混合共识机制上融入知识证明的工作量证明(EWoK共识机制)思路,很好的平衡了拓展性及安全性问题。同时实现了之前的设想,以权益、参与度两个维度进行证明的共识机制。
为了解决区块链处理交易的可扩展性, 利用多个并行的委员会来处理网络中不同分片的交易的混合共识机制称之为多委员混合共识机制,DPOP是在多委员混合共识机制基础上的升级,全称Delegated Proof of Participation。
我们以Chainspace为例来诠释DPOP共识机制流程,Chainspace其敌手模型为n=3f+1。Chainspace在分片的基础上,构建了智能合约应用平台。任何人能够发布智能合约,智能合约的参与者可以是多个用户。Chainspace中存在系统智能合约CSCoin,为整个协议的运行设定一定的安全参数。Chainspace将智能合约和交易称为“对象(objects)”,每个对象由不同的分片分别执行、处理和验证。Chainspace中对交易或智能合约的处理过程如图所示。
DPOP共识流程图
1 准备(prepare)
用户向输入分片发送准备消息prepare(tx),假设交易tx有两个输入和一个输出, 其对应的分片分别为分片1、分片2和分片3。
2 处理准备消息(processprepare)
输入分片1和分片2的节点收到prepare(tx)消息后,锁定交易tx的输入,在各自的委员会内部通过运行DPOP算法处理准备消息,如果交易tx合法,即输入未被花费且没有其他的交易使用该输入,输入分片向其他节点广播承诺消息prepared(tx,commit)。如果交易tx不合法,未通过DPOP算法,则广播消息prepared(tx,abort)。
3 处理准备完成的消息(processprepared)
所有分片之间进行交互,如果所有分片在上一步广播的都是prepared(tx,commit)消息,则对交易tx达成最终共识,广播accept(tx,commit)消息。如果分片中有大于等于一个分片提交了prepared(tx,abort)消息,则对交易tx的共识失败,广播accept(tx,abort)消息。
4 处理接受消息(processaccept)
当上一步中有分片广播accept(tx,commit)时,交易tx的输出分片运行委员会内分布式一致性算法,将tx添加到该分片中。当分片广播accept(tx,abort)时,所有分片将交易tx的输入解锁,放弃交易tx。
DPOP共识机制优势是既继承了多委员混合共识机制的推展性,同时平衡了共识机制中的安全问题,防止了恶意攻击。参与基于N&A公链的项目,参与者既可以凭借着自己手中Token通证权益参与到共识中,又可以通过自己的对于链上贡献参与到共识中,平衡点大户对于网络的危害,同时也激发每一个参与者积极的做出贡献。
良好的共识机制可提升系统性能,促进区块链技术的应用,让我们拭目以待DPOP共识机制对于区块链技术领域的贡献。
DPOP共识机制发展历程:
2012年7月Cediva提出了改进POS的初步构想
2013年5月 首次提出参与度证明
2013年11月 首次确定了权益证明+参与度证明的概念
2018年10月 通过多种模型对比完善了DPOP的最终理论。
2019年1月,N&A团队首次在瑞士达沃斯区块链论坛会议中提出了去硬件化冷钱包的概念。
2019年3月,Cediva通过对多委员混合共识机制的升级改造的DPOP共识机制应用到N&A公链进行实践,成功实现了DPOP共识机制的落地。