APP下载

比特币扩容技术的发展现状与展望

2019-04-01赵运磊

计算机应用与软件 2019年3期
关键词:比特容量区块

常 兴 赵运磊

1(复旦大学软件学院 上海 210203)2(复旦大学计算机科学技术学院上海市数据科学重点实验室 上海 210203)

0 引 言

2008年末,有人用中本聪(Satoshi Nakamoto)的化名发表了一篇论文[1],介绍了一种在没有可信任第三方参与的情况下,实现完全对等、安全的新型电子现金系统,该系统称为比特币。比特币这项技术组合了密码学、工作证明和点对点网络等技术[2],创新地提出了一种分布式时间戳服务器,可用于分布式系统中数据的有序存储,这项技术在之后被称为区块链(Blockchain)。

在论文发表后的短短几周,第一个版本的比特币就已经开发完成并发布,最开始仅仅由少数技术爱好者构成的网络来充当矿工处理交易,创始区块(Genesis Block)得以被挖出(Mining)。直到今天,中本聪的真实身份仍然难以捉摸、无迹可寻,但他所创造的比特币,在市场价格的激励下,几乎发生了天翻地覆的变化,强有力地引领了新技术变革浪潮的到来,让人们进入了“机器信任”的时代。

比特币可以被认为是第一个真正意义上实现了全球化流通的数字货币。在过去的几年里,已经从依靠少数技术爱好者支撑以存活,发展成为拥有全球规模的数字支付系统,整个资产价值也超过了1 100亿美元。比特币成功的关键在于其去中心化(Decentralization)、匿名性(Anonymity)、不可篡改性(Non-tamper)等特点[3],实现了对社会信任机制的颠覆。是一个包容、开放(Openness)、无需许可(Permissionless)便可自由参与的全球化系统。在这里,用户可以自由进出,也可以通过提供交易验证与打包区块,来获得一定的系统奖励。比特币与传统记账机制所完全不同的是,在这里记账不再由可信中心化实体来执行,而是由网络中所有参与者,通过在分布网络中的协作来完成。需要特别指出的是,虽然系统中存在有一定量的恶意参与者,但这丝毫没有影响到比特币账本的完整性、正确性与不可篡改性。

近年来,随着比特币市场热度的不断攀升[4],价格持续增长的同时,随之而来的是交易量井喷式的爆发(图1显示了自2009年以来,比特币网络中每天确认的交易数量,不断上升并趋近于饱和的现象[5])。现阶段,比特币网络的处理速度约为每秒7笔,远不能够满足日常生活需求,更不用说适应工业化发展的需要。与其他新技术从诞生到成熟所经历的过程一样,比特币还需要有一系列挑战亟待解决[6],在本文中主要阐述、分析了比特币的容量、吞吐量与可扩展性这一主要瓶颈的解决方案。

图1 自2009年以来,比特币网络中每天的确认的交易量

1 关于容量的争论

比特币每秒约7笔的处理速度,一直被社区用户诟病,比特币网络交易拥堵的情况时有发生,更有甚者交易发出24小时后还没有被打包确认,类似现象随着比特币价格的攀升以及区块链市场用户量的激增而愈演愈烈。

比特币网络的交易处理能力,受到了10分钟平均出块时间和1 MB区块容量的限制。近年来比特币不断增加的关注度,使得区块容量这一瓶颈完全暴露无疑,导致了过高的交易费用以及较长的交易处理延迟。需要说明的是,提高比特币网络的交易处理能力,需要对比特币系统现有的架构进行改进,这里的软件更新过程不同于普通软件升级方式,被称为分叉,同时,分叉有两种不同的类型。

(1) 硬分叉(Hard Fork) 硬分叉是比特币规则的一种大的变动,区块结构可能会因此发生变化。分叉后的矿工,根据新规则所产生的区块,在依据旧规则验证区块的节点下,被视为无效。所以在硬分叉时,所有按照旧规则工作的节点都需要升级它们的软件版本。如果一组节点继续使用旧软件,而其他节点使用新软件,则可能会发生区块链被分裂为两个同源链的现象。

