金融史上的神奇怪胎:比特币扩容大战的前世今生

  • 发布于: 12 March 2018
  • 编辑: 628财经

一、故事回顾


背景:中本聪留下的BUG


大家知道,比特币的每一个区块的容量大小只有1M,随着用户数和交易量的迅速增长,区块容量限制越来越成为影响比特币区块链运转的瓶颈。用户的交易需要越来越长的时间来等待矿工打包确认。


这就犹如北京和上海之间有趟比特币班车,每10分钟一班,要是上车的人越来越多,就需要加把小车厢换成大车厢,把100座变成200座的。不然没上车的人就会堵在车站,直接把系统搞瘫痪了。


实际上,2009年比特币初次诞生时,中本聪把每个区块的容量大小设置为32M。这个容量其实足够大,拿到今天都绰绰有余。


但那时比特币面临黑客的“粉尘攻击”。所谓 “粉尘攻击”,就是有黑客提交大量的小额交易,阻碍了正常交易的确认。这就犹如有人去银行搞破坏,派 1000 个人堵到窗口存1块钱,银行容纳不了就瘫痪了。


为抵御粉尘攻击,2010年,中本聪把区块容量的上限降低为1M,并说这个上限在未来某个时候可以再调整。


序幕:派系的产生与容量告急


不久后,中本聪隐退江湖,把区块链系统的代码维护工作交给了他的一批追随者,这些人被称为 core 开发组,为首者是被称为中本聪继承人的加文·安德森(Gavin Andresen)。


但core团队并不是BTC唯一的主宰者。比特币的交易需要矿工挖矿来记账,随着挖矿成本的迅速升高,普通个人计算机挖矿成功的概率逐渐趋近于0,只有采用大批的专业矿机集体挖矿才能成功,也就是矿池。中国西南及内蒙因大量水电、风电过剩而导致电价极低,为矿池挖矿提供了良好条件。在2017年中国政府打击之前,中国的数个大矿池一度集中了全球近90%的算力。后来的扩容大战就在core团队和矿工群体之间展开。


中本聪所言扩充区块容量的这一天很快就到来了。下图可见,从 2014 年第四季度开始,比特币的区块包开始快速增大,按照当时的增长速度,交易区块大约会在 2016 年底触及 1M 的红线。考虑扩容方案达成共识需要多方复杂的谈判,所以时间其实非常紧迫。2015 年 5 月, Gavin Andresen 提出在 2016 年 3 月扩容到 20M,开启了扩容方案大战的序幕。


 图:State of Blockchain 2018—coindesk


乱战开始


2015年6月,中国五大矿池(Antpool,F2Pool,BTCChina,BW,Huobi)联合发表声明反对扩容到 20M,支持扩容到 8M。这一方案也遭到了社区大部分矿工的反对。随后,一些 core 开发组的早期成员也陆续提出了系列扩容建议,这些建议是比特币改进协议(BIP,bitcoin improvement proposals)的主要组成部分。 


2015年12月,core团队的 Eric Lombrozo、Johnson Lau 和Pieter Wuille (BlockStream的联合创始人)建议,移除比特币交易过程中的签名字段,将交易和签名分离开,这样就可以在不扩大区块大小的情况下实现变相扩容,也称为技术性扩容方案SegWit(Segregated Witness),核心协议是BIP141。


2016年1月12日,一个名为 Jonathan Toomim 比特币开发人员提出,要延续中本聪的思想,基于 BIP109 协议,在中本聪的代码库基础上将区块大小扩大到 2MB,并分叉出 Bitcoin Classic。这项提议的支持者包括core开发组成员Gavin Andresen,Jeff Garzik以及前比特币基金董事 Olivier Janssens等人。该方案需要获得 75%以上算力支持才能够被激活,激活之后 28 天才会发生硬分叉。


2016年1月23日,迈阿密比特币圆桌会议在在 Hyatt Regency 酒店举行,参会方主要包括 Bitcoin Classic、Bitcoin Core 及中国矿工。这是一次仓促的会议,没有达成任何协议。但中国矿工们倒是在迈阿密会议基础上迅速组织了一次扩容问题的协调会,会后达成了“九二共识”(滑稽)。“二”指支持比特币扩容至 2 MB,“九”指反对低于90%算力共识的分叉协议。这个“九”是针对Bitcoin Classic来说的,意思说支持扩容,但75%的支持率太低了,会引起社区分裂,需要90%的支持率才行。


