用户登陆
正在加载
通过软分叉将比特币链上扩容3584倍?Bitcoin Forward Blocks剖析
互联网 · 2019-01-25 07:20:13

摘要

2018年10月,比特币开发者Mark Friedenbach提出了一种“不通过硬分叉将比特币进行链上扩容,并让其交易处理数量提高3584倍”的比特币扩容方案Forward Blocks,在社区引起了广泛讨论。

通过解析,我们认为Forward Blocks一定有可取之处。它产生耦合形式的链,forward block链上直接扩容,然后通过时间扭曲(即time warp,可以简单理解为修改时间戳)的方式,让比特币原链产出更多的区块,变相降低区块间隔,“欺骗”原链上的老节点,最终实现老节点向新节点的升级过渡。但是在实际操作中,即便是软分叉,想取得足够多的共识也绝非易事,因此广泛应用的可能性并不是很高。

报告正文

1.背景介绍

2018年10月6日,在东京举办的第五次比特币扩容大会(Scaling bitcoin)上,比特币开发者Mark Friedenbach提出了一种比特币链上扩容软分叉方案“Forward Blocks” [1],在社区引起了广泛讨论。Mark Friedenbach不但是一名比特币开发者,而且是区块链技术公司Blockstream公司联合创始人和研究工程师。Blockstream公司在业界较为知名,是比特币的闪电网络(lightning Network)方案的奠定和重要开发机构之一。同时,Blockstream也是比特币隔离见证(Segwit)升级上的推动者之一。因此,Forward Blocks的提出广受关注。

在Forward Blocks论文中,Mark Friedenbach声称通过这种方案能够实现以下特性:

-提供一种链上扩容方式,使比特币的交易处理量提高3584倍,并以软分叉实现;

-提供一种PoW的升级(可选),并以软分叉实现;

-限制验证成本的增加;

-通过类似分片(sharding)的方式降低中心化风险;

-提供一种未来的账本架构的扩展,包括:降低费率、保密转账、环签名和侧链转换等。

2.Forward Blocks的软分叉方案

在了解Forward Blocks的软分叉之前,我们必须了解什么是硬分叉,什么是软分叉。在比特币区块链中,无论是挖矿和转账都要通过客户端参与。最初中本聪开发的比特币客户端是bitcoin-qt(现在名为bitcoin core)。本质上,分叉就是客户端的升级。软硬分叉的定义涉及到新老节点对新老节点发出的区块的认可度问题,同时和新老节点的算力之比也有关,因此细分之后较为复杂。为了文章篇幅简洁和便于理解,本文将硬分叉和软分叉的模型做了一定程度的简化。

参考bitcoin.org上的定义,硬分叉是指老节点无法接受新节点发出的区块。软分叉则是指老节点仍然能够接受新节点发出的区块。其中,升级了客户端的节点就是新节点,反之则是老节点。比如说,比特币现金(BCH)是一种硬分叉,因为它修改了比特币的交易数据结构。导致在两个区块链之间,BCH节点无法接受BTC节点发出的区块,BTC节点也无法接受BCH节点发出的区块,但双方都接受分叉之前的区块。而隔离见证(Segwit)则是一种软分叉,虽然隔离见证也修改了交易数据结构(解锁脚本字段),但是通过一种方式让老节点仍然能接受新节点发出的区块。因此在比特币区块链中,无论你的客户端(节点)是否升级了隔离见证的版本,都能接受双方节点发出的区块。

但是需要注意得是,并非所有硬分叉都会诞生两条区块链。如果全网都能达成一致,共同升级客户端,区块链仍然是一条,只是无法用老客户端参与了。比如说以太坊曾多次以硬分叉的方式进行“升级版本”,如通过硬分叉升级到“家园”版本,“大都会”版本等,都没有产生两条区块链。BCH社区在特定的主导下,也经过了多次“升级”,其实也都是通过硬分叉完成的。

