陈会云 陈建
[收稿日期]2023-11-09
[摘 要]区块链是计算机金融领域的一项重要技术创新。它通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。共识算法解决了节点间相互信任的问题,是保障区块链系统不断运行的关键。文章主要基于共识过程提出共识算法的分类模型,并对各类型中具有代表性的共识算法进行详细分析,为共识算法的可能优化方向提出建议。
[关键词]区块链;共识算法;去中心化;一致性
doi:10.3969/j.issn.1673 - 0194.2024.10.057
[中图分类号]TP311.1[文献标识码]A[文章编号]1673-0194(2024)10-0-03
1 区块链简介
区块链最早作为比特币的底层技术而广为人知。比特币是中本聪发表的论文《比特币:一种点对点式的电子现金系统》中提出的一种点对点(Peer to Peer,P2P)形式的数字货币。它通过点对点分布式时间戳服务器生成依照时间排列并加以记录的电子交易证明,解决了双重支付问题。诚实的节点所控制的计算能力总和大于非诚实节点所控制的计算能力总和时,系统能安全正常运行[1]。比特币能满足去中心化、严格控制货币供给速度、预估货币流通总量以及有效遏制通货膨胀的需求。
区块链是由节点参与的分布式数据库系统,主要是指分布式共识架构。区块链有着去中心化、去信任设计,通过机密算法、时间戳、树形结构、共识算法机制和奖励机制,在节点无须信任的分布式网络中实现去中心化信用的点到点交易,解决了目前中心化模式存在的可靠性低、安全性低、成本高、效率低等问题[2]。分布式账本不同于传统数据库技术下的数字化所有权记录。这种账本能在点对点网络的不同节点之间相互复制,且各项交易均由私钥签署。区块链由一串使用密码学方法产生的数据块组成,每一个区块都包含了上一个区块的哈希值,从创始区块开始连接到当前区块,形成块链。每一个区块都确保按照时间顺序在上一个区块之后产生。区块链是比特币的核心创新,是比特币的基础支撑技术。它解决了在不可信信道上传输可信信息和价值转移问题,颠覆了传统的中心化模式,在不需要中心化信任中介的情况下,解决陌生人间的信任问题,大幅降低信任成本。
2 共识算法
共识(Consensus)算法是区块链技术的核心,是一种去中心化鉴定和验证交易的算法机制。它解决了区块链在分布式场景下的一致性问题,实现了节点间互相信任,降低了信任成本。共识算法理论是在拜占庭容错的分布式一致性算法基础上,根据具体业务场景传输和同步数据的通信模型。这种容错能力是区块链和分布式账本的一个主要优势。它允许网络机器节点连接起来运行,并在某些成员节点失效的情况下仍能继续工作。
共识机制的基本决定参数有去中心化治理、节点结构、身份验证、完整性、不可否认性、隐私性、容错性等性能。上述参数的一部分通过加密算法实现,使用数学方法来尝试确保安全性和隐私性,方法包括公钥、私钥、散列法以及分层确定性密钥。现阶段区块链中存在的共识算法主要分为8种:基于工作量证明的共识算法、基于股权证明的共识算法、基于股权授权证明的共识算法、基于领导者的共识算法、基于联合的共识算法、基于硬件的共识算法、基于拜占庭容错机制的共识算法和其他非主流共识算法。本文着重介绍当前的主流共识算法及其应用场景和优缺点。
2.1 基于工作量证明的共识算法
工作量证明(Proof of Work,PoW)指的是通过工作获得指定成果来证明曾经付出的努力的一种共识算法。区块链由各个区块按时间排序,用每个区块设立的评判标准验证区块的有效性,每个区块加入随机元素来调节记账难度。增加的成本就是工作量,求解哈希(Hash)难题是工作量证明[3]。比特币挖矿是通过计算出一个满足规则的随机数,获得本次记账权,同时发出本轮需要记录的数据,全网其他节点验证后一起存储。系统用工作量证明机制来分发资产,以鼓励用户挖矿,保障网络的稳定性。如果要生成新的区块并加入区块链,需要解答工作量证明函数、区块以及难度值。
工作量证明过程:生成比特币交易平台(Coinbase),并与其他所有准备打包进区块的交易组成交易列表,通过Merkle Tree(梅克尔树)算法生成Merkle Root Hash(梅克尔哈希根);把Merkle Root Hash及其他相关字段组装成区块头,不停地变更区块头中的随机数,对每次变更后的区块头做双重安全散列算法(Secure Hash Algorithm,SHA)256运算,对比结果值与当前网络目标值,如果小于目标值,则解题成功,工作量证明完成。其优势在于算法易实现,全网参与且节点自由进出,系统不易被破坏;劣势是安全性缺乏算力保障[4],资源浪费多,可监管性弱。
使用工作量证明共识算法的项目有比特币、莱特币、狗狗币、达世币、域名币、大零币(Zero Cash)、公正通和以太坊的前3个阶段。
2.2 基于股权证明的共识算法
股权证明主要包括权益证明(Proof of Stake,PoS)和基于保证金的经济激励共识协议(如Casper Protocol)两个具有代表性的共识机制,基本思想是产生区块的难度与节点所占的股权成比例。
PoS的主要思想类似财产储存在银行,根据用户数字货币的量和存储时间,给予一定的利息[4-5]。PoS算法在这些验证者中随机选取一个,给他们权利来产生下一个区块,如果一定时间内该验证者没有产生一个区块,则选出第二个验证者来代替产生新区块,以最长的链为准,用户就有机会产生新块而得到奖励。资源消耗减少、性能高、集权化风险减少、缩短了共识时间的优势和可监管性弱及受攻击影响的劣势共存。使用PoS的项目有以太坊的第4阶段。
Casper的基本思想是为验证人提供哪个区块会被最终确定的机会。Casper协议下的验证人需要完成出块和投注两个活动。出块过程:验证人收集交易,在其出块时间内制造一个区块并签名,发送到网络上。投注过程:下载所有的区块和投注,用算法形成但不公布意见,按顺序在每个高度进行观察,当一个块的概率高于0.5时就处理它,否则就跳过它,处理所有区块之后得到的状态可显示为区块链的“当前状态”。
2.3 基于股权授权证明的共识算法
授权股份证明机制(Delegated Proof-of-Stake,DPoS)是在PoS基础上提出的。在DPoS中成为一名代表,需要在网络上注册公钥,然后被分配一个32位的特有标识符,最终该标识符会被每笔交易数据的“头部”引用。在授权选票时,每个钱包有一个参数设置窗口,在该窗口用户可以选择一个或更多的代表,并将其分级。在抵抗攻击上,每名代表都有相同的投票权,无法通过获得超过1%的选票而将权力集中到一个单一代表上。这将使确定DPoS攻击目标更为困难。而代表之间的潜在直接连接将使他们生产区块变得更为困难。其优势在于大幅减少参与验证与记账节点数量和秒级共识验证。整个共识机制依赖于代币是其明显缺点。使用DPoS的项目有未来币、斯蒂姆币(Steem)和石墨烯协议(Graphene)。
2.4 基于领导者的共识机制
领导者共识是基于领导者的分布式一致性算法,主要包含基于信息传递的PaXoS(Probe-and-XOR of strings)算法、基于分布式的共识算法和验证池(Pool)算法。
PaXoS是基于消息传递的一致性算法,目前基于领导者的共识机制都是PaXoS的变种。该算法机制中有3种角色:申请者、接受者和学习者。申请者提交提案,接受者处理提案,学习者获取并执行已经通过审批的提案中的决议。一个节点可兼多重类型。申请者成为领导后向学习者发送决议,学习者接收广播、学习决议并执行任务。
分布共识算法中一个节点有3种状态:追随、候选和领导。追随者没有听取领导的意见时可成为候选人,从其他节点请求投票。节点以投票方式回复。如果从大多数节点获得投票权,则候选人成为领导者。如果两个节点同时成为候选者,可进行分组投票。
验证池是融入了数据验证机制传统主流的分布式一致性技术,适合多方参与的多中心模式。不需要代币和极大缩短共识时间是其优点,选举领导者过程中不允许出现错误节点和领导者的绝对权限使得安全性存在问题。验证池通常应用在布比区块链中。
2.5 基于联合的共识算法
联合共识是通过一个小团体共识达成全部共识,主要包括瑞波共识机制(Robust Principal Component Analysis,RPCA)和恒星链(Stellar)共识机制。
RPCA每隔几秒就能应用到所有节点,以保持网络的正确性和一致性。达成共识后,目前的分类账被视为“关闭”,成为最后一个分类账本。RPCA以回合方式进行。每个服务器将共识之前所有有效交易,包括由服务器的终端用户发起的新交易或以前共识过程中获取的交易等,以被称为“候选集”列表的形式公开,每个服务器合并唯一节点列表上所有服务器的候选集,并对所有交易的真实性进行表决,收到超过最低百分之百为“yes”票的交易将转交给下一回合。满足要求的所有交易均适用于分类账本,然后该分类账本关闭,成为新的最终分类账本。该算法消耗低且高效,可以人工手动去除网络中不安全的节点,维护网络的有效性和一致性。易于被攻击和可以伪造节点来攻击网络是其缺点。RPCA通常应用在瑞波币中。
联邦拜占庭共识算法(Federated Byzantine Agreement,FBA)是恒星协议中提出的共识机制。共识流程分为未知阶段、接受阶段和确认阶段。循环结构的出现与节点自身选取有关,可导致整个系统嵌入依赖循环。网络规模较大的时候,分布式数据一致性的收敛速度慢的问题就会越来越明显。
2.6 基于硬件的共识算法
基于硬件的共识算法中比较有代表性的是英特尔公司在Sawtooth Lake(锯齿湖)项目中提出的消逝时间量证明(Proof of Elapsed Time,PoET)。PoET是一种建立在可信环境基础上的彩票协议,通过英特尔公司的软件保护扩展来满足大量参与者的需求,是基于专门硬件的证明算法。每个验证器从可信任函数中请求一个等待时间,验证器利用短暂的时间为每个特别的交易区块选择一个领导。低参与成本增加了共识算法的健壮性。该算法节省算力和能耗,具有较强的有效性。但其运行环境不真正可信,不适用于生产环境。
2.7 基于PBFT及其派生方案的共识算法
实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)是为解决在分布式计算上达成共识时,因计算机出错等导致交换错误信息问题而产生的共识机制。PBFT是一种状态机副本复制算法。额外的副本除能降低性能之外,不能提高可靠性。PBFT解决了拜占庭问题,但比较耗费时间和资源。授权拜占庭容错算法(Delegated Byzantine Fault Tolerance,DBFT)是一种经过改进的拜占庭容错算法,能够适用于区块链系统,解决了投票中对记账节点真实身份的认证问题。
2.8 非主流的共识算法
非主流共识算法中的地理位置路由协议(Geographical and Energy Aware Routing,GEAR)将集体评估与轮转记账相结合,由轮转记账、群体评估和齿轮共识路由3个子协议组成,结合区块链数据构造和网络通信的特色,实现保险、高效、去中心化、应用场景灵巧的数据同步共识。
协议的参加者包括轮转见证人、一级集体评估人、二级集体评估人。一级集体评估人作为接入共识网络的用户,同时是使用者,按照其所持代币加权评估选举出轮转见证人,见证人依照等概率轮流记账。二级集体评估人是在评估事件产生时由轮转见证人转化而来,通过加权平均的亲近率掠夺一次记账机遇。
3 共识算法的可能优化方向
区块链技术在拥有广阔应用前景的同时存在很多问题,在共识算法上有很大的优化空间。现阶段没有一种共识算法是完美无缺的,共识算法的优化没有标准答案[6]。本文通过对现有共识算法优缺点的总结与分析,提出如下优化方向,以期为未来研究学习提供有益的参考。
(1)提高共识效率。区块链技术的应用及项目落地的关键因素之一就是应用系统的共识效率。现有共识算法可以满足商用实时处理的基本需求,但是对于高频交易量的应用场景还无法满足,因此提高共识效率是当前共识算法的首要优化任务,也是解决区块链项目落地问题的关键。
(2)共识机制模块化,接口标准化。Hyperledger Fabric项目提出了可插拔共识算法的模块化架构。共识机制与应用场景高度相关,整合不同的共识算法构建一个共识算法池,按照可插拔机制建立统一的接口标准,为共识机制的按需选用提供技术支持。
(3)具有智能性的共识算法。人工智能技术的发展使得机器有越来越多的自主行为,而区块链是一个无须信任的网络,是为机器经济服务的规模化共识机制。二者的结合将会带来前所未有的改变,可实现友好型的共识机制。
主要参考文献
[1]NAKAMOTO S.Bitcoin:A peer-to-peer electronic cash system[EB/OL].(2008-10-31)[2023-10-26].https://assets.pubpub.org/d8wct41f/31611263538139.pdf.
[2]沈鑫,裴庆祺,刘雪峰.区块链技术综述[J].网络与信息安全学报,2016(11):11-20.
[3]周邺飞.区块链核心技术演进之路:共识机制演进(1)
[J].计算机教育,2017(4):155-158.
[4]梁斌.从“比特币挖矿”看区块链技术的共识机制[J].中国金融电脑,2016(9):45-46.
[5]枯叶子.掰一掰区块链共识机制与分布式一致性算法[EB/OL].(2016-09-10)[2023-10-26].https://yq.aliyun.com/articles/60400.
[6]袁勇,王飞跃.区块链技术发展现状与展望[J].自动化学报,2016(4):481-494.