就以太坊2016的硬分叉为例来说,在被黑客利用代码漏洞攻击发生盗币事件后,DAO[7]社区希望用分叉的方式来找回这部分丢失的以太币,但这与区块链“去中心化”的愿景相违背。所以以太坊硬分叉派与以太坊经典派产生了激烈的争论,双方始终没有达成一致共识,导致各自在自己认为正确的链上进行挖矿。事件发展的最后是以太坊的分裂创建了以太坊(Ethereum)和以太坊经典(Ethereum Classic)两条同源链。对于比特币而言,比特币现金[8](Bitcoin Cash)是比特币最大的硬分叉币,并一度有传闻称其价格属性最终将超过比特币。

(2) 软分叉(Soft Fork) 与硬分叉相比,软分叉是在不影响区块结构的情况下,一种规则的微调,它创建了被旧软件识别为有效的区块,即它是向后兼容的,软分叉一般不会产生永久性分叉的链。隔离见证(Segregated Witness)就是软分叉的一个例子。

硬分叉与软分叉的区别示意图如图2所示。

图2 硬分叉与软分叉的区别示意图

关于比特币的扩容改进方案,代表不同利益集团的不同组织持有不同的态度,虽然在全球范围内举办了多场不同的技术高峰会议来讨论具体的实施方案,并由此展开了激烈的讨论,但仍然很难达成一个统一的共识。这场争论也被称为“比特币未来的思想斗争”,主要有三方面的提案相持不下:

(1) 以比特币核心开发团队(Bitcoin Core)为代表的软分叉方式。团队指出可以用隔离见证和闪电网络(Lightning Network)的方法进行扩容,也就是说在不改变区块容量1 MB限制的情况下,通过第二层闪电网络来加速处理比特币小额度、高频次交易,从而达到提高用户之间交易确认速度的目的。

(2) 以Gavin (Gavin Andresen,2014年之前比特币首席开发者) 为代表的硬分叉方式。Gavin等主张比特币区块的容量限制应当用市场行为来确定,也就是说随着比特币参与者和使用者的不断增多,区块容量也需要随之增大,这个行为和数值应该由市场因素来决定。由于比特币需要进行的是硬分叉,从字面意思来看的话,用户更多会把这类型的分叉与以太坊的硬分叉类比,直接分成两种币,从而引起市场的恐慌。

值得一提的是,Gavin曾是比特币核心开发团队中的一员,并且素有 “中本聪接班人”之称。在Gavin接手比特币核心代码后,中本聪逐渐销声匿迹,不在社区发声。考虑到公平性,Gavin组建了维护比特币核心代码的Bitcoin Core团队,但由于内部意见的分歧,Gavin和其本人主张的比特币硬分叉扩容方案被排斥在外。

(3) 在硬分叉和软分叉争论观点不相上下时,有人提出更为折中的处理方法,即在利用闪电网络的同时,增加主链区块的容量限制(SegWit2X)。这种方法得到社区众多人的支持,并认为是其能打破比特币网络长期存在的扩容僵局。在2016年2月举办的香港比特币扩容圆桌会议上,Bitcoin Core团队和中国矿工达成共识,在将主链提高到2 MB的同时利用闪电网络来处理交易。

但在协议签署不久,比特币核心开发团队Bitcoin Core便违反了所签署的协定,拒绝执行2 MB的扩容计划,双方再次陷入了不断争论的僵局。

2 扩容技术总结

在本节中,主要分析了现有的5种比特币扩容技术:支付通道、隔离见证、提高区块容量限制、多重签名、聚合签名,并对它们的实现方式进行了简要的阐述。

2.1 支付通道

支付通道(Payment Channels)是运行在比特币网络上的二层结构,允许参与的双方直接建立彼此间点对点的支付渠道。参与方可以安全地维护和更新彼此间私有账本,这样他们在通道内的交易就不需要写入区块链。需要指出的是,交易过程中,支付通道的中间状态也可以随时写入比特币账本。支付通道避免了直接在比特币上进行交易,因此可以显著提高容量、可扩张性、交易吞吐量。通道内的交易处理速率仅受参与方的网络带宽限制,而不需要考虑比特币网络的拥堵情况。支付通道的另一个优势是它们不需要比特币矿工的直接服务,因此可以以极低的的交易费进行,可以经济地执行比特币用户间的微额支付。