然而,在一个分布式的网络中,想要达成全网共识一致是一件非常困难的事。BCH、ETC等分叉的诞生都是一次次社区共识的分裂。由于以太坊和BCH社区都有明确的领导,以太坊还有明确的升级规划,因此通过硬分叉“升级“较为容易。而相比于以太坊社区和BCH社区,比特币社区的升级则显得非常谨慎。迄今为止,比特币的绝大部分升级都是通过软分叉完成的。在中本聪还活跃的2010年时,曾有一次修复刷币漏洞是通过硬分叉完成的。

正因如此,Forward Blocks的扩容方案也竭力强调希望通过软分叉的方式来实现。同时,由于软分叉非常强调先前兼容,即老节点(客户端)仍然能够接受新节点发出的区块。为了能让老节点仍然能接受新区块,新节点常常会采用一些“欺骗”的方式骗过老客户端接受新区块,Forward Blocks也采用了这种思路的设计,我们在后文会讨论。

在Forward Blocks的设计中,一部分节点升级Forward Blocks客户端成为新节点之后,会形成松耦合形式的链,一条是名为兼容链(即比特币原链),一条是名为forward block。PoW可能稍作修改,但本质上还是基于双sha-256的。

新节点矿工在forward block链上挖出的区块需要同时向两条链提交,这样老节点也能看到所有的交易。为了不被老节点拒绝,新节点的coinbase奖励也是从兼容链的UTXO中发出的。并且设计了难度过渡方案,让未升级的客户端在非强制的情况下,主动升级成新节点。

3.Forward Blocks的扩容方式

那Forward Blocks方案的扩容方式又是如何完成的呢?在了解它的扩容方案之前,我们还需要了解三个概念,一是比特币的难度调整机制,二是比特币时间戳确定机制,三是比特币的时间扭曲攻击

1.比特币的难度调整机制

比特币在设计时,预计到了全网算力的不断变化,为了能让比特币在全网算力不断变化时,仍然能够确保每个区块的产生时间平均约10分钟,因此特别设计了难度调整机制。我们都知道,比特币新区块的寻找实际是矿工不断在做哈希运算,通过哈希运算,第一个计算出来的矿工可以发出新区块。假如算力不断上涨,计算能力越来越强,那么理论上区块就会被更快地计算出来。为了防止这种情况发生,比特币协议中规定每2016个区块产生之后,比特币就需要进行难度调整,即:如果上个2016区块周期(大约2016*10/60/24=14天)中,算力上涨,反映为矿工能用更短时间找到新区块,则增加难度;如果算力下降,则降低难度,来确保下一个2016区块的周期内,比特币的出块速度仍然保持约10分钟。

2.比特币时间戳确定机制

我们生活在中心化世界,因此找一个权威机构确定时间并非什么难事。然而,比特币是一个完全分布式的网络,没有办法找一个权威机构来敲定时间。因此比特币的时间戳的时间实际上是一个世界协调时的分布式升级版。在比特币网络中,每个矿工节点都有自己的本机时间(需要折算为Unix时间),同时每个节点链接多个其他节点,时间戳的选取来自于该节点所有链接节点(大于某值为合法)的中位数,并且该时间需要与本机时间相差不超过70分钟,且不小于前11个区块的中位数时间,同时别的节点会拒绝时间与自己相差2小时的区块。

3.比特币的时间扭曲攻击

比特币的时间扭曲攻击(time warp attack)则是一种通过“玩弄“比特币时间戳和难度调整机制的一种攻击方式。比特币的难度调整是以每个周期的第1个和第2016个区块的时间之差调整的。如果2016个区块的时间长于14天,则系统降低难度。因为时间戳没有一个权威的机构来确认,假如一部分矿工节点联手,将新区块的时间戳不断往前调整,比特币系统会误判断该2016区块周期太长,而降低难度。然而,虽然难度降低,矿工的算力并没有减少,因此,矿工能以短于10分钟的间隔时间大量出块。当然,进行时间扭曲(time warp)对矿工节点的算力有要求,而且攻击方式还包括让目标节点脱机等。更详细的讨论可以参考附录文章[2] [3]。

