POW区块链共识算法分析与展望*
2019-12-11戴安博陈恭亮
戴安博,陈恭亮
(上海交通大学,上海 201100)
0 引 言
比特币[1](BitCoin)的概念最初在2009年由中本聪提出。该货币是一种点对点形式的数字货币,是一个去中心化的支付系统。比特币采用椭圆曲线非对称加密算法和工作量证明共识机制来保证货币流通的各个环节中的安全性。伴随着比特币的诞生,区块链技术受到了越来越广泛的关注。
区块链技术本质上是一个点对点的分布式数据库,其中各个节点通过共识算法维护区块链系统的一致性,实现不同节点之间的信任并计算各个节点相应的权益[2]。
为了构件高效、公平、稳定的分布式系统,区块链融合了共识算法,密码学,Merkle trees等多个技术,所以区块链是多个成熟技术的完美融合。这个成熟技术中,共识算法是解决区块链中一致性问题的关键。常见的共识算法有POW(Proof of Work,工作量证明)[3]机制、POS(Proof of Stake,权益证明)机制、DPOS(Delegated Proof of Stake,股份证明)机制和PBFT(Practical Byzantine Fault Tolerence,实用拜占庭机制)等。
POW共识算法作为比特币的共识机制,是区块链共识算法的先驱,有着十分庞大的市场规模和十分重要的应用地位,在当前公链共识算法中依然占有主导地位。POW机制是影响区块链性能和安全性的核心环节[4],有着十分重要的研究意义。
1 概 述
比特币采用POW算法实现共识,POW算法通过暴力破解方法解决一个数学难题,在参与hash计算后得到一个小于目标值的hash值。在比特币交易中,所谓矿工是指以计算机为手段,靠计算机的算力工作,获得相应的比特币奖励或者手续费的人。一个矿工不会验证一个单独的交易,而是将一些列的交易打包形成块,矿工通过计算其块的hash值进行验证[5]。比特币使用SHA-256算法。
1.1 POW安全性分析
在POW共识协议中,新币奖励和交易费保护了比特币网络的安全。如果一个贪婪的破坏者能够集中比诚实节点更多算力,即发动51%攻击,他将不得不在使用高昂算力进行欺骗和用其产生新币之间做出选择,从经济学角度考虑,遵守比特币系统规则所获利益多数情况下大于攻击带来的利益[7]。
随着计算机技术的发展,区块产生的速度也会相应的提高,区块间隔变短致使比特币网络中发生更多冲突,降低主链区块的产生速度,最终导致破坏者追上或者赶超主链,破坏系统。同时,由于在比特币系统中,利用旧块计算POW是不会产生新币奖励的,这将降低矿工的积极性,也减少了网络的安全性。所以,比特币每产生2 016个块就会对其挖矿难度进行调整[6],使其保持每个块的验证时间约为10 min,难度调整公式如下:
其中Tprev为旧的目标值,Tactual是产生上一轮2 016个块所花费的时间。
POW共识计算中,随机值Nonce是根据算力概率性更新并广播区块的,所以在及其微小的概率下,有可能两个都符合要求的Nonce值同时被算出。此外,由于网络延迟,区块也可能分叉,带来一系列的安全性问题。
1.2 POW机制缺陷
POW共识算法缺点主要有3个方面。
(1)资源浪费。挖矿需要大量的哈希运算,需要电力和各种算力资源,而且找到的哈希值实际上并没有任何的现实使用价值。
(2)网络性能低。因为POW共识算法限制比特币出块的时间是10分钟,所以交易确认至少需要10分钟,而且目前仅支持每秒7笔的交易速度,不适合高并发的商业应用。
(3)POW共识算法算力集中化。目前挖矿矿池是主力,个人矿工基本不可能生存下去,算力高的矿池有选择权,进而导致算力的集中化。
POW算法的核心矛盾:区块大小与出块间隔。增加区块容量可以提高吞吐量,但是区块过大会造成网络拥塞,增加节点间共识的时间和效率,反而可能降低区块效率;减小出块间隔也能增加吞吐量,但出块间隔的缩短会造成更频繁的链分叉,也会增加双花等安全问题。所以,随着公有链共识机制的发展,POW共识算法产生了许多变种,对其性能和安全性进行提升的方法可以归为两种,一种是在不改变POW工作量证明的的核心基础上,对链的增长方式进行改造,重新分配记账权,减小无序竞争和出块间隔;二是不对POW共识算法内容做修改,通过链下拓展机制,控制链上的交易量,提链的效率。
2 POW共识算法的链上拓展
Bitcoin-NG、Byzcoin和GHOST算法均采用工作量竞争作为核心共识机制,保留了POW算法的核心设计初衷,但对链的增长方式进行了巧妙地改造,增加了系统的吞吐量。
2.1 Bitcoin-NG
Bitcoin-NG是一个使交易流程序列化的区块链协议。Bitcoin-NG的关键理念是将时间单位化,将每一微单位的时间设置成单位时间。为此,Bitcoin-NG引入了两种区块:密钥区块与微区块。
图1为Bitcoin-NG区块链的链上结构。其中方形区块表示密钥区块,圆形区块表示微区块。
图1 Bitcoin-NG链上结构
2.1.1 区块划分
密钥区块:是用于选择领袖节点。一个密钥区块里应包含:前一区块头散列加密过的hash值、当前的系统时间、挖矿奖励机制、目标价值、独一无二的nonce值和用于生成后续微区块的公钥。
微区块:领袖节点通过密钥区块中的公钥生成微区块。一个微区块包含前一区块头散列加密过的hash值、当前的系统时间、自身账目的散列加密hash值和区块头的加密签名。
2.1.2 认证时间与分叉保护
当一个矿工挖矿成功并生成了一个新的密钥区块时,他并不能即时地知道前领袖节点是否生成了新的微区块,即当生成时间间隔短于密钥区块认证时间时,在原区块链上会出现短叉。
图2为微区块分叉情况示意图。从复杂密码问题被破解,到这一破解信息被认证并生成新的密钥区块B这一过程中,原先的领袖节点A生成了A4和A5两个微区块,因此密钥区块B的生成时间不是认证成功的时间,而应以密码问题被破解的时间为准,先于微区块A4和A5的生成时间。所以,这两个微区块并不能上链,而是要等待网络传播延迟,等待确认自身最终上链还是被修剪。
此外,由于微区块自身的创建不需要通过挖矿产生,他们仅仅可以通过领袖节点以更廉价和迅速的方式产生。因此,恶意节点可以让这些微区块针对每一个不同的机器重复发送不同的状态机状态。
图2 微区块短叉示意图
如图3所示,A1-A4对应着被同一恶意领袖节点控制的4个不同的微区块。他们分别一致地向3台机器发送信息。由于A1-A4重复传播不同的状态机状态,当这部分微区块逐渐增大时,便会使得这三台机器分别认为自己收到的状态是真实的。
图3 双花攻击示意图
为了减少此种攻击行为,Bitcoin-NG在交易流程中加入了一个专门的账目分录,这个帐目被称为“恶毒交易”。恶毒交易在恶意领袖节点欺诈行为过后与恶意领袖节点收入花费之前起作用。恶毒交易将使区块链产生分叉的报酬无效,同时也给当前领袖节点一部分奖励报酬,鼓励它终止欺诈的行为。
2.1.3 Bitcoin-NG安全性分析
为保证区块链系统安全稳定地运行,Bitcoin-NG协议需要使得所有少于1/4网络资源的矿工自发的遵守协议。Bitcoin-NG规定:前继领袖节点能够获得交易收入的40%,后继领袖节点能够获得交易收入的60%,但实际上前继领袖节点可以伪装创建微区块,以获取挖矿费用的100%。
表1 区块链安全分析变量
表1中,α表示该矿工算力基于区块链整体矿工算力的比值;rleader表示在一个交易过程中,前继领袖节点的密钥区块能够获取多大比重的收入。攻击者通过伪装微区块的方法获取的收入应小于正常挖矿的收入:
如公式(2)所示,左边为攻击者收入的收入期望值。如果攻击者挖矿成功,概率为α,收入全部报酬。如果攻击者挖矿失败,则他矿工挖矿成功概率为1-α。此时攻击者在新节点之后继续挖矿,获得的收入为α×(100%-rleader)。公式右边为正常挖矿的收入。
然而,矿工并不一定会在最长链尾挖矿,也可能在先前的非叶子节点的微区块上挖矿并获得更高收入:
如式(3)所示,左边为矿工选择在非叶子节点的微区块挖矿的收入。此时矿工生成一个分叉的微区块并获得rleader的报酬,随后矿工在这个微区块下继续挖矿,挖矿成功的概率也为α,作为后继节点挖矿成功的报酬为(100%-rleader)。
联立不等式(2)(3)组得到:
在的网络假设前提下,Bitcoin-NG的“40%-60%”报酬分配的方式可以完美地符合安全标准[7-8]。
2.1.4 Bitcoin-NG性能分析
首先是吞吐量,Bitcoin-NG对于吞吐量的提升有限,大概可以提升到比特币的30~60倍,吞吐量峰值可以达到200~400 tps。对于延迟,理论上交易一旦被打包到微块中,交易就已经被确认了,但系统仍然存在分叉的可能,最终确定还是需要等待几个核心块时间,即大多数交易的延迟是10多秒,对于重要的交易,要想确保交易百分百不会被修剪掉,需要等待几个100秒。
2.2 Byzcoin
Byzcoin与Bitcoin-NG在设计上有些类似,由关键区块和微区块组成。发现关键区块的矿工称为领导者,由关键区块生成的包含交易的区块称为微区块。Byzcoin交易特点如下。
(1)关键区块生成微区块,微区块需要发送给共识小组进行联合签名,验证交易真实性。
(2)共识小组的成员由近期发现关键区块的矿工组成,微区块只有在大多数矿工签名的情况下才能通过验证,防范双花攻击。
(3)包含交易的区块并不需要经过POW验证,这些区块由对应的领导者负责,发送给共识小组签名。
Byzcoin也通过POW机制选取出块者(领导者),这一点与Bitcoin-NG是一致的,实现了共识和交易的分离。Bitcoin-NG中,出块者发出的交易是未经验证的,Bitcoin-NG中所有节点需要在同步交易之后验证交易的有效性,并通过“40%-60%”报酬分配方式控制交易合法性。但Byzcoin引入了拜占庭容错算法(BFT),在不信任的网络中建立节点间的信任,完成即时的、不可逆的可信任交易。
BFT算法目前广泛应用于联盟链的共识机制,Byzcoin将POW算法与BFT算法融合,在Bitcoin-NG的基础上,以向后兼容的方式整合至比特币系统,对吞吐量有了进一步的提升,大大的降低了交易延迟,使整个网络在1MB区块容量下,每秒交易处理量达到100多个,同时也提升了交易的安全性。
1)在Bitcoin-NG中,领导者一旦掌权就很有可能行为不端,而在Byzcoin协议中,一旦发现有欺诈行为的领导者,矿工就能进行投票,票数超过67%阈值就能取消这位领导者的资格,他作为领导者的经济奖励也会被全部取消。
2)传统POW机制,一旦区块奖励取消,矿工的收入来源就只能是交易手续费,这种情况很可能带来潜在的攻击风险,而Byzcoin协议提出了延迟奖励的概念,挖矿奖励将按日或按月发放,防止了由于区块奖励取消导致的各种攻击。
2.3 GHOST
贪婪子树协议(GHOST,Greedy Heaviest-Observed Sub-Tree protocol)起源于以太坊共识算法中链分叉的问题。
在以太坊网络中,出块时间从10 min提升到15 s,链分叉出现的更加频繁,如果以太坊使用和比特币一样的POW共识机制,算力较小的矿池几乎拿不到出块奖励,长此以往,算力小的矿工会拒绝将自己挖出的区块合并到算力强的矿工挖出的区块链中,因为合并就意味着前面的劳动全部白费了,还不如继续在自己挖出的区块上挖矿,或许能超过算力强的区块。很明显,这样下去不利于区块链出现分叉后快速合并,基于上述原因,以太坊的设计中引入了GHOST。
如果说Bitcoin-NG与Byzcoin采用了将共识和交易的分离的方法提升工作量证明共识方式的性能及安全性,GHOST则进行了另外一种尝试:改变工作量证明共识方式中的主链选择机制。
GHOST选择最长链的时候不以哪条链区块连续最长为标准,而是将分叉区块也考虑了进去,选择出一条包含了分叉区块在内区块数目最多的链作为最长链。如图4所示。
图4 GHOST主链选择
在上图的分叉情况中,在比特币公链中,最终胜出的是链:0 - 1 - 2A - 3A - 4A - 5,一条由最长链规则选择的链。而在以太坊公链中,由GHOST得出的最终胜出的是:0 - 1 - 2B - 3C - 4B - 5 。原因就是在上面的分叉情况中,GHOST把分叉区块也考虑进去了,统计总的区块数,发现在包含了区块:0,1,2B,3B,3C,3D,4B的链是含有区块数最多的,因此该链胜出,这就是GHOST选择最长链的机制。
此外,对于在最长链中被包含进去了的造成链分叉的块,GHOST协议对它们也有一套处理机制:
(1)孤块,完全没用的块,挖出的矿工没任何收益。比特币链中的分叉块都是孤块。
(2)叔块,被一定范围内的后续子块所打包收纳的块,挖出叔块的矿工会按照一定算法给予收益。
可以看出,GHOST协议并没有改变POW共识机制的出块方式,只是在主链选择上引入了孤块和叔块的概念,对POW共识机制中低性能的主链选择方式和进行修改,提高了个人矿工和小矿池的挖矿积极性,在减少了时延的基础上减少了算力的浪费。
3 POW共识算法的链下拓展
针对POW的共识方式,链上拓展对性能的提升十分有限,无法满足商业应用的需求,很多研究人员把目光投向了链下拓展方式,通过改变区块链交易的拓扑结构,减少了POW共识的工作量,从数量级上提升了链的性能。
3.1 闪电网络
闪电网络核心的思想是设计了链下支付通道,通过链下支付通道可以进行多次交易而不需要在链上记录。用户每次在链下完成交易时用自己的私钥签名来更新自己的资产负债表,只在通道关闭时根据最近签名的资产负债表来分配资金,同时将初始余额和最终余额的相关信息广播到区块链上[9]。
为实现闪电网络的链下支付通道的建立和使用,闪电网络建立了RSMC(Recoverable Sequence Maturity Contract) 和 HTLC(Hashed Timelock Contract)的概念来保障其支付通道的建立和使用。RSMC保障了两个人之间的直接交易可以在链下完成,HTLC保障了任意两个人之间的转账都可以通过一条“支付”通道来完成。闪电网络有如下特点与优势。
(1)交易速度与吞吐量提升。闪电网络可以即时完成交易而不受制于传统区块链网络的交易确认速度,对于批量交易只进行最终的链上确认,提高了吞吐量。
(2)交易费用低并支持跨链交易。闪电网络通过链下交易,无需信任第三方中介可实现跨链交易,降低了每一笔交易的平均手续费,有利于小额交易的应用。
(3)具有安全性和匿名性。闪电网络建立了安全的支付通道,通过私钥签名和保证金制度来确保用户的资金安全;同时,交易是在链下进行,也使得所有微支付几乎无法被追踪。
闪电网络虽然提高了区块链的吞吐率,但是也随之带来一些安全风险和问题:
(1)在线收款风险。收款人在收款之前需要签名回收交易,以便付款人知道他们可以在发生恶意通道关闭或拒绝签名的情况下回收资金,因此,要收款就需要一个热钱包,而热钱包有用户私钥泄露的风险。
(2)监控通道风险。闪电网络参与者或服务商需要主动监控支付通道,这会给用户或服务商带来负担,并降低通道内资金的安全性。同时可能会产生监控疏忽或链上网络拥堵导致的错过回收交易截止日期的情况。
3.2 分片共识机制
分片技术是一种基于数据库分片传统概念的扩容技术,它将数据库分割成多个碎片并将这些碎片放置在不同的服务器上。在公链情境中,网络上的交易将被分成不同的碎片,因此,每个节点只需处理自己片区的少量交易,并且通过与网络上其他节点的并行处理,可以能完成大量的验证工作[10-11]。当前分片技术主要分为以下3种。
(1)网络分片
网络分片是最基础的一种分片方式,通过将整个区块链网络划分成多个子网络,每个子网络形成一个分片,在网络中的所有分片并行处理网络中不同的交易。通过可验证随机函数(VRF),网络可以随机抽取节点形成分片。随机抽样的方式可以防止恶意节点过度填充单个碎片,同时,通过共识机制确保同一个分片中不同成员意见的一致性。
(2)交易分片
交易分片的前提是已对当前网络进行分片。在基于UTXO的账本系统中,可以通过交易的哈希值的最后几位进行分片,已达到分片的随机性。为了避免恶意交易发起者发起双花交易,必须创建一个账户系统,每一笔交易有一个发送者的地址,系统可以根据发送者的地址分配一个碎片,这确保了两笔双花交易将在相同的碎片中得到验证,因此系统可以很容易地检测到双花交易,而不需要进行任何跨碎片的通信。
(3)状态分片
状态分片的关键是将整个存储区分开,让不同的分片存储不同的部分,每个节点只负责托管自己的分片数据,而不是存储完整的区块链状态。状态分片可以减少状态的冗余存储,使得整个区块链网络具有存储的可扩展性。
4 POW共识算法性能分析
较为常见的公链共识算法有有POW、POS、DPOS等。随着公链技术的发展,又出现了POSpace和POSt等新型共识机制,但他们目前的市场占有率较低,很多还没有做到市场化,但却代表着公链共识机制的拓展方向。本文以传统的POW、POS和DPOS以及新型共识代表POSpace、POSt为例,对它们的性能进行对比分析,展示POW共识机制的优劣势[12-14]。
权益证明(POS,Proof of stake)[15]是一种依赖于验证者在网络中的经济利益的公有链的共识算法。在基于权益证明机制(POS)的公链中,每一位验证者投票的权重取决于自身股权。简单来说,股份越多,挖矿越容易。
股份授权证明(DPOS,Delegated Proof of stake)又称为“股东代表机制”,将拥有一定数量的代币的每个节点看作为股东,股东根据持有的代币的数量投票选出定量的节点作为代表,轮流生成区块,如果一些代表在生成区块过程中发现了问题,股东将会重新投票并选取新的代表进行替换。
空间证明(POSpace,Proof of Space)利用计算机硬盘中的闲置空间进行存储来进行挖矿获取收益,硬盘空间越大,存储的内容越多能获得的代币奖励也就越多。POSpace挖矿门槛较低,去中心化程度较高,能源消耗较小[16]。
时空证明(POSt,Proof of Spacetime)是Filecoin项目采用的共识机制,POSt本质上是存储证明的一种,使用一段时间内节点存储的数据本身作为算力大小的证明,在POSpace基础上增加了时间段的概念。
表2是五种共识算法的性能对比。
表2 共识算法对比
5 POW共识算法展望
POW共识算法作为比特币的共识机制,在当前市场上仍然占有主导地位,以闪电网络为代表的拓展方式使得POW共识机制在未来商业中更广泛的应用出现了可能。
但POW算法的核心矛盾,即吞吐量与安全性的矛盾给POW算法的发展带来了困难。当前,越来越多的目光投向了BFT(Byzantine Fault Tolerance,拜占庭容错算法)算法与联盟链技术,各国监管部门对去中心的公链体系一直持谨慎的态度,这使得POW算法的市场化受到了重挫,未来POW算法的发展会围绕可监管性展开,POW与BFT的融合是大势所趋[17]。
6 结 语
文对POW共识算法的技术特点及其拓展升级进行了详细的综述介绍,首先对POW共识算法的工作量证明机制加以分析,指出其优缺点,随后介绍了针对这些优缺点的性能拓展算法。本文将拓展算法分为链上拓展方式和链下拓展方式,介绍了包括Bitcoin-NG、Byzcoin和GHOST三种POW算法的链上拓展方式和闪电网络、分片机制两种POW算法的链下拓展方式,分析了每种拓展方式对POW共识算法性能和安全性的提升。接着本文将POW共识算法与其他公链共识算法进行比较,展示了POW共识算法的性能特点。最后,本文对POW共识算法的未来进行了展望。