通道建立开始时,在此通道中的初始存款交易总金额必须置于比特币网络的托管中,这种担保的出发点在于,如果发生支付纠纷或需要提取存款,当前双方同意的最新账本状态可以直接提交给区块链,每一方都可以合理地进行资产诉求。通过支付通道,可以在不信任第三方机构的情况下,保证参与节点的安全、瞬时交易,这对于比特币网络中的小额交易尤为有效。现有的支付通道主要是应用比特币中的多签名(Multisig)与时间锁定(Time Locks)机制来实现的。根据不同的技术指标与实现特性,现有的支付通道可以归结为以下几个版本:

(1) 双向微型支付通道 双向微型支付通道(Duplex Micropayment Channels),是由Christian Decker与 Roger Wattenhofer在文献[9]中首先提出,主要利用了比特币交易的时间锁定机制(时间锁定的交易可以在被包含于区块中后,未来10天内触发)。同时,比特币改进建议书BIP 68[10]和BIP 112[11]中定义的脚本操作码OP_CHECKSEQUENCEVERIFY将更有助于设计此类支付通道,保证瞬时支付而没有任何交易确认延迟。

(2) 闪电网络 闪电网络,是由Joseph Poon 与Thaddeus Dryja在文献[12]中首次提出的,也是目前发展前景最好、影响力最大的支付通道。与双向微型支付通道类似,允许参与的用户执行比特币链下支付,但其实现方式不是利用时间间隔,而是依靠惩罚机制来促进用户的诚实行为。如果一个节点广播恶意交易,那么诚实的参与者就可以合法地索取相关闪电网络内的所有资金,这有力地保证了多个参与方,在公平、公正的情况下进行交易。闪电网络的测试版本最早在2017年1月正式对外公布、开源,并在同年12月发布了标准版,由于篇幅限制,这里不对其实现的具体细节展开论述,有兴趣的可以参考文献[12]。

(3) 雷电网络 雷电网络[13](Raiden Network),是一项现阶段正在开发的项目,旨在实现与闪电网络相同的目标,但其原理是基于以太坊智能合约(Smart Contract)。根据有关数据的统计,使用雷电网络的交易成本预期估计要低于现有以太坊区块链7个数量级,这将为小额支付的蓬勃发展铺平道路。同时,由于以太坊区块链支持创建自定义类型的代币(Token),因此,通过标准代币生成协议所生成的代币,雷电网络将为任何代币提供低成本的链下交易功能。

(4) 精灵网络 精灵网络(Sprites Network),是由Andrew Miller等在文献[14]中提出的,是基于以太坊设计的支付通道。它的设计也受到了闪电网络与雷电网络的启发,但目标是尽量减少链下支付交易的抵押成本,将闪电网络在最坏情况下抵押开销的复杂度从O(1Δ)降到了O(1+Δ)。精灵网络的优势有两方面,一是减少了支付通道的抵押成本,二是支持部分资产的存入与取回,并在这个过程中用户可以继续操作而不需要中断。

2.2 隔离见证

隔离见证,是比特币的交易格式的软分叉修正,在比特币的改进建议书BIP141[15]“隔离见证-共识层(Segregated Witness-Consensus Layer)”中被提出,目的是一方面解决比特币中存在的延展性攻击[16-18](Malleability Attacks),另一方面也旨在缓解因区块容量限制(Block Size Limit)而引起的容量、可扩展性、吞吐量问题,从而优化比特币交易的处理速度。

在隔离见证引入之前,交易中的每个发送者(Sender)数据都跟着解锁它的见证数据[19](Witness Data),见证数据作为每个发送者数据的一部分嵌入到交易中,参与了交易的标识(Transaction ID)的计算。

隔离见证,简单来说是从比特币交易中分离出见证数据的区块结构改变。通过将比特币交易见证数据从原始交易中移出,并作为单独的结构添加到区块中,原始部分发送者和接收者的数据,将继续保存在原有有区块的位置。

