比特币隔离见证的前世与今生

in #cn7 years ago (edited)

原文: https://bitcoinmagazine.com/articles/long-road-segwit-how-bitcoins-biggest-protocol-upgrade-became-reality/
编译: Niking

SegWit
隔离见证(SegWit)已经成功的在比特币网络上激活。隔离见证已然成为比特币历史中最重大的一次协议升级。

但是这一刻来的并不容易。

现在让我们从头回顾一下隔离见证的历史吧。

问题来源

比特币交易主要是由两部分数据组成。其中一部分为“基础交易数据”,它负责记录比特币的来源和去处。而另外一部分则是“见证数据”,这部分数据由一些加密数据组成,用于证明这些交易请求是真实可信的。

正式因为见证数据具有一定的复杂性,这就给比特币网络带来了所谓的“延展性攻击问题”。由于比特币交易的签名可以被打包、广播这币交易的矿工私自更改,这样矿工就可以伪造出一个错误的txID(交易号),对比特币网络进行扰乱。虽然这种攻击不会对正常交易产生严重影响,因为矿工在验证这笔交易的时候会发现这个问题并拒绝这笔交易,而发出正确txID的交易最终会被成功打包。但是这种延展性攻击,却会让整个比特币网络状况变得更为复杂,因此要在这么复杂的情况下搭建新的比特币应用层协议(如双向支付渠道)会变得相当困难。

延展性攻击
*2015年比特币网络的延展性攻击示意图,红色部分可认为是延展性攻击(被拒绝的交易)

隔离见证的设想

把交易的签名数据从交易数据中剥离出来,用于解决延展性攻击的想法,其实已经在许多年前浮现出来了。
在早2012年,比特币核心团队的Russell O’Connor, Matt Corallo, Luke Dashjr and Gregory Maxwell以及Bitcoin Talk的Theymos已经在IRC聊天室里探讨过这个问题。但那时候还没有一个成熟的方案来达成这个目标。

2012年关于延展性问题的聊天记录
*2012年开发者们对延展性问题的讨论

一年后的2013年8月份,Bitcoin Core的Peter Todd及Gregory Maxwell再次谈起了该问题,而这次他们带来了一些新的思路。其中Maxwell就提出了让签名部分完全脱离交易数据的思路。

再往后一个月,Maxwell与著名的密码学家Dr. Adam Back针对该问题进行进一步的探讨。Adam Back建议将签名数据从txID中剔除掉,而Maxwell同时表示如果要实施这个变动,一次严重的硬分叉将无法避免,并对该分叉表示出了忧虑。

侧链

比特币侧链
*Blockstream公司最初为比特币网络提出的侧链方案

到了2014年,就是前面提到的密码学专家Adam Back和Bitcoin Core的Gregory Maxwell还有一些企业家及投资者组建了Blockstream公司。该公司专注于开发可以有效锚定于比特币网络的侧链技术。

2015年初,Blockstream公司的工程师决定在公司的侧链产品上植入一个新功能,并与同年的6月份公布了这个方案,这就是大名鼎鼎的 - 隔离见证 (SegWit)。

关于区块大小的争论

*编者按: 硬分叉可以想象成一个不向旧版本兼容的升级,软分叉则可以兼容所有旧版本的挖矿软件
*比特币根据现有规则,每个挖出来的区块都限制在了1MB以内

区块扩容之争来源已久,该争论最早源于2010年的10月份Bitcoin talk论坛的一个帖子,随后也有来自不同地方的声音,而最后于2015年全面爆发。原Bitcoin Core的首席开发者 Gavin Anderson及Bitcoinj的Mike Hearn都认为,比特币应该通过一个硬分叉来升级1MB的区块限制,但是由于是一个硬分叉,需要得到几乎所有节点的支持才能完成,这几乎是一个不可能的任务,因为当时还没有任何组织为这个计划达成任何共识。

