人类能够大规模地进行协作,能够在地球上众多生物中真正脱颖而出,最重要因素之一就是人类可以达成共识。这个共识来自于文化或者组织的认同。人们对国家、民族有共识,对公司有共识,这样可以朝一个方向进行协作。如果没有共识,就无法形成体系合作的力量,共识的产生有的来源于文化认同,有的来源于国家机器。比如货币的采用,是需要国家的信用背书。
比特币的诞生则给我们带来了一个可以自运转网络的成功范例。通过共识算法、加密、点对点网络以及奖励机制等,可以形成一个自治的社区,可以形成一个不通过中心机构来达成的信任,最终实现点对点的价值流通。
这是一个全所未有的社会实验,到目前为止,它还是比较成功的,全球有数千万比特币地址,市值超过1400多亿美元。
目前区块链的共识机制主要有哪些?有哪些值得关注的共识机制?除了PoW、PoS、DPoS、PBFT之外,还有哪些共识算法值得关注?它会不会继续演化?蓝狐笔记最近关注到一种叫DSC的共识算法,它试图平衡效率、公平、安全等方面,新探索值得探究。
共识算法是区块链自运转的核心
对于区块链来说,它没有一个中心主体在负责体系的运转,账本怎么记?什么账本才是大家确认的?诸如此类都需要由一个去中心化的机制来达成共识。
对于一个公链来说,它是否足够安全,是否更有效率,共识机制是关键。共识机制设计好了,一是能够保证网络的安全,保证记账的安全,免于遭受恶意攻击;二是能够让社区很好的自运转,特别是在如何激励方面,是否有好的设计是自治社区能否进入良性循环的关键。
最后,越来越多的共识算法,除了保证安全之外,也会考虑到效率和公平。我们来看看,不同的共识算法各自的优劣之处。
1.PoW
PoW算法是最经典的共识机制。由比特币引入并使用。以比特币为例,PoW共识机制中,比特币网络中的矿工为了获得记账权,必须通过算力来解数学题。大约十分钟时间,第一个发现特定属性哈希的矿工将获得记账权,并被奖励比特币。
这个机制的本质就是消耗算力,因为解题没有其他办法,就是靠算力。而虽然解题耗费算力,但验证答案是否正确却很简单。由于算力背后是经济的成本,需要电费和矿机等支撑。这意味着要发起51%的算力攻击需要巨大的能源和算力资源才能完成。
PoW是目前为止运行时间最长的共识机制,也是最久经考验的共识算法,有较高的安全性,也是相对公平、去中心化的网络。
但同时也有不少地方被大家诟病。尤其是在电力消耗和性能上。由于解题需要消耗大量的电力,全世界PoW算法所消耗的能源据统计已经超过爱尔兰一个国家所消耗的电力。
另外,PoW的机制为了保证安全性,在性能上也不能兼顾,它的扩展性备受诟病。每秒才7个交易,跟中心化每秒10万以上的交易相比,完全无法媲美。基于PoW机制,比特币很难成为网络电子现金支付系统。
在中心化方面,也存在一定的争议。由于不同地区的电费不同,从成本上来说,最终会相对倾斜到电费成本较低的国家和地区。比如中国目前占据比特币算力的相当大一部分。
2.PoS
PoS跟PoW不同,它无须通过消耗算力获得记账权,所以更环保。PoS有验证者,这些验证者节点需要锁定一定量的token,锁定之后,就有权益的证明。一组验证者轮流提议和投票下一个区块的生成,而投票的权重取决于其持有token多少。
也就是说每个网络节点链接到一个地址,这个地址所持有的代币越多,它获得生成下一个区块的概率就越大。如果一个攻击者试图发起51%的攻击,它需要持有超过50%以上的代币,如果一个市值超过10亿美元的网络,攻击者的成本至少5亿美元以上,如果发生攻击,导致网络不安全,对理性攻击者来说也没有意义。而且PoS的防御和攻击是不对等的,防御更容易些,恢复网络的代价要低于攻击者的代价。PoS是由NxT最先提出的。
PoS更适合代币固定的网络,不会产生通货膨胀,它的收益奖励主要来自于用户的交易。
PoS的好处是不用消耗大量能源,达成共识速度快,但也有不足,不是所有节点都愿意挖矿、永远没有最终性,需要检查点机制来减缓这个问题、也容易产生分叉。
3.DPoS
DPoS比PoS更加高效。它的代币持有人投票支持代表,当选的代表验证区块交易,获得奖励。DPoS的投票是持续进行的。一旦代表的表现不尽人意,代币持有者可以用投票把代表选出。
由于代表需要遵守所有的规则,保证网络正常运行时间,这也会比PoS更高效。此外,它不会分叉,比PoS有优势。
它的不足是有中心化的风险。如果只有20多个超级代表,这意味着如果超级节点被控制,网络有一定的安全风险。不过,DPoS共识机制也在不断的进化,不断的寻找兼顾安全、去中心化和效率。
除了PoW、PoS、DPoS之外,还有PBFT、VBFT、PoA、PoE、PoI…哪些值得关注呢?
蓝狐笔记发现Penta网络的DSC共识算法,它有自己的特色,它试图在保证安全性的同时,满足效率与公平的需求,为成为DApp的基础设施而努力。
DSC 共识算法:安全、效率与公平的兼顾
DSC协议是指动态权益共识协议,采用散列抽签算法,兼顾效率与公平。
首先是从全网节点进行代表的投票选举,选出两种代表,一是持有较多PNT代币的议员,一个是持有较少PNT代币的观察员。
其次,在两种代表中通过散列抽签算法,随机挑选部分议员和观察员组成若干的共识组,每个共识组的议员或观察员占比不得少于1/3。
共识组进行BFT共识。在议员中选举出议长。议长提议生成区块,其他议员和观察员进行区块验证,在2/3以上节点验证通过后,生成该共识组所对应的候选区块。共识组数量的多少没有固定,根据网络情况进行动态调节,以保证正常出块。
最后,候选区块并不会自动成为正式区块,还需要通过散列抽签函数从所有共识组产生的候选区块中选择正式区块。如果出现区块共识在一定时间内无法达成的情况,会启动RESET机制。所有议员进行一轮BFT共识,产生一个RESET区块,重新组成共识组,恢复网络正常运行。
这样的选举设计也有议会机制的影子。比如美国建国之初,一开始试图设置单一院制,但发现众议院是基于人数,人口少的州很少有机会发出自己的声音,于是产生了两院制的议会。参议院不管各州大小,都是两票,一共100席。众议院则根据州人口多少获得席位。设计的目的是为了兼顾各方利益。
DSC通过议长、议员、观察员、共识组的设计,有一部分制衡和保证公平的考虑。因为观察员有机会进入共识组,且不少于1/3,所以即使用户是持有较少PNT的代表,也有机会获得奖励。这兼顾了公平,而在PoS共识机制中,一个持有很少代币的用户,能得到奖励的概率非常低。
Penta的议员是PNT代币持有节点主动发起申请,其他节点进行投票选择。要想当选议员,首先要质押一定数量的PNT代币,同时必须获得超过一定数量的票数。一旦当选议员,所有节点获得记账的机会均等。不是PNT数量越多,机会越大。议长是通过BFT共识过程产生,主要负责区块生成。
观察员是监督的角色,它跟议员不同,所需要质押的PNT数量较少,获得的选票也较少。但观察员分布更广,数量更多。它代表了更多普通PNT代币持有人的利益。更类似于众议院的角色。观察员无法当选为议员或议长,没有生成区块的权利。
Penta网络的议员人数是动态增长的,这个跟美国参议院固定席位不同。根据参与节点和PNT持有排名情况,Penta网络确定最初的议员数量和最低PNT代币的质押数量。同时,议员的数量和也会根据运行情况进行动态调整。观察员的数量则不设置上限。
通过散列抽签算法,Penta网络可以从议员和观察员中随机选择组成若干个共识组。假如每个共识组记账人数n,n是动态调整的,其中,议员数量是(n1),那么,n/3
关于恶意节点的惩罚:由于账户上质押了保证金,一旦发现任何故意破坏系统的行为,将会对节点进行惩罚。比如议长提出两个及以上区块BFT共识提案,其他节点可以举证,一旦确认,议长会收到远高于收益的惩罚。这会让作恶的成本处于不对称的状态。
Penta网络共识还能避免分叉。它有协议升级的机制。协议升级需要所有议员进行BFT投票,(2n+1)/3以上议员赞成,即可在指定区块高度自动切换到新协议,保证协议升级不发生分叉。协议升级主要是一些参数调整,比如共识组节点数量、交易手续费、最低保证金、议员和观察员人数等。
对于节点来说,记账可以获得收益,交易也有手续费收益。其中50%的PNT用于共识记账激励。在议长提议的区块被议员和观察员确认之后,候选区块变成正式区块,在这个过程中,参与贡献的记账节点,也就是产生备选区块的共识组成员都会得到相应的PNT奖励。
Penta的共识机制吸取了PoS、DPoS的优点,也有自己的独创之处,不用担心分叉,不用担心能源浪费,提高了效率,同时兼顾代币较少持有人的利益,鼓励更多人参与进来,减少寡头利益风险,兼顾安全、效率、公平。
这种共识机制的设计值得探索,也值得保持长期关注。
结语
共识机制是区块链网络运转的核心,区块链上不同节点的副本要保持一致,都需要通过共识算法来达成。但是为了保证安全和去中心化,目前区块链技术很难实现性能、安全和去中心化同时兼得。
不同的算法都有各自优势和不足。用PoW作为公链共识算法,很难实现扩展性,很难在它的基础上构建DApp的生态基础,很难向主流人群扩展。
用PoS或者DPoS共识算法,也有可能产生一些小概率事件,比如私钥被盗取、超级节点合谋导致中心化趋势等。在兼顾性能同时,可能在去中心化和安全上出现了一些不足。
在共识算法上的实践肯定还不会停止下来,而DSC的共识算法试图平衡安全、去中心化和效率,以及公平等方面,希望在这个基础上设计出一个可以安全、稳定的价值传递网络。
Penta的DSC共识协议跟DPoS不同的是,多了一个散列抽签的算法,不仅仅照顾了代币持有人的利益,还兼顾了更多公平和安全。
此外它还有插件化的共识组件,有灵活多种共识算法,可以支持到侧链或独立链。在Penta平台上的记账共识与DApp上侧链或独立链的共识分离,平台层和业务层的解耦,不同的DApp采用不同的共识机制来达成自身的目的。
比如说,有的DApp对交易的性能要求不高,但对交易安全要求更高,它也许会选择PoW算法,有的DApp对于交易性能要求很高,可能会采用DPoS的共识算法来达成目的。
未来的区块链发展来看,由于要达成共识,肯定会牺牲效率。但要走向大规模人群的采用,没有性能又是不行的。这里的悖论需要解决,要么,采用更加均衡的架构和共识机制,做一个平衡的取舍。要么,采用非区块链的数据结构或者中心化的方式来解决问题。
如果在区块链的前提下,要达成一个可以落地的方案。采取类似于DSC这样的共识算法,可以兼顾安全、效率以及公平,同时,通过一个比较灵活的设计,采用侧链和独立链的模式,允许这些链采用组件化的其他共识算法,实现不同场景下的不同最优选择。
可以预见,未来除了PoW、PoS、DPoS、PBFT、PoA、PoI……之外,还会有更多层出不穷的共识算法,这对于区块链发展的探索都是有益的。