由于区块的头部,与改变位置的见证数据结构无关,这意味着见证数据将不会被区块链做防篡改性保护,所以需要将见证数据重新添加进当前区块结构,以达到防止见证数据被任意篡改的目的。在这里,考虑到每个区块的第一笔交易是Coinbase交易[20](用于设置矿工的账户地址,从而将成功挖矿的奖励发送到矿工账户),可以把通过Merkle树[21](Merkle Tree)处理过后的见证数据,将其Merkle树根(Merkle Tree Root)放进Coinbase交易中。当见证数据被篡改时,首先改变了见证数据的Merkle树根值,从而影响了Coinbase交易的标识,最终影响了整个区块的哈希值(Hash),此时的区块可能会因不通过区块正确性检验而被放弃,保证了见证数据的不可篡改性。

在比特币改进建议书BIP141中,引入了一个新的块重(Block Weight)的概念,其大小可以通过以下公式计算:

BlockWeight=3×BaseSize+TotalSize

式中:BaseSize为区块不包含见证数据的部分,这是未进行升级的节点看到的数据;TotalSize为包含了所有字段的数据容量,这是升级后的节点看到的数据。在新的规定下,块重不能超过4 MB,再此规则下,可以保证BaseSize不大于1 MB,即不包含见证数据的区块容量不超过1 MB,与原有包含见证数据区块容量不超过1 MB的旧规则相比,达到了扩容的目的。

2.3 提高区块容量限制

按照最初设计,比特币区块容量限制最初受限于处理它所需的数据库锁(Database Locks)的数量(最多10 000个),这个限制大约是500~750 KB的连续字节。在2013年3月之前,这个设计一直被人遗忘,没有引起足够的注意。直到2010年,中本聪秘密地在两个代码提交[22-23]中,为比特币引入了1 MB区块容量的限制。之后,比特币一直以区块1 MB容量限制作为行业标准。

2013年3月,原来的数据库锁的限制被意外发现,比特币的核心版本v0.8.0未能执行这项限制,导致了升级的节点有被比特币网络剔除的危机。在解决危机之后,由于很少人关注原有数据库锁限制,所以当时一致认为要硬分叉限制删除。移除限制的硬分叉在2013年5月成功实施,从此区块1 MB容量的限制第一次成为比特币区块容量的首要限制因素。

这个限制在2017年之前没有再更改,但随着比特币的普及率越来越高,以及比特币市场价格的持续攀升,每次市场受到外界因素扰动,交易量随之骤然变化,导致发出的交易迟迟得不到确认(自2016年至今,比特币网络中每天未确认交易数量的变化情况,如图3所示),交易延迟愈演愈烈。

图3 自2016年至今,比特币网络中每天未确认的交易数量

是否增加区块容量的限额引起了激烈的争论。同时,为防止比特币暂时或永久分裂成多条同源链,基金会希望整个比特币社区对提高区块容量限制的硬分叉达成共识。但这个期待的共识一直没能够达到,于是比特币的第一个分叉币比特币现金(Bitcoin Cash)横空出世,后来人们逐渐意识到潜藏在分叉币背后诱人的经济利益,于是不同的团队开始以各种宣称的改进,对比特币进行恶意的分叉。本文总结了5种目前发展情况良好的分叉币与比特币进行比较,结果如表1所示。

表1比特币分叉币与比特币的比较

币种BTCBCHBTGBCDSBTCLBTC分叉日期2017/08/012017/10/252017/11/242017/12/172017/12/23发行总量2 100万2 100万2 100万21 000万2 121万2 100万挖矿算法SHA256SHA256EquihashSHA256SHA256POS区块大小1 MB8 MB1 MB8 MB8 MB2 MB隔离见证支持不支持支持支持支持支持

2.4 多重签名

多重签名(Multi-Signature),是n指个签名参与者P1,P2,…,Pn利用他们所对应的私钥SK1,SK2,…,SKn,合作对消息M进行签名,从而n个用户合作生成1个消息的签名σ,这一过程可以表述为σ=Multi_Sig(M,SK1,SK2,…,SKn)。当进行多重签名σ正确性验证时,需要n个用户的公钥(PK1,PK2,…,PKn)共同参与,这一过程可以表述为TRUE/FALSE=Multi_Verify(σ,PK1,…,PK2,PKn)。

