通往SegWit的漫长之路:比特币最大的协议升级是如何成为现实的
隔离见证(SegWit)已在比特币上激活了。截至今天,比特币网络上的所有SegWit就绪的节点已经在执行新的规则,标志着比特币迄今为止最大的协议升级成为现实。
但是激活来之不易,也非一朝一夕达成。
这篇文章对通往SegWit的漫长道路的一个回顾。
问题
比特币交易由两个主要部分组成。一部分是“基础交易数据”,这包括了那些比特币被移动和被移向的位置(地址),以及一些其他数据。第二部分被称为“见证”,其中包含了一些加密签名数据的代码,用来证明比特币的所有者确实想要使用比特币。
正是这些签名数据给比特币交易带来了一些复杂性 。在所谓的“延展性漏洞”中,任何人都可以在比特币签名创建之后稍稍改变这些签名,且不会使签名无效。这意味着整个交易的发生,更具体地说是交易编号(txid),可以被交易的中继人或矿工改变。
这本身不一定是一个大问题。交易仍然有效, 比特币仍然会从一个地方转移到另一个地方,且这些都是在完全相同的条件下进行。但是,由于未确认的交易的存在,这的确会使创建新的交易变得更加麻烦:新的交易需要知道它们所依赖的交易编号 。这反过来又使在比特币之上构建某些第二层协议(如双向支付渠道)变得更加困难。
想法
通过“分离 ”签名数据与其他交易数据来解决延展性漏洞的想法可以追溯到几年前。
早在2012年,比特币核心的贡献者Russell O’Connor,Matt Corallo,Luke Dashjr和Gregory Maxwell以及Bitcointalk的版主“Theymos”就在IRC 比特币开发渠道上讨论过这个问题,但当时他们没有找到一个可以成功把签名从比特币网络上分离出来的方式。
一年后的2013年8月,由于比特币核心的贡献者Peter Todd和Gregory Maxwell在IRC上进行了类似的讨论,这个问题又重新浮出水面。但是在那时,两人在依照各自的想法对抗延展性方面都取得了进展 。“我是说把scriptsig [整个分开]。” Maxwell写道:“我甚至建议使用不含Scriptsigs的交易作为[交易ID]。”
一个月之后, Maxwell又和著名的密码学家Adam Back博士在IRC上讨论了延展性的问题。这次,Back建议在计算交易ID时省略签名。虽然,Maxwell评论说:“把签名从txid中分离出来可能会有所帮助,但这是一个深层的硬分叉变化… 而且实际上很难保证安全性。”
侧链
Blockstream最初为比特币区块链提出侧链扩展方案
2014年8月, Adam Back,Gregory Maxwell,以及企业家和投资者Austin Hill,和几位比特币核心的开发人员(包括Pieter Wuille博士)合作创立了比特币技术公司Blockstream 。该公司侧重于侧链技术,即可以有效地与比特币挂钩的替代区块链。
到2015年初,Blockstream的工程师决定在该公司的侧链原型产品Elements中添加一项新的功能,并于同年6月公布。该功能将通过将基础交易数据与见证数据分离到不同的数据结构,最终解决侧链上的延展性问题。
当然,这个新功能的名称就是,隔离见证。
区块大小争议
有关区块链大小的争议已经有一段时间了:从技术上讲,是从2010年10月开始;更具体的来说,是从2013年10月起;最终,是在2015年春天破土而出,进入公众视野:
前Bitcoin Core首席开发人员Gavin Andresen和Bitcoinj首席开发人员Mike Hearn认为,Bitcoin的1兆字节大小限制应该通过硬分叉来增加。硬分叉是一项与原有的比特币系统不兼容的协议更改,要求几乎整个比特币生态系统升级。这并不是一项容易的任务 – 因为比特币社区并没有对这一改变达成共识。
无论如何,2015年夏天,Andresen和Hearn宣布,他们将使用Bitcoin XT软件客户端来推进他们的计划。这一备受争议的举措使得比特币开发社区和行业处于一种紧急状态。
为了解决这一分歧,并帮助寻找有可能解决区块大小争议的方法,比特币社区在2015年下半年迅速组织了两场会议(或研讨会):蒙特利尔比特币扩容会议和香港比特币扩容会议。
在蒙特利尔会议上提出的最具发展前景的扩容建议之一是闪电网络,这是一种复杂的第二层扩容解决方案,仅在几个月前在Joseph Poon和Thaddeus Dryja发表的白皮书中进行了详细介绍。唯一的问题是:这个解决方案需要对延展性进行修复 。
软分叉
在那个时候,大多数人仍然认为隔离见证不能在没有硬分叉的情况下在比特币的主链上实现。
除了Bitcoin Core的贡献者(和Bitcoin Konts的维护者)Luke Dashjr。
在2015年10月,两场比特币扩容会议之间,Bitcoin Core的贡献者Eric Lombrozo,Pieter Wuille,Wladimir van der Laan和Luke Dashjr在IRC上讨论了一种可能的软分叉的新模式。在这次讨论中,Dashjr指出,会议上所提出的机制不适用于所有潜在的软分叉,如SegWit软分叉。
有趣的是,这件Dashjr认为是显而易见的事情 – 即将SegWit作为软分叉来部署- 从来没有其他人这么想过。甚至连Dashjr自己一开始似乎也没有意识到这种可能性的影响。
为了将SegWit部署为软分叉,见证数据必须放在比特币区块的一个新的独立结构中。而所有这些见证数据的“锚” (“Merkle树根”)都必须转移到比特币区块的一个有些非常规的部分中:奖励矿工新硬币的coinbase交易。
尽管这个做法有些不寻常,在之后的几天和几周内,Bitcoin Core贡献者意识到这种方法带来了一个额外的好处。通过把见证数据放在比特币区块上一个独立开来的结构中,比特币区块的大小会增加,但这些变化并不会被未升级的节点注意到。这实际上可以在不增加比特币现有区块大小的情况下增加比特币区块的大小 。
在第二次比特币扩容研讨会的前几周,一些比特币核心的贡献者认为,他们可能终于找到了一个至少可以暂时区块大小限制争议的解决方案。隔离见证将以向后兼容的方式有效地提高区块的限制,同时修复长期存在的延展性漏洞,从而实现更先进的扩容解决方案,如闪电网络。
一个三赢的解决方案 – 至少他们认为是这样。
展示
隔离见证 – 作为软分叉 – 首先由Pieter Wuille于2015年12月在香港举行的比特币扩容研讨会上提出。很多人是第一次听到这个提案,且最初该提案似乎收到了热情欢迎。
在第二次“比特币扩容”会议结束之后不久,Gregory Maxwell就提出了一份以SegWit为核心,被称为“扩容路线图”的计划。这一路线图很快得到了Bitcoin Core开发团队以及比特币生态系统中的其他开发人员和用户的支持。
批判
尽管最初众人都对此提案感到非常兴奋,隔离见证也受到了许多批判。
有关提出的的协议升级的担忧各不相同。前比特币核心的贡献者Jeff Garzik – 其成立了自己的开发公司Bloq- 并不认为SegWit是一个充分的短期扩容解决方案。 同时,Bitcoin XT的首席开发人员Mike Hearn也没有完全相信这个提案:他把这个解决方案视为一种“会计诈术”,并在不久之后完全退出了比特币的开发。
替代软件客户端Bitcoin Classic的开发人员Jonathan Toomim认为,这个提案既“难看又笨拙”,并建议最好将其作为硬分叉来试试。甚至Bitcoin Core的贡献者Peter Todd也有自己的担心,特别是与挖矿有关。
然而,这些问题中的大多被都被认为是可解决的,不可信的或值得Bitcoin Core开发团队的权衡。软分叉升级就此开始发展。
发展
尽管 “隔离见证”的一个版本已经在Elements上实现,但比特币主要版本的代码大部分尚未被写入,这不仅仅是因为需要将其作为软分叉来实现,还因为比特币上 的SegWit将会包含一系列Elements中不存在的新功能:例如,增加区块大小所需的“见证折扣”,点对点网络的新兼容性等。
具体的比特币改进计划BIP141由Pieter Wuille,Ciphrex首席执行官Eric Lombrozo和独立Bitcoin Core贡献者Johnson Lau撰写。到2016年1月初,随着有关扩容的辩论持续升温,这些人和其他Bitcoin Core贡献者为协议升级启动了一个初始的专用测试网络,称为SegNet。两个星期至后,这个测试网络被公开,以供更广泛的比特币开发社区进行测试。到3月份,SegNet已经升级到可以支持闪电网络的测试版本。
在未来几个月中,开发一直在进行,吸收比特币开发社区的反馈意见,修复漏洞,改进代码库,并推出新版本的SegNet。
与此同时,比特币的贡献者也与更多的比特币行业从业者展开了交流,随着时间的推移,承诺支持隔离见证的公司和项目数量也一直在增长。
截至同年6月,“隔离见证”共新增了4,743行代码(包括测试代码),并提出删除或修改554条现有的Bitcoin Core代码行。在几位贡献者对代码进行了更深入的审查之后,Bitcoin Core的主要维护人Wladimir van der Laan在六月底之前将这些代码并入了Core的“主分支”中。
会议
在开发SegWit的同时,有关比特币区块大小的争论在比特币社区再次升温。这一次是由Bitcoin Classic带头,一些比特币公司和矿工似乎下定决心使用硬分叉将区块大小限制增加到2兆字节。
在香港,几位Bitcoin Core贡献者,矿池运营商和其他比特币行业的成员举行了一次紧急会议,讨论了扩容的问题。
会议促成了一项被称为“比特币圆桌共识”(或“香港共识”)的协议。出席会议的Bitcoin Core贡献者和整个比特币开发社区一同开发一个基于隔离见证改善之上的安全硬分叉。反过来,这些矿工们同意在Bitcoin Core发布了一个包含上述硬分叉代码的版本之后在生产环境中运行隔离见证。这场危机似乎已经被避免了- 尽管人们很快就会明白并不是每个人都对协议的结果感到满意。
几个月后,更多的Bitcoin Core贡献者和矿池运营商在加利福尼亚举行了会议。在会议结束之后,出席会议中的Core贡献者确信隔离见证将被矿工激活。
发布
大约在最初计划日程的六个月之后 – 原定于4月发布 – 2016年10月,隔离见证在Bitcoin Core版本0.13.1 中正式推出。协议升级也在其他几个比特币客户端中实现,比如Bitcoin Knots和Bcoin。
使用称为“VersionBits”(BIP9)的激活方法(BIP9)(旨在最大程度地减少网络中断),95%的矿工(通过哈希率)必须表示支持才在比特币网络上激活SegWit。从11月15日起,比特币矿工可以表示支持这个协议升级。同时,用户也被鼓励升级客户端。目前看来,许多用户似乎的确进行了升级。
基于与矿池运营商的会议,以及SegWit将是比特币的福音的普遍信念,许多人预计软分叉将很快会被激活。
政治
但事实并非如此。事实证明,香港圆桌会议的几位与会者对他们实际签署的内容有不同意见。
比特大陆的联合首席执行官吴忌寒特别表示,只有在Bitcoin Core开发团队同时实施硬分叉来增加区块大小限制的情况下,他才愿意激活SegWit。其他矿池,包括F2Pool,HaoBTC和bitcoin.com也没有用信号支持软分叉。
此外,一个新的矿池在中国出现了:ViaBTC。由于其与比特大陆关系密切,ViaBTC拥有足够的哈希率可以单独阻止SegWit激活。而其运营商杨海波则将自己定位为对拟议的协议升级的坚定批评者。
SegWit的激活似乎很遥远。
UASF
2017年2月,在SegWit正式发布的三个月后,一个新的机遇出现了。
曾经为莱特币做出贡献的匿名开发者“Shaolinfry”在比特币开发邮件列表和热门的bitcointalk.org论坛中提出了一项新提案:“用户激活软分叉”或“UASF”。
Shaolinfry在他的电子邮件中说,已经成为软分叉标准的哈希率激活机制从来不是一个“投票”。他写道,“信号方法被大部分人误解为意味着哈希率正在对一项提案进行投票,而且很难在更大范围的社区中纠正这种误解。
Shaolinfry提出了一种替代方案:用户激活软分叉(UASF)。与哈希率激活不同,用户激活软分叉将使用“指定日激活”,其中节点会在将来的一个预定时间开始强制执行新规则。“只要UASF被大多数的经济参与者执行,这应该会迫使大多数矿工遵循(或激活)软分叉。”
这个想法立即在比特币论坛和社交媒体上引起轰动。而当前BTCC首席运营官和直言的SegWit倡导者缪永权为UASF软件的开发设立了一个奖励基金时,似乎这个建议可能成为现实。
专利技术
2017年4月的第一个星期,Gregory Maxwell通过比特币邮件列表公开了一个爆炸性的消息。
Maxwell声称其对某制造商的ASIC采矿芯片进行了逆向工程,发现其中包括获得专利的AsicBoost技术。而更重要的是,Maxwell还透露,这种技术的秘密使用与通过软分叉部署SegWit不兼容。他说:“这种不兼容性很大程度上解释了挖矿生态系统中有些人的一些令人费解的行为。”
尽管Maxwell的电子邮件中没有提及具体的ASIC制造商,但比特大陆承认其在挖矿芯片中添加了专利技术 – 尽管它否认在比特币的主网上使用过这些技术。
不管怎样,对于一些用户来说,这项发现加强了某些人在比特币网络上启用隔离见证软叉的愿望。而且,随着哈希率激活变得愈加不可能,用户激活软分叉也变得越来越像可以解决这个问题的办法。
BIP148提案
在提出了UASF的大致想法之后,Shaolinfry和其他十几位比特币社区的成员在比特币核心社区的Slack上开设了一个UASF频道。
该频道成为了有关该倡议的讨论和组织的中心。最初选中的激活日为10月1日,然后改到了8月1日,以便应对可能出现哈希率过低的情況。 Shaolinfry撰写了具体的比特币改进方案:BIP148。Open Dim的创始人Rodolfo Novak也建立了一个信息网站来推广这个想法。
最初的计划是让交易所和其他企业支持UASF。如果这些公司支持这一建议并强制执行软分叉,那么实现所希望的经济大多数就指日可待。
但是,UASF并没有像它的支持者所希望的那样获得支持。尽管许多公司和一些开发人员似乎都支持BIP148,但没有一家大型交易所或其他企业宣布支持,一些公司甚至公开反对这一倡议。
而到4月中旬,Gregory Maxwell在比特币开发邮件列表中表示,他认为BIP148也不是一个好主意。作为最受尊敬和最有影响力的比特币核心贡献者之一,Maxwell对该倡议的拒绝产生了重大影响:此版本的UASF似乎失去了所有的动力。
相反,有些人开始使用UASF的替代品:BIP149。
山寨币
许多山寨币都是基于比特币的代码库。这意味着为比特币而开发的SegWit代码在很大程度上是可以与这些替代加密货币是兼容的。不出所料, 一些山寨币决定实施SegWit。早在2017年1月,Groestlcoin第一个了激活隔离见证。
但其他货币也在纠结。 莱特币,Vertcoin和Viacoin似乎都被比特币的政治游戏所吸引。这些货币在很大程度上依赖与比特币相同的矿工,而且其中大多数都没有发出信号支持升级。
据称,这是由于技术问题或其他原因造成的,但是,正如Viacoin的首席开发人员Romano所属:“似乎更有可能的原因是他们不愿意在山寨币上激活隔离见证,因为这样会给他们更少的理由推迟比特币上隔离见证的激活“。
到2017年4月,这种态度使得莱特币的创始人Charlie Lee主张在莱特币上实施用户激活软分叉。他的倡议收到了莱特币用户的热烈响应;很快, 莱特币矿工,Lee和莱特币生态系统的其他成员安排了一场在线会议,并达成了莱特币全球圆桌会议决议。为了换取Lee的一些承诺,矿工们同意激活SegWit。 ShaolinFry等人认为这次UASF的努力是成功的。
在隔离见证在莱特币上激活后的一周内,一个不知身份的人做出了一个大胆的举动。他(或她)将价值100万美元的莱特币发送到了一个由隔离见证保护的地址,挑战任何人窃取这笔资金。到目前为止,赏金仍然没有变化,这进一步增强了人们对这项技术的信心。
纽约协议
与此同时,有关区块大小的争论仍在激烈进行。 作为另一个通过硬分叉来增加比特币区块大小的客户端软件, Bitcoin Unlimited在比特币矿业社区中十分受到欢迎。特别是在比特大陆的吴先生的支持下,这个项目似乎正在朝着一个潜在的(有争议的)硬分叉方向发展。
这个潜在的威胁,以及在比特币区块链“分裂”的可能性,是DCG创始人兼首席执行官Barry Silbert在2017年的纽约共识召开之前举行会议的理由。 该会议最初是在一份针对比特币企业家和其他知名行业成员的私人电子邮件列表中宣布的,并把比特币行业中 的一大部分人聚集到了一起,包括矿工在内——不过,这里面显然没有Bitcoin Core的贡献者。
那次会议的结果通常被称为“纽约共识”。参与者们对他们认为是那些希望使用硬分叉和那些更想要用SegWit增加比特币区块大小的人之间的妥协达成了一致意见。根据RSK的创始人Sergio Demian Lerner最初提出的想法,SegWit会在特定条件下激活,同时也会有一个硬分叉将比特币的“基本区块大小限制”增加一倍。
但并不是比特币生态系统中的所有人都支持该协议,而其中的一个具体的问题尤其突出。 “纽约共识”下的SegWit激活的条件与Bitcoin Core开发团队提出的条件基本不兼容,而Bitcoin Core代码已被比特币用户广泛采用。
不能容忍的少数
虽然许多人从支持BIP148 UASF转而支持BIP149,但并不是所有人都完全放弃了第一个UASF提案。
在Shaolinfry提出这个概念的时候,他的前提是它将得到经济大多数的支持,否则,它应该在指定日之前就中止。但是,UASF Slack频道上的一些用户却有着不同的想法。其中一些 – 包括Bitcoin Core和Bitcoin Knots的开发人员Luke Dashjr – 正考虑激活软分叉,不管比特币生态系统的其余部分会作何反应。即使他们是少数,即使他们会实际上变成一种山寨币,他们也会继续进行UASF升级。
在五月中旬左右,Alphonse Pace将这一决定与统计学家,作家 Nassim Nicholas Taleb所描述的一个博弈论概念联系起来:“不能容忍的少数”。简而言之,这个想法的前提是即使是经济少数人也应该能够促使矿工激活分离见证软分叉。否则,他们将会失去他们的“客户群”(比特币用户)。
由于有关AsicBoost的传闻,莱特币上隔离见证的激活以及对“纽约共识“的不满 – 这一次,在博弈论的支持下,BIP148的支持在社交媒体和留言板上越来越多,再次成为一股热潮。
另外,还有几篇文章讨论了UASF发展的潜力,社交媒体,YouTube频道,和其他讨论平台上的大量争论则紧随其后 。与此同时,Eric Lombrozo也在全力支持这项提案,而缪永权分发的UASF帽子更是风行一时。受到即将发行的Electrum 钱包的代号的启发,8月1日被称为“比特币独立日”。
唯一的问题是:BIP148和纽约共识的激活方法与纽约共识和Bitcoin Core团队提出的激活方法一样,是不兼容的。
Kludge
Bitmain Warranty的工程师James Hillard成了救星。 Hilliard提出了一个稍显复杂但巧妙的解决方案,可以使一切都能互相兼容:Bitcoin Core开发团队提出的隔离见证激活,BIP148 UASF和纽约共识激活机制。他的BIP91可以使比特币保持完整- 至少在隔离见证激活的时候。
只要大多数矿工在8月1日之前激活BIP91,所有比特币节点都应该仍然是同一网络的一部分。这是一个相对较小的时间窗口,因为该解决方案在5月下旬才被提出,但是纽约协议的主要开发人员Jeff Garzik接受了该提案,并计划在8月1日之前的几周内发布该协议产生的软件客户端。这是可行的。
激活
到7月中旬,比特币矿工们已经错过了及时使用Bitcoin Core开发团队提出的方法与BIP148兼容来激活隔离见证的机会。因此,市场似乎对BIP148链和非BIP148链之间存在的潜在的“分裂”而感到紧张。在一周的时间里,比特币的汇率从2500美元左右下跌至1900美元:这是一个多月以来的最低水平。
比特币矿业社区可能被这些市场走势吓了一惊,它开始迅速发出信号表示对BIP91的支持,甚至比纽约协议规定的时间还要提前。而在7月20日,即BIP148指定激活日(原定于8月1号)的前10天,BIP91就被锁定了。两天之后,它就被激活了。
随着BIP91被锁定,隔离见证正式锁定也只是时间问题。隔离见证最终在8月9日被锁定 -—— 而早在8月8日,事情就已经达到了不能回头的地步。
比特币将在两个星期的宽限期之后“正式”开始实施隔离见证。
采用
当然,隔离见证的最后一步是实际的用户采用。由于隔离见证在本文发布时才刚刚启动,所以我们不可能知道实际使用升级的用户数量和速度。一些批评家(也许其中最着名的是Garzik)预测广泛采用可能需要一年甚至更长的时间。其他一些人,包括一些钱包和库的开发人员,认为他们可以在几个星期内使用这项功能,或者他们已经准备好了。而依赖于升级的其他技术,如闪电网络,还有Merkelized抽象语法树(MAST),原子交换,更快的硬件钱包交易签名,以及支付处理器模式下的TumbleBit,都处于不同的开发阶段。
这是一条漫长的道路,但是从今天开始,任何想要使用隔离见证的人应该能够如愿以偿了。
来源:https://bitcoinmagazine.com/articles/long-road-segwit-how-bitcoins-biggest-protocol-upgrade-became-reality/
作者:Aaron van Wirdum