不管怎么样,Andersen和Hearn在2015年夏季,宣布他们将继续推行他们的计划,并发布了Bitcoin XT客户端软件,这一举动则震惊了整个开发者社区和业界。为了尽快搞清问题及解决扩容的争端,2015年底紧急召开了两个会议,分别为Scaling Bitcoin Montreal (蒙特利尔扩容会议)及 Scaling Bitcoin Hong Kong (比特币扩容香港会议)。

在蒙特利尔扩容会议里的闪电网络(the lighting network)提案得到相当的关注,这个提案要获得实施的一个前提就是,延展性问题必须得到解决。

当天视频回顾:

软分叉

IRC Chat
*Eric Lombrozo (CodeShark), Wladimir van der Laan (wumpus), Luke Dashjr (luke-jr) and Dr. Pieter Wuille (sipa) 在IRC里面关于Segwit软分叉的讨论

到现阶段,大多数开发者都认为硬分叉是解决延展性问题的唯一的出路。而Bitcoin core的开发者Luke Dashjr在IRC里与其他开发者讨论时,提出了一个所有其他人都没考虑过的方案 - 通过软分叉来实施隔离见证。

如果要通过软分叉来实施隔离见证,那么见证数据就要放置在比特币区块的一个新位置。见证数据的锚点(Merkle根,这部分有些技术,有兴趣的可以参考https://en.wikipedia.org/wiki/Merkle_tree )则要移去比特币区块的一个非常规位置(奖励矿工新币的币基交易位置)。随后Bitcoin Core的开发者们都开始意识到这个方案的可行性。在比特币这个新位置植入见证数据,也就是变相的增加了区块大小,原有的位置中就能写入更多的交易数据,而无须对原区块的大小限制进行扩容。

到此为止,部分Bitcoin Core开发者认为他们已经找到了一个临时解决扩容争端的方案,软分叉的隔离见证可以解决区块大小问题的同时,也不会造成硬分叉,还能在闪电网络的实施铺垫好基础。这是一个双赢的结果,至少他们在这一刻是这么认为的。

演讲

在2015年12月份的第二次扩容会议(香港扩容会议),Pieter Wuille首次对软分叉的隔离见证方案进行了讲解,许多第一次听到了这个方案的公众,都对该方案表示欢迎及支持。

关于软分叉隔离验证的演讲视频

就在这次扩容会议结束后不久,Gregory Maxwell就把隔离见证列入了扩容路线图中的核心项目。后来这个路线图很快的被Bitcoin Core开发团队及其他比特币生态用户所采用。

反对的声音

尽管隔离见证在一开始获得了许多的掌声,但是也同样迎来了对它的质疑。
Bloq的创始人Jeff Garzik认为隔离见证并不是一个有效的短期扩容方案。同样,Bitcoin XT的首席开发者Mike Hearn也对它嗤之以鼻,认为它只不过是在玩弄“会计上的把戏”,随后他就完全退出了比特币的开发团队。

另一款比特币客户端软件Bitcoin Classic的开发者则评论这个方案“即丑陋又糟糕”,并建议通过硬分叉来升级会更为妥当。随后连Bitcoin Core的Peter Todd也认为这个方案存在问题,他的顾虑则主要集中在挖矿的问题上。

所有这些浮现的问题,Bitcoin Core都依然认为能解决,或者值得付出一定的代价去实现,因此软分叉的开发依然持续。

#开发

尽管隔离见证的一个版本已经在比特币Elements项目( www.elementsproject.org 一个开源的比特币侧链项目)上植入了,但是给比特币主链的代码却却还没任何进展,因为它不仅需要一个软分叉来置入,而且隔离见证的许多新功能还没在Elements上得到开发,例如“见证折扣”等等。

为隔离见证设立的比特币改进方案BIP141,是由Pieter Wuille, Ciphrex CEO Eric Lombrozo及独立Bitcoin Core开发者Johnson Lau发布的。在2016年1月,扩容争论争持不下的时候,这些开发者已经在一个代号为SegNet的测试网络中测试了这个协议升级。两周后,这个测试网络开放公测,并于两周后再次升级,支持测试版的闪电网络。在随后的几个月,团队不断的听取社区的意见,持续的进行Debug及测试网络的迭代升级。

BIP141
BIP141 SegWit的Github代码页面,在这里所有人都可以对代码进行审阅,提出意见,跟踪进度等等

同时,Bitcoin Core开发者则把触角伸的更远,从比特币生态圈里面拉拢了一大批有影响力的隔离见证支持者。

到了6月份,隔离见证完成了4743行的代码(包含测试代码),以及对Bitcoin Core的代码发出的554行代码的修改建议,在多位开发者的代码审计完成后,Wladimir van der Laan在月底正式把这代码添加到了Bitcoin Core客户端中了。

会议

关于区块大小的争论似乎一直没有停止过,就在SegWit持续开发的过程中,Bitcoin Classic挑起了新的问题,一部分比特币企业及矿工决定通过一个硬分叉,把区块大小扩展至2MB。

于是,又一次紧急会议在香港召开了,也就是著名的“比特币圆桌会”也称香港共识。与会的有Bitcoin Core的开发者、比特币矿池的代表及其他业界相关成员。会议结束后,Bitcoin Core的与会成员同意向Core开发团队及更多的社区推进大区块的硬分叉方案,作为交换条件,矿工们也妥协,同意在硬分叉前运行支持隔离验证的软件。这次危机似乎就这样化解了,但很快双方都发现对这次妥协的结果并不满意。

随后的几个月,双方在加州进行了一次更大规模的会面,会面后Bitcoin Core开发者确信隔离见证最终会被矿工激活。

支持隔离验证的客户端发布

跳票了6个月后,Bitcoin Core支持隔离见证的正式版本 0.13.1,终于正式发布了。同样,该协议升级也在其他客户端软件如Bitcoin Knots, Bcoin中被采用。

这次激活使用的是"VersionBits"(BIP9)方案,旨在升级对整个比特币网络的影响最小化,因此激活的条件是需要得到95%的算力支持,矿工可以从2016年11月15日开始发出支持信号,用户只要升级了自己的Bitcoin Core客户端后,就可以发出对BIP141隔离见证的支持信号。

SegWit Ready
2017年8月份,SegWit的支持信号已经达到了95%以上了(来源 luke.dashjr.org )。

基于Bitcoin Core团队与矿池的几次会面,以及公众普遍看好隔离见证对比特币的作用,大家都认为隔离见证很快就会通过一个软分叉来激活了。

生态政治

事实上,事情没那么简单。香港圆桌会议的多个与会者最后都对他们签署过的共识表示异议。首当其冲的是比特大陆(三大矿池之一)的吴忌寒,他表示只有在Bitcoin Core客户端软件含有大区块硬分叉代码后,才会开始发出支持信号。同样,其他几个著名矿池如F2POOL(鱼池)、HaoBTC及Bitcoin.com同样没有发出软分叉的支持信号。
antpool.png
*比特大陆要求大区块来交换隔离见证的激活

与此同时,一个与比特大陆关系密切的新矿池ViaBTC出现了,它拥有足够阻止隔离见证激活的算力,同时他的运营者杨海坡则是一个坚定的隔离见证反对者。

隔离见证,从现在看来,又向我们远离了一步。

UASF (用户激活的软分叉)

shaolinfry
*比特币及莱特币的匿名开发者Shaolinfry的头像图片

2017年2月份,也就是隔离见证正式发布的3个月后,一个匿名开发者"Shaolinfry"在比特币开发邮件列表及著名的bitcointalk.org论坛里面发布了一个新方案以解决激活问题,这就是著名的UASF(User activated soft fork 用户激活软分叉)。

Shaolinfry在邮件中介绍到,认为投票(发出支持信号)只能通过算力途径是一个普遍的误解,他同时提出了UASF方案,这个方案不需要通过算力投票激活,但是它有一个开始强制执行的起始日期,从这个特定的时间点开始,所有的节点都会开始强制执行这套方案,只要生态圈的大多数节点(注意,只要是节点而不是算力)执行这个方案(不发出支持信号的区块会被拒绝),就可以倒逼矿工去发出支持信号,从而激活隔离见证。

这个方案提出后在社区和社交媒体里得到了广泛的讨论,前BTCC的COO Samson Mow马上成立了一个给UASF软件开发的奖赏基金,这样看来,这个方案很快会成为现实。

专利技术

在2017年四月份的第一周,Gregory Maxwell在比特币开发邮件列表中发布了一个重磅消息,消息称他们逆向工程了一个矿机的ASIC挖矿芯片,发现里面采用了一个叫做AsicBoost的专利技术,如果使用这个技术进行挖矿,则会与软分叉的隔离见证产生兼容性问题。尽管Maxwell的邮件里没有告知是哪款矿机,但随后比特大陆确认了他们的蚂蚁矿机有采用这个技术,并否认他们有在比特币主网采用该技术挖矿。

不管怎么样,这个事件让更多的的用户感到,通过算力激活隔离见证变可能性变得越来越小了,而通过UASF来激活,看来是唯一的途径了。

BIP148方案

在提出UASF方案后,"Shaolinfry"和其他的一些比特币社区成员开通了UASF的Slack聊天频道。而这个频道随即成为了UASF的根据地。激活的起始日(Flag Day)最初设置在2017年10月1日,随后提前到了2017年8月1日,以应对低算力支持的可能性。这时"Shaolinfry"也发布了BIP148方案,Open Dime的创始人Rodolfo Novak同时创建了一个网站来推广UASF方案。他们最初的计划是争取多数的交易所、生态企业支持UASF,这样会影响到更多的用户参与进来。但是UASF并没有得到他们所期望的关注度,只有为数不多的一些企业和开发者表示支持,大型交易所及其他的一些企业都没有表态,甚至有些还发出了反对的声音。

到了4月中旬, Gregory Maxwell也在邮件列表里发声反对BIP148。由于Gregory Maxwell的影响力,BIP148计划直接被抛弃了。 也就是这样,一个新的UASF方案 BIP149 应运而生。

其他币(山寨币)

许多山寨币都是根据比特币的源码制作的,因此隔离见证也适用于这些山寨币。与预期的一样,许多山寨币已经率先的采用了隔离见证,2017年1月份Groestlcoin成功激活隔离见证,成为第一个使用隔离见证的山寨币。

而其他的一些币则没那么幸运,如莱特币、维特币、Viacoin,由于他们依赖于比特币矿工的算力,因此也不可避免的卷入了比特币的政治斗争中,多数矿工都不会为他们发出隔离见证的信号。

Viacoin的首席开发者Romano解释到:“虽然他们宣称不为山寨币发出支持信号是因为技术原因或其他种种原因,说到底,他们是担心一旦为山寨币发出隔离见证信号就会成为对手把柄。”

2017年4月份,莱特币创始人Charlie Lee宣布支持隔离见证,随后召开了莱特币全球圆桌会议,很快莱特币矿工们同意了激活隔离见证,到此"ShaolinFry"及其他开发者一致认为这是UASF的一次成功。

在隔离见证于莱特币网络激活后的一周,一个神秘人物向一个隔离见证地址打入了价值100万美元的莱特币,声称任何人如果有能力攻击这个地址的话,可以随时提走里面的莱特币,到发文的时间,这笔钱依然安全的存放在该地址里,这也活生生的为隔离见证技术的安全性做了一次最好的公开宣传。

纽约共识

另外一方面,比特币的扩容争端依然僵持不下,一款支持硬分叉扩容的比特币客户端软件 - Bitcoin Unlimited 得到了许多矿工的关注,尤其是比特大陆的吴忌寒,而这则造成了新的硬分叉危机。

而该事件的起因,则缘起于DCG的创始人及CEO Barry Silbert在纽约召开的一个共识会议。这个会议本身是在一个由大型比特币生态企业成员组建的私密的邮件列表中发布的,这个会议的参与者都是一些著名的比特币企业、矿工,但不含Bitcoin Core的开发者。这次会议的成功,也就是后面大家熟知的纽约共识(或者说是SegWit 2x) ,即隔离见证会在满足一定条件后被激活,然后区块会通过硬分叉增加至2MB。

Segwit 2X
*纽约共识中最重要的两条

很显然的是,并不是所有的人都支持纽约共识,尤其一个非常具体的一个问题就是,纽约共识对于隔离见证的激活的条件与Bitcoin Core的激活条件相距甚远,而Bitcoin Core的节点已经遍布全网,统一起来是一个新的挑战。

偏执的少数派

比特币独立日
*BIP148支持者的作品

BIP148虽说失去了大部分用户的应用,但还是有它的死忠派。Shaolinfry提出这个方案时,考虑的是会被许多生态企业支持,如果得不到支持,那么就应该在标志日之前放弃使用该方案。但在UASF的Slack聊天室内的一些用户,包括Bitcoin Core及Bitcoin Knots的开发者Luke Dashjr都在考虑,无论其他方案是如何部署的,他们将依然运行这个升级方案,就算会产生新的分叉也在所不惜。

五月中旬,Alphonse Pace把这个决定与博弈论中的“偏执的少数派”(intolerant minority)联系起来,意思是说在比特币生态里,少数派也拥有力量去倒逼矿工执行隔离见证的软分叉。

受到AsicBoost丑闻、莱特币成功激活隔离见证、对纽约共识的不满等多个因素的影响,BIP148又重新回到了公众的视野。
随后更多的争论在各种社交媒体、Youtube上展开。受到Electrum钱包开发代号的启发,8月1日就有了比特币独立日的称谓。

现在剩下的问题就是,如何激活隔离见证,因为无论是BIP148还是Segwit 2x(纽约共识方案)或是Bitcoin Core的方案,他们彼此并不兼容。

过渡方案

最后的救兵是来自 Bitmain Warranty的工程师 James Hilliard 的 BIP91 方案。他提出了一个非常聪明并取巧的方案,让所有的激活方案兼容,至少最终能成功激活隔离见证。

只要在8月1日之前,大部分节点运行了BIP91方案,不兼容的隔离见证分叉就不会出现。但这时离8月1日只剩下2个多月的时间,纽约共识的一位主要开发者 Jeff Garzik立即展开了兼容BIP91客户端的开发工作。

隔离见证的激活

BIP91成功锁定
*BIP91成功锁定

2017年7月中,由于比特币矿工错过了激活Bitcoin Core方案的时间窗口,导致了市场的恐慌,比特币价格立即从2500美元跌至当月低位1900美元一枚。受到市场的影响,随即所有矿工立马行动起来发出了BIP91的支持信号,支持率一下超过了纽约共识设定的进度,就在8月1日的前十天,BIP91成功锁定,锁定两天后,BIP91正式被激活。

BIP91成功锁定,也就意味着隔离见证的锁定已经是板上钉钉的事情了,到了8月9日,隔离见证成功锁定,锁定后再过两周,隔离见证就会被成功激活。

应用

SegWit
*由Albert Dros设计的隔离见证Logo

隔离见证的激活,最终还是要落到应用上,由于隔离见证只是刚刚被激活,我们能了解到的信息还是相当有限,但是我们确信,一切只是刚刚开始。

欢迎阅读Niking的其他文章

NMR - Numerai 一个总发行量只有225万枚,还在持续减少的币种简介
https://steemit.com/nmr/@niking/nmr-numerai

你知道有些币会在5年内通胀 800% 吗?
https://steemit.com/cn/@niking/2w96sa

IOTA - 物联网与区块链的碰撞
https://steemit.com/cn/@niking/iota

Sort:  

Interesting
I will follow you to see your future posts!

很棒的介绍!

写得非常好,感谢