比特币交易可以看作是由1个或n个发送者(Sender)向1个或m个接收者(Receiver)的转账。同时,每个发送者为了声明对转账资金(UTXO)的所有权,需要提供交易的数字签名来进行认证。如果一笔交易有n个发送者参与交易,那么就会有n个不同发送者所对应的签名需要附加在交易中,在打包交易生成区块过程中供比特币矿工(Miner)进行交易合法性验证。需要指出的是,在比特币网络中,85%以上的交易是由多个发送者构成的,所以这里还有较大的可优化程度。

比特币基金会的核心开发者Gregory Maxwell等希望用多重签名的方式来提高1 MB区块的利用率。鉴于ECDSA构造多重签名的困难性,他们采用Schnorr签名[24]的签名可加性这一先天多重签名特性进行改进。这一成果发表在文献[25]中,下面对其多重签名的技术细节进行简单的描述。

(1) 密钥生成算法(Key Generation) 每个用户Pi随机生成一个私钥SKi←Zp并计算其所对应的公钥PKi=gSki。

之后,签名者随机选择ri←Zp并计算Ri=gri后发送给其他签名者。当收到了其他签名者发送的R2,R3,…,Rn后,计算:

s1=r1+ca1x1modp

在应用了多重签名来进行改造之后,根据他们的实验统计,应用多重签名前后区块链体积的比较如图4所示,将会节约到的区块体积,这在“寸土寸金”的区块中显得极为难能可贵,可以较为有效地提高交易吞吐量,节约比特币网络带宽资源。

图4 应用多重签名前后区块链体积的比较

2.5 聚合签名

聚合签名(Aggregate Signature),是指n个签名参与者P1,P2,…,Pn分别利用他们的私钥SK1,SK2,…,SKn,对每个签名参与者所对应的消息M1,M2,…,Mn进行签名,从而n个用户对n个消息生成1个消息的签名σ,这一过程可以表述为σ=A_Sig(M1,M2,…,Mn,SK1,SK2,…,SKn)。在进行多重签名正确性验证时,需要n个用户的公钥PK1,PK2,…,PKn共同参与,这一过程可以表述为TRUE/FALSE=A_Verify(σ,PK1,PK2,…,PKn,M1,M2,…,Mn)。

比特币区块中的主要数据是交易,且随着比特币的发展,每个区块中的交易数不断增长并趋近于饱和,现阶段每个区块大概有1 600笔交易(自2009年至今,区块中所包含交易数的变化情况,如图5所示),每笔交易中含有1个或个签名,来证明交易资金的所有权。如果利用多重签名技术来改进交易,每笔交易中将会仅存1个签名,接下来的优化将要从聚合签名的角度来考虑。

图5 自2009年至今,区块中所含交易数量的变化

文献[26]运用聚合签名的方式来进一步压缩区块体积,提高比特币区块的利用率。需要指出的是,签名聚合的环节应当出现在矿工打包交易生成区块的过程中,而矿工所处理的交易数量较多,同时都是匿名化地来自于全球不同节点,所以考虑到比特币的实际应用场景,聚合签名一定是需要有非交互的特性。

文献[26]的工作,在考虑到Schnorr签名的不可聚合后(存在有具体的攻击方式,本文中进行了阐述),基于签名[17]构造了聚合签名,相关工作已经公布在文献[26]中,在这里对其聚合签名的技术细节进行简单的说明。

(2) 签名算法(Signing) 对于需要签名的消息Mi,签名用户Pi随机选择ri←Zq,并计算Ai=riP,di=H(A),ei=H(PKi,Mi),zi=ridi-eiSKimodq。然后,返回用户Pi关于消息Mi的签名σi=(di,zi)。

(3) 签名验证算法(Verification) 在进行签名聚合前,需要对每一个需要聚合的签名σi进行验证,否则任意一个签名有问题时,聚合后的签名将不能通过聚合签名验证。

