前言
共识机制是区块链的重要要素之一,也是分布式账本正常运行的核心规则,主要用于解决人与人之间的信任问题,以及在区块链系统中决定谁负责生成新区块并维护系统的有效统一,因此成为了区块链领域恒久不变的研究热点。
本文从共识机制的概念和作用入手,首先让读者对共识机制整体有一个初步的认识;然后从两军问题和拜占庭将军问题出发,按照共识机制提出时间的先后顺序介绍了共识机制的发展沿革;接着对目前主流的共识机制从概念、工作原理和代表项目三个方面进行了简单的介绍,并对主流共识机制的优势和劣势进行对比;最后对区块链项目如何选择共识机制给出了建议,并指出了共识机制未来发展的可能性趋势。
目录
一、共识机制的概念和作用
1.1 概念:分布式账本正常运行的核心规则
1.2 作用:解决信任问题,决定新区块的生成和维护
1.2.1 用于解决人与人间的信任问题
1.2.2 用于决定在区块链系统中谁负责生成新区块并维护有效统一
1.3 共识算法的主流模型
二、共识机制的缘起
2.1 两军问题与拜占庭将军问题
2.1.1 两军问题
2.1.2 拜占庭将军问题
2.2 共识机制发展史
2.2.1 共识机制分类
2.2.2共识机制发展前沿
三、常见共识体制
四、共识机制的选择与现状总结
4.1 如何挑选一个适合自己的共识机制
4.1.1 判断最终结果是否很重要
4.1.2 判断申请流程需要有多快
4.1.2 判断应用对去中心化的需求程度
4.1.3 判断系统是否可以终止
4.1.4 优劣权衡后选择适合的共识算法
4.2 共识机制的未来发展
第三章 常见共识机制(下)
图6 相对主流的共识机制归纳
来源:Hasib Anwar, “Consensus Algorithms:The Root Of The Blockchain Technology”
上图为一名极客Hasib Anwar归纳的其中14种相对主流的共识机制,包括PoW(工作量证明)、PoS(权益证明)、DPoS(委托权益证明)、LPoS(租用权益证明)、PoET(过去时间证明)、PBFT(实用拜占庭容错)、SBFT(简单拜占庭容错)、DBFT(委托拜占庭容错)、DAG (有向非循环图)、Proof-of-Activity(活动量证明)、Proof-of-Importance(重要性证明)、Proof-of-Capacity(容量证明)、Proof-of-Burn (燃烧证明)、Proof-of-Weight (重量证明)。
接下来,我们主要针对目前区块链最主流的十大共识机制进行介绍分析(下)。
》DBFT
- 概念:
授权拜占庭容错。改进的拜占庭容错算法,使其能够适用于区块链系统。该系统由节点、委托人(谁可以批准区块)和发言人(谁提议下一个区块)组成。是一种在NEO区块链内部实现的保证容错的共识算法。
- 实现原理:
在这个机制当中,存在两个参与者:专业记账的“记账节点”和系统当中的普通用户。
普通用户基于持有权益的比例来投票决定记账节点,当需要通过一项共识时,在这些记账节点中随机推选出一名发言人拟定方案,然后由其他记账节点根据拜占庭容错算法,即少数服从多数的原则进行表态,如果超过66%的节点表示同意发言人方案,则共识达成;否则,重新推选发言人,重复投票过程。
- 代表应用:Neo等
》PoA
- 概念:
权威证明。即由一些经认可的账户认证的,这些被认可的账户称为“验证者”(Validator)。验证者运行的软件,支持验证者将交易(transaction)置于区块中。
- 实现原理:
三个条件:
1、身份必须在链上得到正式验证,信息可在公有可用域中交叉验证;
2、其资格必须难以获得,这样所得到的验证块的权利才足够珍贵;3、建立权威的检查和程序必须完全统一。
使用 PoA,每个个体都具有变成验证者的权利,因此存在一旦获取就保持验证者位置的动机。通过对身份附加一个声誉,可以鼓励验证者去维护交易的过程。因为验证者并不希望让自己获得负面声誉,这会使其失去来之不易的验证者地位。
- 代表应用:VeChain等
》DAG
- 概念:
有向无环图。DAG中每个新加入的单元不仅仅只加入到长链区块,而是加入之前的所有区块,验证每一个新单元并且确认其父单元以及父单元的父单元,慢慢的可以达到创世单元,并且将其父单元的哈希包含到自己的单元内,随着时间的递增,所有交易的区块链相互连接形成图状结构。
- 实现原理:
在DAG的网络中,每一个节点都可以是交易者和验证者,因为DAG中的交易处理,正是由交易节点本身来共同完成。以IOTA为例,IOTA的Tangle账本在保证高速处理交易的同时,并不需要支付交易费用。不过并不代表交易是免费的,因为在这个账本中,每一笔交易的发起都需要先验证另外两笔随机交易,并将自己发起的交易指向这两笔交易,这样在区块链上矿工所承担的责任就分配给了所有的交易者。DAG这种处理交易的方式,可称作为异步处理模式。
图10 传统区块链结构与DAG结构区别
- 代表应用:IOTA等
》PoET
- 概念:
消逝时间量证明。即通常用于许可区块链网络,它可决定网络中获得区块者的挖矿权利。许可区块链网络需要任何预期参与者在加入前验证身份。根据公平彩票系统的原则,每个节点具有同等的可能成为胜出者。
- 实现原理:
网络中的每位参与节点都必须等待一个随机选取的时期,首个完成设定等待时间的节点将获得一个新区块。区块链网络中的每个节点会生成一个随机的等待时间,并休眠一个设定的时间。最先醒来的节点,即具有最短等待时间的节点,唤醒并向区块链提交一个新区块,然后广播必要的信息到整个对等网络中。同一过程将会重复,以发现下一个区块。
两个因素:
1、参与节点在本质上会自然选取一个随机时间,而非刻意选取;
2、胜出者的确完成了等待时间。
- 代表应用:HyperLedger Sawtooth等
》PoSV
- 概念:
权益流通证明。由Reddcoin提出,借鉴经济学“货币流通速度”的概念,主要是根据节点参与竞争的币龄分配记账权。
- 实现原理:
PoSV同样根据节点参与竞争的币龄分配记账权,但是将币龄的计算公式修改为增长率指数衰减的函数。以Reddcoin为例,Reddcoin将币龄增长率的半衰期设为1个月。假设单位通证在第1天能够积累1CoinDay币龄,在第31天只能积累0.5CoinDay币龄,第61天只能积累0.25CoinDay币龄,以此类推。通过这种方式促使节点在持有通证一段时间后用它进行一笔交易,从而重新开始计算币龄,提高网络中通证的流通速度。
- 代表应用:Reddcoin等
表2 目前主流共识机制优劣对比
来源:网络资源整理
第四章 共识机制的选择与现状总结
4.1 如何挑选一个适合自己的共识机制
步骤1:判断最终结果是否很重要
对某些应用程序来说,最终结果非常重要。如果你在新建一个新的能够支持非常小额的支付系统,那么交易结果发生变化是可以接受的。同样,如果你在新建一个分布式社交网络,100%保证状态立即更新也不是特别必要。相反,如果你在新建一个分布式协议,那么最终结果对用户体验就至关重要。比如,比特币大约有1个小时的最终确认时间,以太坊有大概6分钟的最终确认时间,而Tendermint Core仅1秒的最终确认时间。
步骤2:判断申请流程需要有多快
如果你正在构建一个游戏,如果需要在每个动作前等待15秒是否合理?由于以太坊区块处理时间很低,游戏建立在上面会因为以太坊的吞吐量导致用户体验较差。但是,转让房屋产权的申请就完全可以在以太坊上运行。使用Cosmos SDK构建一个允许开发人员使用Tendermint Core开箱即用的应用,它具有较短的区块处理时间和高吞吐量,能够达到每秒处理10,000交易事务。你可以通过为应用程序设置最大验证器数来达到减少需要的通信开销并加快应用速度的目的。
步骤3:判断应用对去中心化的需求程度
一些应用如游戏可能并不要求非常高的作为去中心化副产品的审查阻力。理论上,验证者能够在游戏中创建卡特尔并逆转交易结果以获取利润真的重要吗?如果不重要,诸如EOS的区块链可能更适合你的需求,因为交易速度快且无需支付费用。但是,一些如自治银行类的应用越强大就会越分散。尽管以太坊被认为是分散的,但有些支持者声称以太坊的矿池是平台中心化的重要一点,虽然实际上仅有11个验证器(矿池)。建立自己的区块链而不是在智能合约平台上构建的其中一大好处是你能够定制应用完成验证的方式。但是,构建自己的区块链很难,因此Cosmos SDK就非常有用,可以轻松构建自己的区块链并定制自己需要去中心化程度。
步骤4:判断系统是否可以终止
如果你正在新建一个类似于分布式共享乘车服务的应用,那么确保全天候服务必须是首要优先级,即使在会计中偶尔会出现类似于交易上的错误。Tendermint Core的其中一个属性是,如果网络验证者之间存在分歧,那么网络将暂停运营而不是进行错误的交易。像去中心化交易所这类的应用要求不惜一切代价来保障正确性——如果出现问题,去中心化交易所暂停交易远比可能出现交易问题好得多。
总结:优劣权衡后选择适合的共识算法
总而言之,没有单一的最佳共识算法,每个共识算法都有自身存在的意义和优势,你需要有自己的判断和取舍。但是,通过了解共识机制的相关流程,包括提案和协议,并建立一个框架来考虑你的应用可能需要的共识算法类型,就应该能够做出更明智的决定。
4.2 共识机制未来发展
共识算法是区块链的核心要素之一,虽然文中列举了超过30种共识机制,但还有很多小众的共识机制可能并未加以讨论。而随着区块链技术逐渐被大众所知且接受,未来可能会有越来越多的更新更优良的共识算法出现,可能是全新的共识算法,更多的应该是对现阶段共识算法的改良和优化。
在经历过16年和17年百花齐放的时期后,目前的共识算法没有一个公认的评价标准,只是一般更偏向公平性和去中心化的程度,以及部分技术相关问题,比如耗能、可拓展性、容错性和安全性等。但区块链技术必须要结合需求和应用场景落地,且共识机制算法和激励机制密不可分,如何针对自己项目的特性定制适合的共识机制以及优化目前的共识机制,将成为未来共识机制研究的发展方向。
网友评论