因为比特币的算力基数很大,目前尚未观察过任何对比特币的时间扭曲攻击。但是,在2018年5月,有攻击者曾成功使用时间扭曲的方式攻击了加密货币Verge[4]。此外,有报道表示有节点在比特币的测试网络上亦成功尝试过时间扭曲攻击。

在了解了上述概念后,让我们回到Forward Blocks方案。我们上文提到,软分叉之后,会形成松耦合形式的链,一条是兼容链(即比特币原链),一条是forward block链。它的扩容方案比较简单,就是直接提升forward block链的上区块大小(Block Weight),但不提升兼容链(即比特币原链)上的区块大小。在forward block链上,每个2016区块周期按照3.125%的速度增加区块大小,最终增加到每个区块大小为768 MWe*。同时,为了抗拒中心化审查,forward block链上的比特币区块间隔会提高至15分钟,因此初始区块体积为6MWe。

提升区块大小来扩容的方式我们并不陌生,但是提升区块大小会破坏交易信息的数据结构,因此老节点无法认可扩容后的新节点发出的区块,从而导致硬分叉。因此Forward Blocks提出,在兼容链(即比特币原链)上进行时间扭曲操作,来骗过老节点。

在时间扭曲操作之后,兼容链上会产生大量新区块,时间间隔也会降低,这样兼容链上也可以达到和forward block链(即新链)同样数量的交易处理。换句话说,假如forward block链上额外处理了15 MB的交易信息,那么就让兼容链通过时间扭曲操作额外多爆15个1 MB新区块来处理这些额外的交易。这样的话,就能保证老节点能够看到所有交易,而不至于导致硬分叉。


*注释1:Block Weight是比特币Segwit软分叉升级之后的区块大小的表示方式,过去区块大小的表示方式是Block Size。过去,比特币的区块大小为1MB, Segwit升级后,签名信息和交易信息被分割开来,让比特币区块变相增加了。因此,在非Segwit情况下,1 kb的交易数据代表4 kb的Block Weight,但是在Segwit情况下,1kb 的交易数据代表1 kb的Block Weight。因此,比特币的区块单位的表示由MB变为MWe。

简单理解时,在非Segwit情况下,768 MWe=192 MB;Segwit情况下,768 MWe=768 MB。

在当一条forward block链稳定之后,还可以使用更多的forward block链,根据原文计算,认为最多可以并行28条forward block链。也就是说,比特币可以因此扩容:

1.webp

在极限情况3584倍下,兼容链(比特币原链)的区块间隔会缩小至167 ms,原文认为未来的带宽和存储等硬件设施应该可以满足这种需求,而且Forward链上区块大小的增加也是循序渐进的。

4. 存在的问题和总结

整体来看,Forward Blocks方案本质上还是希望老节点能够自愿升级到新节点,通过时间扭曲(time warp)“欺骗”老节点实际是个过渡方案。forward block链上的扩容还是通过增加区块大小和多侧链并行*来增加交易处理的数量。如果全网绝大多数算力能够从老节点升级到新节点,则无需再对兼容链进行时间扭曲操作。

虽然是软分叉,但是我们认为Forward Blocks方案成功概率并不高,主要有以下原因:

1.时间扭曲(time warp)需要很多的算力支持。

想要对区块链进行时间扭曲操作,就需要在一定范围内能够控制时间戳,由于时间戳规定不能小于前11个区块的中位时间,如果新节点较少和新节点算力较低的情况下,新节点往往不能成功有效控制11个区块的中位时间。如果不能控制一定比例的区块,则无法保证区块时间能够大大延长,并“欺骗”到比特币协议降低难度。因此,如果对该方案响应的人数较少,实现起来非常有难度。而且时间扭曲一直是以一种“攻击“的名义存在的,想要凝聚足够的共识去”攻击“比特币主链,会让这件事难上加难。

2.这会造成更严重的中心化问题。