(4) 签名聚合算法(Aggregation) 在每个签名组{PKi,Mi,σi}i∈{1,2,…,n}通过验证后,才可以将签名聚合,当运用到比特币的时候,这个过程一般由矿工来进行操作。

根据统计,如果利用聚合签名技术来对比特币进行优化,那么签名的存储体积将会减少50%,同时因在一个区块内仅存在一个聚合签名,那么区块验证的时间将会减少80%。同时,比特币改进后的交易标识,需要有新不包含签名计算方式,即由TxID=HASH(Transaction[σ1,σ2,…,σn])变为TxID=HASH(Transaction),这将有效地抵抗交易延展性攻击[27]。因原有交易中的多个签名,由1个聚合签名来代替,那么区块中存放签名的位置将会改变,这与3.2节中隔离见证的概念不谋而合,所以聚合签名还兼顾了隔离见证的优势,进一步提高吞吐量,节约比特币网络带宽资源。

将仅仅取决于签名者P1。从这点出发,作恶者甚至可以给整个系统带来毁灭性攻击。

3 结 语

目前比特币每秒7笔的处理速度,远远不能满足公众预期以及工业生产需要。如果长期处于这样的“亚健康”发展事态,一直没有可靠的技术从根本上解决问题,那么可能会让一直支持比特币的社区与投资者们失去信心。同时,比特币作为区块链技术的鼻祖,在区块容量、可扩展性、吞吐量迟迟无法优化的情形下,甚至会引起公众对区块链技术所带来的颠覆式发展的质疑。

本文就现阶段讨论比较激烈且具有代表性的5种扩容技术:支付通道、隔离见证、提高区块容量限制、多重签名与聚合签名进行了总结,并简要地对它们的实现方式、原理进行了说明。

首先就支付通道来看,这样的“小额交易链下处理”的方式,确实是在源头上遏制了交易拥堵问题的发生,但从区块链技术定义上来讲似乎背离了比特币“一切可追溯”的设计初衷,并且在实际应用中很难来衡量小额交易与大额交易在比特币价值层面的区别。

与支付通道“从交易源头来遏制”不同的是,隔离见证与提高区块容量限制,可以被看作是“缓兵之计”。可以清楚地认识到,利用了隔离见证之后,整个区块的数据体积并没有减少,数据是依然全部存在链上。其所带来的比特币“区块容量上的提升”,是通过简单的见证数据位置移动,辅助区块体积计算方式的改变来实现的。

提高区块容量限制,可以说是最为直接、暴力的解决方案,但从比特币网络数据覆盖率上,很难来衡量区块容量简单增大后,对比特币实时网络传播速率的影响[28]。例如,原有1 MB的区块需要10分钟便可到达全网95%以上的节点,但8 MB的区块可能在10分钟内只能到达全网的节点。而且,容量增大的方式可能暂时满足现有对比特币容量、可扩展性与吞吐量的需求,但不排除未来再一次无法满足要求时,继续进行硬分叉调整的可能性。

多重签名与聚合签名,是从交易本身数据结构出发,在不影响比特币安全性与交易完整性的基础上,依托密码学技术将见证数据尽可能的体积压缩,由此带来交易处理与区块的验证速度上提升。同时,聚合签名还与隔离见证有着异曲同工之处,都可以解决交易的延展性攻击。并且多重签名、聚合签名可以与其他的扩容方式“互无妨碍”地结合使用,是未来一段时间内价值较高的扩容方案。

总而言之,引领从“机器不可靠”发展到了“机器信任”时代的比特币,是区块链技术的起点与源泉,同时也需要指出,每一门新技术的发展初期,都会面临着种种挫折与挑战,但从这个残酷过程中生存下来的,才是真正有价值的。关于区块链的未来,尚需拭目以待。

猜你喜欢

比特容量区块
水瓶的容量
《红楼梦》的数字化述评——兼及区块链的启示
区块链助跑财资管理
一场区块链引发的全民狂欢
区块链助力企业创新
比特币还能投资吗
比特币分裂
比特币一年涨135%重回5530元
小桶装水
神秘的比特币