Bitcoin Classic没有理会,于2016年2月初正式发布。矿工们嘴上说反对,但考虑到bitcoin是一个多方博弈的结果,谁也不敢保证未来会是怎样,所以当时一半多的算力对这项扩容协议表达了“身体上的诚实”。同理,很多交易所也予以了支持。


但这是一个没有得到广泛认同的匆忙协议,只持续了一年多时间,Bitcoin Classic就被社区抛弃。2017年11月,Bitcoin Classic开发团队宣布放弃这个项目,不再更新代码。基于“币圈一天,人间一年”的时空理论,一年多时间也算是够长了,Bitcoin Classic被抛弃是也是在算是在经历达尔文的自然选择,它并不是最后一个。


团结的假象:香港和谈


在迈阿密,矿工和core开发组为了维护比特币及社区的统一站在了同一个战壕里,因为那时候他们有一个共同的敌人Bitcoin Classic。随着Bitcoin Classic义无反顾地分家出去,就剩下矿工和core开发组来决定Bitcoin究竟该如何扩容。2016 年 2 月20日,Core 开发组代表和矿工双方在香港数码港再次开会讨论扩容的方案。


会议一直从20日开到21日凌晨三点半,双方达成协议,史称《比特币圆桌会议达成关于扩容的共识》。协议最大的成果是:core同意将硬分叉到2M纳入core的框架之中,作为交换,中国矿工也同意只运行core开发的比特币程序,坚决和Bitcoin Classic划清界线。


当时的人们认为这是一次团结的大会、胜利的大会,没想到这差不多是1945国共重庆谈判的翻版:Core 的香港和谈代表回去之后,开发组的其他成员对协议不满,最后拒绝执行香港共识。


社区一片哗然,分裂再也不可避免。


社区分裂


2016年10月,占全网算力10%的ViaBTC率先部署Bitcoin Unlimited(BU),BU也有一个开发团队,并和core团队抗衡。11月,Bitcoin.com,BTC.top,CANOE三家矿池部署Bitcoin Unlimited,公开与core开发组翻脸。与此同时,core开发组发布Segwit代码,并在11月19日开始投票。但此时的双方都没有获得社区的绝对支持。


由于 BIP141一直被矿工阵营反对,为了推进隔离见证的升级,2017 年 3 月,由自称 Shaolinfry 的匿名社区成员提出建议,是否进行升级更改比特币网络的决策权由矿工决定转向由用户、交易所、支付处理商等来决定。该协议将原本由算力决定的锁定信号交给由全网节点来决定。约定激活日期为8月1日,在这一天之后,激活和没激活的节点将分道扬镳。该方案被认为是扩容问题中最激进和最具争议的一个,但却受到 core 团队支持的方案。同月,这个月 AntPool 开始支持 Bitcoin Unlimited。


3月31日,Rootstock 智能合约安全专家 Sergio Demian lerner 通过推特提出了“Segwit2MB”的折中解决方案,主张合并激活 Segwit 软分叉和2MB 硬分叉。这个和稀泥的方案收到很多口水,因为兼容的方案更复杂,需要更长的时间审核代码的安全性。


矿工们的单方协议:Segwit2x


经过了香港共识事件,中国矿工对Core失去了信任,但扩容还是需要解决的问题。于是,2017年5月,大家在纽约重新召开了一个扩容大会,这次他们决定:不带Core玩了。参会方包括 Barry Silbert 旗下的数字货币集团(DCG)和包括大型矿池运营商比特大陆(Bitmian)等57家企业。据说core团队的人试图闯进会场,但被安保拦在了外面。参会企业签署了纽约共识,获得了全网80%以上的算力支持。


纽约共识的成果就是Segwit2x方案,也就是前文提到的Segwit2MB的翻版,后来被blockstream的支持者James Hilliard打包成BIP91协议。这是一个BIP141(core支持,矿工反对)和BIP148(矿工支持,core反对)的合并捆绑方案。BIP91协议要求在8月1日之前激活隔离见证,以兼容方案BIP148,然后在3月内实现区块扩容至2M的硬分叉。


