Balenciaga on Nostr: 比特币的过去、现在和未来(四):区块体积大战(4) ...
比特币的过去、现在和未来(四):区块体积大战(4)
Blockchainlab 里发生的事情
2016 年 7 月 27 日,blcokchainlab 团队里也发生了分裂:Lawrence Nahum(劳伦斯·那恩)(首席科学家)被 Blockstream 挖走了 。Blockstream 是大区块主义者眼中的三大反派之一,自然也是小区块主义者眼中的三大英雄之一。这三大团体分别是:
Bitcoin Core;
Bitcointalk 论坛和 r/bitcoin 板块的版主组合,也就是德默斯和 cobra(科布拉)。
Blockstream。
Blockchainlab 中的一号名人同时是 Blockstream 的雇员; 还有另一位成员叫做 “Franco Cimatti(HostFat)”,是一位狂热的大区块主义者(但他更多是从言论自由的角度反对糟糕的审查:也就是说他并没有那么主张 “大区块更好”,只是主张每个人都应该有机会参与改变比特币和表达看法)。
Blockchainlab 中的裂痕变得不可弥补,而祖科也不再尝试维持派系的平衡,他开始选边站,并向品达·王提议在米兰举办 Scaling Bitcoin 的第三次会议。
两个 “大事件” 被认为是祖科和 blockchainlab 表明了自己的立场:
承办和组织一场倾向于小区块主义者的会议;
直接参与会议议程的起草,因此祖科和其他组织者可以决定哪些论文可以上台演讲、哪些不行;又因为会议有两天,有数十个演讲,所以决定必定是在定性的基础上作出的。主要的话题是,给定区块的体积有上限,如何才能最好地扩展协议?
除了主要话题,组织者依然留下了一个环节来讨论激进改变共识机制和提高区块体积限制的可能性。有一位 Meni Rosenfeld(曼宁·罗森菲尔德)准备了关于弹性限制的演讲:他的想法是你可以在交易池较慢满时临时让区块变大,并在交易池清空时让区块变小。显然,不是由矿工来决定何时扩大和收缩区块,而是由一套规则,根据最低的可入块交易费水平来决定。这个提议没有展示出来,因为论文的质量实在是太糟糕了。但 Bitcoin Unlimited 客户端在这个环节出现了,在 Bitcoin Classic 死亡之后,Bitcoin Unlimited 成了大区块主义者们凝聚共识的新圣杯。
彼特·陶德介绍了客户端验证比特币(client-side validated Bitcoin)的想法,标志着 RGB 的诞生。他声称:矿工不仅不需要决定区块的体积,甚至不需要知道交易是有效的还是无效的。矿工只需要因为在链上包含他称为 一次性密封条(single-use-seal) 的东西而得到支付。如果 Alice 给 Bob 支付了,那么支付证明(包括签名、输入脚本和输出脚本),都应该点对点地传递给 Bob,只有交易的哈希值需要留在链上,这样甚至连矿工都不知道 Alice 和 Bob 在干什么。这可以提供巨大的可扩展性和惊人的隐私性;
唯一被讨论和容忍的共识变化是使用软分叉激活、可能增大区块体积的隔离见证。隔离见证可以用软分叉来实现,因为旧的节点将只能看到交易的一小部分(输入和输出),不再包含花费脚本;花费脚本会放在一个并行的、称作 witness program(见证程序) 的数据结构中,放到区块之外;区块中只会包含这些见证程序的承诺;结果,新的节点可以通过的单个区块理论上可高达 4 MB,而在旧的节点那里,会把这些交易当成有效的,并且区块依然只有 1 MB(不会看到见证程序)。
一些大区块主义者,包括吴忌寒和罗格·沃也参加了这次会议。他们非常扎眼,因为他们在分发印有 Hard Fork Café(硬分叉咖啡馆) 的 T 恤(模仿了 “Hard Rock Café” 的图标)
真正的宣战事件是,大区块主义者团体甚至复刻了大会结束时候的终场聚会:他们组织了一个 言论自由聚会 ,辞令是这样的:在大会上,你不得不听大会组织者想让你听的内容;但在我们的言论自由聚会上,任何人都可以拿起话筒,提出对共识规则的任意更改。
许多人都去参加这个偏门会议,而且令人震惊的是,他们把所有的中国矿工都邀请来了。唯一一个例外是 F2Pool(鱼池)的 CEO 王纯,他既去了大会的终场聚会,也去了这个言论自由聚会。
这是第三次让世界上最重要的比特币开发者齐聚一堂的大会,存在明显的 单点故障 问题。正是出于这种担忧,这个国际化的组织委员会制定了严格的规则,例如,食品必须是全生产链条可验证的。加科莫·祖科还委托了一个富有反恐经验的国际安全公司,他们能保证高度的安全性,同时允许高度的自由。众所周知,比特币友不喜欢被截住、搜身和骚扰。
- 祖科假装成前摩萨德,在第三次 Scaling Bitcoin 会议上搜索恐怖分子 -
在 Scaling Bitcoin 会议之后,祖科给 blockchainlab 办公室安排了两件事:
主持 Bitcoin Core Meetup,在大会结束后组织正式的开发者聚会;
Gabriele Domeninichini(加布里埃尔·多梅尼基尼)曾是 Blockchainlab 的雇员,他想测试一些东西:
由撒迪厄斯·锥亚和约瑟夫·潘开发的,闪电网络的 Go 语言实现;
Christian Decker(克里斯蒂安·德克尔)的实现;克里斯蒂安发明了完全类似于闪电网络的东西;后来他跟长期的 linux 开发者 Rusty Russell(罗斯提·拉塞尔)一起受雇于 Blockstream。他们俩持续开发着这种 C 语言的闪电网络实现;
两个非常聪明的法国小伙。他们在开始设计硬件钱包之后,发现巴黎已经出现了一款非常强大的硬件钱包 Ledger,于是他们转而开发一种叫做 eclair 的闪电网络实现,并创建了 ACINQ 公司。
加布里埃尔安装好这些软件后,意识到虽然理论上它们在实现的是相同的想法,但依然缺乏共通的技术规范。后来,祖科就说服了 Lightning Labs 的 Elizabeth Stark(伊丽莎白·斯塔克),将这些 公司/开发者 都聚集在一起,让他们一起工作,直到产生所有实现都遵循的互通规范,让实现之间开启通道和实现路由成为可能。
这并不是这种方法第一次派上用场。几个月前,里卡多·卡萨塔正在开发区块链上的公证服务,需要制作时间戳;彼特·陶德和另外三个人也在开发类似的东西。在米兰形成一个团队、集体头脑风暴之后,彼特·陶德开发的 opentimestamps 被选中作为首屈一指的协议。
- 米兰的 Blockchainlab 办公室里的头脑风暴,由比萨驱动(感谢 OpenAI) -
回到闪电网络,所有的参与者最终形成了一套协议,名为 米兰协议;不过,两天以后,名字就改了,叫做 BOLT(闪电网络技术基础)。
2016 年 11 月,Bitcoin Core 0.13.1 版本分三步,包含了隔离见证的代码以及可以让软分叉激活的表态机制(矿工可在区块内特定位置表示 “我们已经准备好了”)。软件马上进入了生产环境,但激活时间是在几个月之后,并且要求在此期间内形成 95% 以上的同意。
大酱缸:Bitcoin Unlimited
2017 年 1 月 30 日,运行 Bitcoin Unlimited 的矿工挖出了一个大于 1MB 的区块,该区块立即成了一个孤儿块。
2017 年 3 月 12 日,Shaolin Fry(少林炒饭)(虚构身份)提出了 BIP148 - Mandatory activation of segwit deployment(强制激活隔离见证) ,本质上就是一个要求矿工在特定日期前表示接受隔离见证的 Bitcoin Core 软件;要是矿工不这么做,不包含支持信号的区块就会被运行这种客户端的节点认为是无效区块、抛弃掉。这个提议非常具有进攻性,因为它不仅要求矿工接受隔离见证,还需要明确表态支持,不然就有颗粒无收的风险。大部分 Bitcoin Core 开发者都反对 BIP 148,但卢克·达实表示支持,他说:用户制定规则,矿工必须接受,不然就要承担区块被拒绝的风险。因此,一场运动形成了,他们声称像 Bitcoin Core 一样不支持 BIP 148 的只是少数人。反对者则辩称,虽然隔离见证是一个好方案,而且工作情况良好,但不应该鲁莽,因为这样做可能破坏网络内部的共识。
2017 年 3 月 15 日,Bitcoin Unlimited 客户端上发生了一件怪事。这种小众的比特币客户端添加了许多新技术,其中一种存在 bug,它会一次性拉取网络中的所有节点的数据。在 Slack 频道里,吴忌寒和嘉文·安德烈森两人都表示,可以通过制造空区块来反击 Bitcoin Core。他们的想法是:因为这是一个 bug,而且这个 bug 让所有人都宕机了,那么一定是有人有心利用;一定是来自 Bitcoin Core 的坏人,应该给他们点颜色瞧瞧。
比特大陆(吴忌寒的公司)在一个聊天频道中表示大约 1 亿美元将被投放到空区块生产和攻击比特币网络上(没有书面证据)。他们计划让比特币网络死掉,只剩下 Bitcoin Unlimited。
两天后,全世界最大的密码货币交易所(除了 Coinbase)发出了一封给 Bitcoin Unlimited 的联名信,他们说:
如果 Bitcoin Unlimited 不添加重放攻击保护(rely protection),他们不会提供分叉币的交易服务(译者注:如果你分裂了网络,那就会出现两条区块链,因为它们的相似性,在一条链上有效的交易,在另一条链上可能也有效,因此,其他人可以把你在一条链上的交易广播到另一个网络中、造成执行;例如,你在交易所中取出了一些比特币,你可以把同一笔交易放到另一条链 —— 暂命名为 “bitcoin cash” —— 上,从而获得一些 bitcoin cash;重放攻击保护就是在解决这个问题)
修复重放攻击问题等同于宣布 Bitcoin Unlimited 不再是(不再服务于)比特币,而是一种山寨币。
(译者注:作者没有说,但从这里的描述可见,Bitcoin Unlimited 已经开始计划硬分叉比特币了:形成一个共识规则与比特币网络不兼容、原有的比特币节点无法在其中运行的网络;这样做也会形成另一条区块链、另一种密码货币;只不过,它会跟原有的比特币网络有一段相同的历史。)
幸运之神非常照顾我们,3 月 18 日,更大的打击来临:Bitfinex 交易所推出了分叉期货:你现在存入一个比特币,就可以获得交易所的两份期货,一份是 core 版本的比特币期货,另一份是 unlimited 版本的比特币期货。他们放开了交易,而且,一开始的时候,unlimited 币期货的价格比 core 币期货高出 20%,后来稳定在后者的大约 3%。这些期货清楚地表明,要拿真金白银选择其中之一的时候,97% 的资金会放在比特币而不是 Bitcoin Unlimited 上。
4 月 5 日,又一个打击来临。格里高利·麦克斯韦尔发表了题为 隐形 AsicBoost 的文章。大意是说,在使用 SHA256 哈希算法时,它不是对整个文件操作的,它会先把文件分成许多片段,然后哈希每一个小块;而在哈希区块头时,需要把区块头分成 两个片段。在你想要改变区块头的哈希值的时候,你不必使用两个新片段,你可以按住第一个片段不变,仅仅改变第二个片段,这样可以节约每一次哈希运算的时间。有两种办法可以做到,一种办法是使用区块头中的信号位(signalling bits)字段作为熵源(这将暴露你在使用 AsicBoost 技术);另一种办法是(格里高利发现),按特定的顺序排列区块内的比特币交易,可以隐藏你在使用 AsicBoost 的事实。他也意识到:
用硬分叉实现隔离见证,不会影响这样使用 AsicBoost;
但如果以软分叉实现隔离见证,就不可能这样 “悄悄地” 使用 AsicBoost。
然后,格里高利·麦克斯韦尔拿到了比特大陆的 ASIC 使用的 FPGA 固件,发现所有矿机都有一个隐形的优化:使用隐形 AsicBoost。比特大陆在生产中有竞争优势,这就是为什么吴忌寒非常希望隔离见证是一个硬分叉。骗局穿帮。随后格里高利·麦克斯韦尔又发现了另一个骗局,他称为 antbleed:只要比特大陆愿意,它可以通过互联网发送一个信号,远程关闭比特大陆卖出的所有 ASIC。
4 月6 日发生了另外两件事:
Samson Mow(缪永权)加入了 Blockstream(大区块主义者眼中的一个大反派加入了另一群大反派)
闪电网络的创造者之一约瑟夫·潘反对隔离见证并提出了一种叫做 扩展区块 的替代方案,这种方案也是软分叉,但跟隔离见证不同,它也让吴忌寒满意。后来人们发现,扩展区块不会打破比特大陆的隐形 ASICBoost 算法。
约瑟夫·潘后来离开了比特币,转而在以太坊上开发。比特币社区因此发现,有一个 Slack 秘密频道 Dragon'S Den,喜欢在互联网上攻击别人,是由缪永权领导的。约瑟夫·潘认为自己是受害者。
纽约协定和 Bitcoin Cash
2017 年 5 月 22 日,Consensus(共识)大会(就是嘉文被巴特林嘲笑的那个会议)的另一次会议举行;在会议上,组织者 Coindesk 宣布他们已经解决了可扩展性争议。他们宣布,他们已经让所有的比特币大公司形成了合意:接受硬分叉形式的光欸见证。这个一致意见被称为 “[纽约协定](https://en.bitcoinwiki.org/wiki/New_York_Agreement#:~:text=The agreement intended to put,then doubling the block size)”。在接下来的两天里,大约 50 个创业公司似乎表示支持这个决定,其中包括 Blockstream、Lightning Labs 这样的公司。荒谬的是,这其中有一些纯粹小区块主义的公司;实际上,这样的公司多到许多人公开否认这条新闻,因为他们从未签名,也没有接受这样的共识。不久之后真相大白,一个 Coindesk 的员工没有询问任何人就直接通报这些创业公司的会员身份。50 个公司中大概有 20 个是错的,他们根本没有同意纽约协定。
既是开发者也是矿工的 James Hilliard(詹姆斯·西利亚德)通过 BIP 91 – Reduced threshold Segwit MASF(减低强制激活隔离见证的门槛)给所有支持隔离见证硬分叉的人喊话:“你也想要隔离见证,我也想要隔离见证。是用(吴忌寒不喜欢的)软分叉来实现,还是用硬分叉实现、让它通过,这就是争议的核心。”
从 2017 年 3 月 22 日到 6 月 5 日,争论四处发生,但隐形 AsicBoost 的发现,在公共舆论中扮演了重要的角色;甚至一些原本的大区块主义者,也开始动摇了。
大约是 6 月 20 日,Unicode 联盟在其字符集中引入了比特币的图标。
7 月 21 日,BIP91 通过,真正的 “锁定” 到来。吴忌寒发表了一篇回应文章,他声称大错已经铸成,现在的路线并非共识;还表示,他们将执行一次用户激活的硬分叉(UAHF)。吴忌寒预告的就是 Bitcoin Cash,将在 8 月 1 日从比特币中分叉出来。Bitcoin Cash 链将拥有更大的区块,而且不会包含隔离见证。
9 月 9 日,另一场新的大会 Breaking Bitcoin 举行。至少,他们不再讨论可扩展性,转而讨论 “如何打破比特币” 以及所有可能的攻击和安全问题了:
视频:https://youtu.be/R2Ohxdwtp80
在这次大会的舞台上,一些矿工被问及会不会支持 2x 分叉,BitFury 的 Alex Petrov(艾力克斯·佩德洛夫)回答:不会;在我签名纽约协定的时候,我的意思是,如果有这样的共识,那我们会执行硬分叉;很显然,如果没有共识,我们永远也不会挖掘 2 MB 的区块(配合见证程序的折扣,总体积可以高达 8 MB)。(译者注:这里的 “2x 分叉” 指的应该是上文所说的 “纽约协定” —— 以硬分叉激活的隔离见证;该方案也包含了将区块体积上限提高到 2 MB 的内容;被人称为 “Segwit2x”。)
在 Breaking Bitcoin 会议后,许多其他人(比如 RootStock 和 Xapo)也确认了佩德洛夫的这种表述。但依然有一些公司(他们支持纽约协定),比如 Coinbase 和 BitPay,发了邮件提醒自己的用户要下载新版本的软件,不然会被切断跟网络的连接。这是一个鲁莽的举动;在正式发布以前,这个软件就被人发现有漏洞,会导致运行这个软件的网络从第一天开始就崩溃(这个软件很快就被人放弃了)。除此之外,这个软件还包含了两种奇怪的机制:
将一些地址加入了黑名单;
取消了 boostrap 节点,优先连接这些企业的节点(嗯哼)。
需要这些节点,是因为 Bitcoin Core 在第一次启动时不知道到哪里寻找其它节点,所以它会使用硬编码在软件内的初始化节点(有 6 个);这 6 个节点来自几位德高望重的开发者,从这 6 个节点处获得数据之后,Bitcoin Core 就能建立起跟其它对等节点的连接、找到点对点网络的合适入口。
在 BitPay 发出邮件、邀请用户为了安全理由(没有任何解释)下载新版本的软件时,法国开发者 Nicolas Dorier(尼古拉斯·多里亚)说:
“太过分了,我对你的信任已经破产了。我要把你们扫进历史的垃圾堆。”
—— 尼古拉斯·多里亚
经历了一番疯狂的 C# 语言编程,几天以后,尼古拉斯发布了 BTCPay Server,一个没有 BitPay 公司的 BitPay 软件,开源、免费下载。
2017 年 11 月 8 日,区块体积大战落下帷幕。
(未完)
Blockchainlab 里发生的事情
2016 年 7 月 27 日,blcokchainlab 团队里也发生了分裂:Lawrence Nahum(劳伦斯·那恩)(首席科学家)被 Blockstream 挖走了 。Blockstream 是大区块主义者眼中的三大反派之一,自然也是小区块主义者眼中的三大英雄之一。这三大团体分别是:
Bitcoin Core;
Bitcointalk 论坛和 r/bitcoin 板块的版主组合,也就是德默斯和 cobra(科布拉)。
Blockstream。
Blockchainlab 中的一号名人同时是 Blockstream 的雇员; 还有另一位成员叫做 “Franco Cimatti(HostFat)”,是一位狂热的大区块主义者(但他更多是从言论自由的角度反对糟糕的审查:也就是说他并没有那么主张 “大区块更好”,只是主张每个人都应该有机会参与改变比特币和表达看法)。
Blockchainlab 中的裂痕变得不可弥补,而祖科也不再尝试维持派系的平衡,他开始选边站,并向品达·王提议在米兰举办 Scaling Bitcoin 的第三次会议。
两个 “大事件” 被认为是祖科和 blockchainlab 表明了自己的立场:
承办和组织一场倾向于小区块主义者的会议;
直接参与会议议程的起草,因此祖科和其他组织者可以决定哪些论文可以上台演讲、哪些不行;又因为会议有两天,有数十个演讲,所以决定必定是在定性的基础上作出的。主要的话题是,给定区块的体积有上限,如何才能最好地扩展协议?
除了主要话题,组织者依然留下了一个环节来讨论激进改变共识机制和提高区块体积限制的可能性。有一位 Meni Rosenfeld(曼宁·罗森菲尔德)准备了关于弹性限制的演讲:他的想法是你可以在交易池较慢满时临时让区块变大,并在交易池清空时让区块变小。显然,不是由矿工来决定何时扩大和收缩区块,而是由一套规则,根据最低的可入块交易费水平来决定。这个提议没有展示出来,因为论文的质量实在是太糟糕了。但 Bitcoin Unlimited 客户端在这个环节出现了,在 Bitcoin Classic 死亡之后,Bitcoin Unlimited 成了大区块主义者们凝聚共识的新圣杯。
彼特·陶德介绍了客户端验证比特币(client-side validated Bitcoin)的想法,标志着 RGB 的诞生。他声称:矿工不仅不需要决定区块的体积,甚至不需要知道交易是有效的还是无效的。矿工只需要因为在链上包含他称为 一次性密封条(single-use-seal) 的东西而得到支付。如果 Alice 给 Bob 支付了,那么支付证明(包括签名、输入脚本和输出脚本),都应该点对点地传递给 Bob,只有交易的哈希值需要留在链上,这样甚至连矿工都不知道 Alice 和 Bob 在干什么。这可以提供巨大的可扩展性和惊人的隐私性;
唯一被讨论和容忍的共识变化是使用软分叉激活、可能增大区块体积的隔离见证。隔离见证可以用软分叉来实现,因为旧的节点将只能看到交易的一小部分(输入和输出),不再包含花费脚本;花费脚本会放在一个并行的、称作 witness program(见证程序) 的数据结构中,放到区块之外;区块中只会包含这些见证程序的承诺;结果,新的节点可以通过的单个区块理论上可高达 4 MB,而在旧的节点那里,会把这些交易当成有效的,并且区块依然只有 1 MB(不会看到见证程序)。
一些大区块主义者,包括吴忌寒和罗格·沃也参加了这次会议。他们非常扎眼,因为他们在分发印有 Hard Fork Café(硬分叉咖啡馆) 的 T 恤(模仿了 “Hard Rock Café” 的图标)
真正的宣战事件是,大区块主义者团体甚至复刻了大会结束时候的终场聚会:他们组织了一个 言论自由聚会 ,辞令是这样的:在大会上,你不得不听大会组织者想让你听的内容;但在我们的言论自由聚会上,任何人都可以拿起话筒,提出对共识规则的任意更改。
许多人都去参加这个偏门会议,而且令人震惊的是,他们把所有的中国矿工都邀请来了。唯一一个例外是 F2Pool(鱼池)的 CEO 王纯,他既去了大会的终场聚会,也去了这个言论自由聚会。
这是第三次让世界上最重要的比特币开发者齐聚一堂的大会,存在明显的 单点故障 问题。正是出于这种担忧,这个国际化的组织委员会制定了严格的规则,例如,食品必须是全生产链条可验证的。加科莫·祖科还委托了一个富有反恐经验的国际安全公司,他们能保证高度的安全性,同时允许高度的自由。众所周知,比特币友不喜欢被截住、搜身和骚扰。
- 祖科假装成前摩萨德,在第三次 Scaling Bitcoin 会议上搜索恐怖分子 -
在 Scaling Bitcoin 会议之后,祖科给 blockchainlab 办公室安排了两件事:
主持 Bitcoin Core Meetup,在大会结束后组织正式的开发者聚会;
Gabriele Domeninichini(加布里埃尔·多梅尼基尼)曾是 Blockchainlab 的雇员,他想测试一些东西:
由撒迪厄斯·锥亚和约瑟夫·潘开发的,闪电网络的 Go 语言实现;
Christian Decker(克里斯蒂安·德克尔)的实现;克里斯蒂安发明了完全类似于闪电网络的东西;后来他跟长期的 linux 开发者 Rusty Russell(罗斯提·拉塞尔)一起受雇于 Blockstream。他们俩持续开发着这种 C 语言的闪电网络实现;
两个非常聪明的法国小伙。他们在开始设计硬件钱包之后,发现巴黎已经出现了一款非常强大的硬件钱包 Ledger,于是他们转而开发一种叫做 eclair 的闪电网络实现,并创建了 ACINQ 公司。
加布里埃尔安装好这些软件后,意识到虽然理论上它们在实现的是相同的想法,但依然缺乏共通的技术规范。后来,祖科就说服了 Lightning Labs 的 Elizabeth Stark(伊丽莎白·斯塔克),将这些 公司/开发者 都聚集在一起,让他们一起工作,直到产生所有实现都遵循的互通规范,让实现之间开启通道和实现路由成为可能。
这并不是这种方法第一次派上用场。几个月前,里卡多·卡萨塔正在开发区块链上的公证服务,需要制作时间戳;彼特·陶德和另外三个人也在开发类似的东西。在米兰形成一个团队、集体头脑风暴之后,彼特·陶德开发的 opentimestamps 被选中作为首屈一指的协议。
- 米兰的 Blockchainlab 办公室里的头脑风暴,由比萨驱动(感谢 OpenAI) -
回到闪电网络,所有的参与者最终形成了一套协议,名为 米兰协议;不过,两天以后,名字就改了,叫做 BOLT(闪电网络技术基础)。
2016 年 11 月,Bitcoin Core 0.13.1 版本分三步,包含了隔离见证的代码以及可以让软分叉激活的表态机制(矿工可在区块内特定位置表示 “我们已经准备好了”)。软件马上进入了生产环境,但激活时间是在几个月之后,并且要求在此期间内形成 95% 以上的同意。
大酱缸:Bitcoin Unlimited
2017 年 1 月 30 日,运行 Bitcoin Unlimited 的矿工挖出了一个大于 1MB 的区块,该区块立即成了一个孤儿块。
2017 年 3 月 12 日,Shaolin Fry(少林炒饭)(虚构身份)提出了 BIP148 - Mandatory activation of segwit deployment(强制激活隔离见证) ,本质上就是一个要求矿工在特定日期前表示接受隔离见证的 Bitcoin Core 软件;要是矿工不这么做,不包含支持信号的区块就会被运行这种客户端的节点认为是无效区块、抛弃掉。这个提议非常具有进攻性,因为它不仅要求矿工接受隔离见证,还需要明确表态支持,不然就有颗粒无收的风险。大部分 Bitcoin Core 开发者都反对 BIP 148,但卢克·达实表示支持,他说:用户制定规则,矿工必须接受,不然就要承担区块被拒绝的风险。因此,一场运动形成了,他们声称像 Bitcoin Core 一样不支持 BIP 148 的只是少数人。反对者则辩称,虽然隔离见证是一个好方案,而且工作情况良好,但不应该鲁莽,因为这样做可能破坏网络内部的共识。
2017 年 3 月 15 日,Bitcoin Unlimited 客户端上发生了一件怪事。这种小众的比特币客户端添加了许多新技术,其中一种存在 bug,它会一次性拉取网络中的所有节点的数据。在 Slack 频道里,吴忌寒和嘉文·安德烈森两人都表示,可以通过制造空区块来反击 Bitcoin Core。他们的想法是:因为这是一个 bug,而且这个 bug 让所有人都宕机了,那么一定是有人有心利用;一定是来自 Bitcoin Core 的坏人,应该给他们点颜色瞧瞧。
比特大陆(吴忌寒的公司)在一个聊天频道中表示大约 1 亿美元将被投放到空区块生产和攻击比特币网络上(没有书面证据)。他们计划让比特币网络死掉,只剩下 Bitcoin Unlimited。
两天后,全世界最大的密码货币交易所(除了 Coinbase)发出了一封给 Bitcoin Unlimited 的联名信,他们说:
如果 Bitcoin Unlimited 不添加重放攻击保护(rely protection),他们不会提供分叉币的交易服务(译者注:如果你分裂了网络,那就会出现两条区块链,因为它们的相似性,在一条链上有效的交易,在另一条链上可能也有效,因此,其他人可以把你在一条链上的交易广播到另一个网络中、造成执行;例如,你在交易所中取出了一些比特币,你可以把同一笔交易放到另一条链 —— 暂命名为 “bitcoin cash” —— 上,从而获得一些 bitcoin cash;重放攻击保护就是在解决这个问题)
修复重放攻击问题等同于宣布 Bitcoin Unlimited 不再是(不再服务于)比特币,而是一种山寨币。
(译者注:作者没有说,但从这里的描述可见,Bitcoin Unlimited 已经开始计划硬分叉比特币了:形成一个共识规则与比特币网络不兼容、原有的比特币节点无法在其中运行的网络;这样做也会形成另一条区块链、另一种密码货币;只不过,它会跟原有的比特币网络有一段相同的历史。)
幸运之神非常照顾我们,3 月 18 日,更大的打击来临:Bitfinex 交易所推出了分叉期货:你现在存入一个比特币,就可以获得交易所的两份期货,一份是 core 版本的比特币期货,另一份是 unlimited 版本的比特币期货。他们放开了交易,而且,一开始的时候,unlimited 币期货的价格比 core 币期货高出 20%,后来稳定在后者的大约 3%。这些期货清楚地表明,要拿真金白银选择其中之一的时候,97% 的资金会放在比特币而不是 Bitcoin Unlimited 上。
4 月 5 日,又一个打击来临。格里高利·麦克斯韦尔发表了题为 隐形 AsicBoost 的文章。大意是说,在使用 SHA256 哈希算法时,它不是对整个文件操作的,它会先把文件分成许多片段,然后哈希每一个小块;而在哈希区块头时,需要把区块头分成 两个片段。在你想要改变区块头的哈希值的时候,你不必使用两个新片段,你可以按住第一个片段不变,仅仅改变第二个片段,这样可以节约每一次哈希运算的时间。有两种办法可以做到,一种办法是使用区块头中的信号位(signalling bits)字段作为熵源(这将暴露你在使用 AsicBoost 技术);另一种办法是(格里高利发现),按特定的顺序排列区块内的比特币交易,可以隐藏你在使用 AsicBoost 的事实。他也意识到:
用硬分叉实现隔离见证,不会影响这样使用 AsicBoost;
但如果以软分叉实现隔离见证,就不可能这样 “悄悄地” 使用 AsicBoost。
然后,格里高利·麦克斯韦尔拿到了比特大陆的 ASIC 使用的 FPGA 固件,发现所有矿机都有一个隐形的优化:使用隐形 AsicBoost。比特大陆在生产中有竞争优势,这就是为什么吴忌寒非常希望隔离见证是一个硬分叉。骗局穿帮。随后格里高利·麦克斯韦尔又发现了另一个骗局,他称为 antbleed:只要比特大陆愿意,它可以通过互联网发送一个信号,远程关闭比特大陆卖出的所有 ASIC。
4 月6 日发生了另外两件事:
Samson Mow(缪永权)加入了 Blockstream(大区块主义者眼中的一个大反派加入了另一群大反派)
闪电网络的创造者之一约瑟夫·潘反对隔离见证并提出了一种叫做 扩展区块 的替代方案,这种方案也是软分叉,但跟隔离见证不同,它也让吴忌寒满意。后来人们发现,扩展区块不会打破比特大陆的隐形 ASICBoost 算法。
约瑟夫·潘后来离开了比特币,转而在以太坊上开发。比特币社区因此发现,有一个 Slack 秘密频道 Dragon'S Den,喜欢在互联网上攻击别人,是由缪永权领导的。约瑟夫·潘认为自己是受害者。
纽约协定和 Bitcoin Cash
2017 年 5 月 22 日,Consensus(共识)大会(就是嘉文被巴特林嘲笑的那个会议)的另一次会议举行;在会议上,组织者 Coindesk 宣布他们已经解决了可扩展性争议。他们宣布,他们已经让所有的比特币大公司形成了合意:接受硬分叉形式的光欸见证。这个一致意见被称为 “[纽约协定](https://en.bitcoinwiki.org/wiki/New_York_Agreement#:~:text=The agreement intended to put,then doubling the block size)”。在接下来的两天里,大约 50 个创业公司似乎表示支持这个决定,其中包括 Blockstream、Lightning Labs 这样的公司。荒谬的是,这其中有一些纯粹小区块主义的公司;实际上,这样的公司多到许多人公开否认这条新闻,因为他们从未签名,也没有接受这样的共识。不久之后真相大白,一个 Coindesk 的员工没有询问任何人就直接通报这些创业公司的会员身份。50 个公司中大概有 20 个是错的,他们根本没有同意纽约协定。
既是开发者也是矿工的 James Hilliard(詹姆斯·西利亚德)通过 BIP 91 – Reduced threshold Segwit MASF(减低强制激活隔离见证的门槛)给所有支持隔离见证硬分叉的人喊话:“你也想要隔离见证,我也想要隔离见证。是用(吴忌寒不喜欢的)软分叉来实现,还是用硬分叉实现、让它通过,这就是争议的核心。”
从 2017 年 3 月 22 日到 6 月 5 日,争论四处发生,但隐形 AsicBoost 的发现,在公共舆论中扮演了重要的角色;甚至一些原本的大区块主义者,也开始动摇了。
大约是 6 月 20 日,Unicode 联盟在其字符集中引入了比特币的图标。
7 月 21 日,BIP91 通过,真正的 “锁定” 到来。吴忌寒发表了一篇回应文章,他声称大错已经铸成,现在的路线并非共识;还表示,他们将执行一次用户激活的硬分叉(UAHF)。吴忌寒预告的就是 Bitcoin Cash,将在 8 月 1 日从比特币中分叉出来。Bitcoin Cash 链将拥有更大的区块,而且不会包含隔离见证。
9 月 9 日,另一场新的大会 Breaking Bitcoin 举行。至少,他们不再讨论可扩展性,转而讨论 “如何打破比特币” 以及所有可能的攻击和安全问题了:
视频:https://youtu.be/R2Ohxdwtp80
在这次大会的舞台上,一些矿工被问及会不会支持 2x 分叉,BitFury 的 Alex Petrov(艾力克斯·佩德洛夫)回答:不会;在我签名纽约协定的时候,我的意思是,如果有这样的共识,那我们会执行硬分叉;很显然,如果没有共识,我们永远也不会挖掘 2 MB 的区块(配合见证程序的折扣,总体积可以高达 8 MB)。(译者注:这里的 “2x 分叉” 指的应该是上文所说的 “纽约协定” —— 以硬分叉激活的隔离见证;该方案也包含了将区块体积上限提高到 2 MB 的内容;被人称为 “Segwit2x”。)
在 Breaking Bitcoin 会议后,许多其他人(比如 RootStock 和 Xapo)也确认了佩德洛夫的这种表述。但依然有一些公司(他们支持纽约协定),比如 Coinbase 和 BitPay,发了邮件提醒自己的用户要下载新版本的软件,不然会被切断跟网络的连接。这是一个鲁莽的举动;在正式发布以前,这个软件就被人发现有漏洞,会导致运行这个软件的网络从第一天开始就崩溃(这个软件很快就被人放弃了)。除此之外,这个软件还包含了两种奇怪的机制:
将一些地址加入了黑名单;
取消了 boostrap 节点,优先连接这些企业的节点(嗯哼)。
需要这些节点,是因为 Bitcoin Core 在第一次启动时不知道到哪里寻找其它节点,所以它会使用硬编码在软件内的初始化节点(有 6 个);这 6 个节点来自几位德高望重的开发者,从这 6 个节点处获得数据之后,Bitcoin Core 就能建立起跟其它对等节点的连接、找到点对点网络的合适入口。
在 BitPay 发出邮件、邀请用户为了安全理由(没有任何解释)下载新版本的软件时,法国开发者 Nicolas Dorier(尼古拉斯·多里亚)说:
“太过分了,我对你的信任已经破产了。我要把你们扫进历史的垃圾堆。”
—— 尼古拉斯·多里亚
经历了一番疯狂的 C# 语言编程,几天以后,尼古拉斯发布了 BTCPay Server,一个没有 BitPay 公司的 BitPay 软件,开源、免费下载。
2017 年 11 月 8 日,区块体积大战落下帷幕。
(未完)