直接提高区块大小是最简单理解的扩容方式,但是也会带来中心化的隐患。过大的账本体积会降低全网全节点钱包的数量,进而影响账本的安全性。另外,大区块(满负荷情况下)会让全节点之间通讯同步的时间大幅增加,影响交易信息的验证速度。部分轻节点需要依赖某些全节点,当全节点同步速度变慢时,轻节点钱包的使用体验也会有一定程度的下降。

3.这会造成比特币开采数量大幅上升。

由于该方案需要让兼容链爆出大量新区块来承载更多的交易量,因此coinbase奖励也会提前释放出来。虽然这并不会造成比特币突破2100万的上限,但是会在一定时间段内造成比特币产出大幅上升,引起市场波动。这恐怕会影响节点的参与热情。


*注释2:原文认为该侧链模式是一种分片(shard)。

4.降低主链的安全性。

虽然该方案设计了从兼容链到forward block链的难度过渡过程,但过程中无疑会分散耦合链上的算力,实际上会造成比特币安全性的下降。同时,在严重的时间扭曲攻击下,比特币出块时间大幅缩短,甚至会影响信息在全网的广播和传输,这会造成大量孤块和意外分叉,严重影响主链安全性。

总结来说,虽然Forward Blocks看起来有一定的可执行性,但是也存在诸多弊端,而且共识难以形成,因此Forward Blocks方案被广泛采纳的可能性并不高。

5.附录

[1]-http://freico.in/forward-blocks-scalingbitcoin-paper.pdf

[2]-https://bitcoin.stackexchange.com/questions/75831/what-is-time-warp-attack-and-how-does-it-work-in-general

[3]-http://culubas.blogspot.com/2011/05/timejacking-bitcoin_802.html?m=1

[4]-https://blog.theabacus.io/the-verge-hack-explained-7942f63a3017

免责声明:

1. 火币区块链研究院与本报告中所涉及的数字资产或其他第三方不存在任何影响报告客观性、独立性、公正性的关联关系。

2. 本报告所引用的资料及数据均来自合规渠道,资料及数据的出处皆被火币区块链研究院认为可靠,且已对其真实性、准确性及完整性进行了必要的核查,但火币区块链研究院不对其真实性、准确性或完整性做出任何保证。

3. 报告的内容仅供参考,报告中的事实和观点不构成相关数字资产的任何投资建议。火币区块链研究院不对因使用本报告内容而导致的损失承担任何责任,除非法律法规有明确规定。读者不应仅依据本报告作出投资决策,也不应依据本报告丧失独立判断的能力。

4. 本报告所载资料、意见及推测仅反映研究人员于定稿本报告当日的判断,未来基于行业变化和数据信息的更新,存在观点与判断更新的可能性。

5. 本报告版权仅为火币区块链研究院所有,如需引用本报告内容,请注明出处。如需大幅引用请事先告知,并在允许的范围内使用。在任何情况下不得对本报告进行任何有悖原意的引用、删节和修改。

作者:袁煜明、马天元,本报告发布时间2018年10月13日。

免责声明:
本网站所提供的所有信息仅供参考,不构成任何投资建议。用户在使用本网站的信息时应自行判断和承担风险。币界网不对用户因使用本网站信息而导致的任何损失负责。用户在进行任何投资活动前应自行进行调查和研究,并谨慎决策。币界网不对用户基于本网站信息做出的任何投资决策负责。用户在本网站发布的任何内容均由其个人负责,与币界网无关。
免责声明:本网站、超链接、相关应用程序、论坛、博客等媒体账户以及其他平台和用户发布的所有内容均来源于第三方平台及平台用户。币界网对于网站及其内容不作任何类型的保证,网站所有区块链相关数据以及其他内容资料仅供用户学习及研究之用,不构成任何投资、法律等其他领域的建议和依据。币界网用户以及其他第三方平台在本网站发布的任何内容均由其个人负责,与币界网无关。币界网不对任何因使用本网站信息而导致的任何损失负责。您需谨慎使用相关数据及内容,并自行承担所带来的一切风险。强烈建议您独自对内容进行研究、审查、分析和验证。
s_logo
App内打开