2017年6月份,在Jeff Garzik支持下成立了Segwit2x开发小组,并发布了alpha版(然后Jeff Garzik就被踢出core团队了)。同时,AntPool发布了UAHF方案,目的是为了消除core开发组暗中支持的BIP148分裂比特币的行为。中国矿工也在莱特币基金会秘书长PZ的号召下再次开会,并重申对纽约共识的支持,督促尽快激活Segwit2x。7月21日,Segwit2x方案被正式激活。


Segwit2x漏气了


Segwit2x作为一个兼顾了双方利益的妥协方案,在达成之后受到了万众期待。然而,促使集体分裂的或者说维护集体统一的根本并不在于技术,而在于人心。Segwit2x算是矿工做主,满足了core的利益和诉求的协议。但这个协议毕竟是core团队不在场的单方协议。core团队是根本反对区块扩容的方案,坚持1M的原教旨主义,他们完全可能再提出另外一套协议,不承认扩容至2M的硬分叉。何况2M的区块容量早晚也有用完的那一天,再过几年还得再扩容,再谈判,再扯皮……


当然,故事并没有按着这个套路发展。按照Segwit2x方案,比特币将在2017年11月17日晚达到494784区块高度时启动硬分叉,产生比特币分叉币B2X。但是大量2X节点停留在494782高度,第494783个区块迟迟挖不出来。18日凌晨一点多,OKEx发布声明称Segwit2x硬分叉失败。事后检查发现,失败的原因是2X代码库有几个低级BUG。谁也没有料到这么一个万众期待、多方妥协的方案会以难产的方式死亡,这给core团队送去了一个大笑柄。那句话怎么说来着,有时候努力了很久,到头来发现只是一个...


新式割韭菜法


虽然Segwit2x失败了,但社区并没有都全部回归到core的方案,而是放出了“分叉”这个魔鬼。当然,分叉的始作俑者是以太坊,但比特币因其龙头老大的地位极大地扩大了分叉的影响,或者说开启了新式割韭菜浪潮。一些团队把原装比特币的代码改一改,就可以分叉出一条新的区块链和新的虚拟币。


前文提到的Bitcoin Unlimited(BU)团队跳出BIP141和BIP148方案,直接不要Segwit,直接把区块容量提升到8M,硬分叉出BCU,再改名Bitcoin Cash,缩写BCC。后来因为BCC被另外一个山寨币蹭了热度,又改名BCH。再后来又产生了“比特币钻石/BCD”、“比特币黄金/BitcoinGold”等一系列山寨币。


二、两派究竟在争什么


先来看矿工的方案:矿工的方案就是简单明了,箱子小了就换大箱子。1M的区块不够大,那么就2M,还不够就4M、8M、16M。而Core认为这是头痛医头脚痛医脚的临时性办法,每一次升级都要社区的大部分成员同意,每一次升级都有可能带来新的分叉。同时,区块的增大将导致比特币账本迅速增大,个人电脑将无法保存,只有那些大矿池才能保存,这就违背了比特币去中心化的初衷。


Core 的解决方案是隔离见证 Segregated Witness,英语字面上理解可翻译为“隔离式的见证”,但其实翻译为“把见证隔离了”更容易懂一点。大家知道,比特币是一个可追溯的全网络公开的账本,这也就是说账本除了显示每个人有多少钱之外,还需要显示这些钱是从谁那里来的,记录这些交易的数据就是“见证”信息。  


用银行汇款做做类比,假如A向B汇款100元,A需要填写B的银行账户和汇款金额,然后再签字授权。签字授权是给银行看的,对B作为收款人而言其实毫无用处。在比特币体系中,是通过私钥授权,即见证信息,这也是给矿工记账看的,收款方也毫不关心。见证信息在交易信息中占用了不少的字节,如果把这部分信息从账本中移除的话,1M的区块就能容纳更多的交易。


理想条件下,SegWit方案能带来4M的扩容效果,但当时业内普遍估计实际只可达到1.7M左右的扩容效果。这当然也没有根本解决问题,但core开发组也只是想把SegWit作为一个应急方案,是为终极方案“闪电网络”(Lightning Network)铺路的。


闪电网络简单的理解就是,在区块链这条主链上开一条侧链,用来承载那些数量大、额度小的交易,这些交易是不需要矿工记账的,主链上只记录那些额度较大、数量较少的交易。


这就好比京沪高速公路是一条大干道,随着车多起来路开始变得拥堵。一种解决方式就是把道路加宽,还有一种解决方式是修一些支路,因为并不是所有人都需要从北京去上海,有的可能只需要从徐州去济南。闪电网络的意思是,这些在济南和徐州之间的交通就另开一条支路就行了,主路留给跑长途的。

 


矿工也坚决反对闪电网络,因为隔离见证和闪电网络是对原有比特币系统的巨大改动,万一工程失败路毁了,大家都没办法好好开车了。其次,闪电网络也有中心化的趋势,同样违背去中心化的初衷。


内在的利益分歧


两派的相互 diss 可以说是发展理念的不同,但也涉及到深刻的利益分歧,其中矿工利益的损益在两个方案中体现得相对明显。


矿工主动记账是由于有两部分的激励,一是挖出新区块时系统提供的奖励,二是用户向矿工提交的手续费。由于比特币总量就2100万个,挖完就再没有新的了,而且新生比特币的数量是越来越少,记账激励越来越靠收取手续费。闪电网络方案让那些小额交易不计入主链的区块,矿工就直接少了一大笔财源。


Core开发组的利益就相对隐晦,其成员相当部分都加入了Block Stream公司。有阴谋论认为,Block Stream死守1MB不放,坐等手续费越来越高,区块确认时间越来越长,逼迫交易频繁的企业用户去使用Stream公司开发的侧链技术和服务。这是一个讲得通的推测,但并没有实据,何况比特币的价格波动一直很大,企业很难大规模采用这种不稳定的交易媒介作为货币。但另一方面,Core团队一直死咬着1M不松口也缺乏足够合理的解释。


三、Core 会赢得胜利?


SegWit方案自提出一直备受争议,然而在2017年8月8日突然峰回路转,100%的矿池都表示支持这一升级提案。2017年8月9日凌晨,SegWit在被正式激活。开始阶段,SegWit还不够普及,导致其扩容效果不明显,区块大小一直维持在1.05M水平。但是,共识在时间的作用下不断强化,2018年1月22日开始出现了大量的2M左右的区块,比预期的1.7M扩容效果要好。随着隔离见证的得到越来越多的普及,比特币交易的手续费明显下降,网络拥堵也得到缓解。2018年2月20日,世界两大交易所Coinbase以及Bitfinex 均发表了将采用隔离见证方案的声明。


这似乎显示core在赢得胜利?


并不。


2018年2月25日,Core开发组成员Cobra通过推特发表了一封公开信。在这封信中,Cobra认为在POW机制下,比特币区块链网络的算力中心化的趋势越来越明显,越来越集中到吴忌寒的比特大陆等极少数大矿池手里。然后顺便黑了一下中国政府,说中国缺乏和谐,万一把吴忌寒的矿池给取缔了,就会给比特币带来重大灾难。而这一切风险都是POW机制产生的,为了摆脱以吴忌寒为首的矿工对比特币的破坏,他提议对比特币的算法进行修改,将共识机制改为POW+POS的双层模式。


吴忌寒马上回怼,质问Cobra是要改白皮书还是改POW(Which is your priority,rewrite the whitepaper or change POW)?要是真被你Cobra改了POW,比特币的市场份额会跌到10%以下。人家以太坊社区在搞ERC20改进协议,还有很多区块链项目在创新,你们这样乱搞比特币药丸啊。


这话感觉像是两个皇子在争夺大位,一个质问另一个:你敢篡改中本先皇遗诏?!然后根本不听对方解释接着说,敌国正在磨刀霍霍,你们这样乱搞,大清药丸啊!……


撇开core和矿工的嘴上是非不论,如果core真地要修改POW机制,比特币社区将会面临更大的分裂,因为这就犹如房子要换地基。随后不久,core又收到一个坏消息。2018年2月28日,闪电网络在测试网络上运行时出现大量记忆体区段错误的新闻。Core 开发组成员 Peter Todd 称:网络未崩溃时,交易失败率比崩溃时还高,很容易受到 DoS 攻击。


可以确定的是闪电网络远未成熟,而比特币的区块包还是将继续增长,如果它不能在隔离见证扩容效果耗尽之前完成部署,扩容大战将再次上演。