Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第十五章:比特币与 BTC——协议分裂的真相

一个名字的继承

假设一个人去世了,留下了一份详细的遗嘱:房子留给长子,但不得拆除或改建;花园必须对邻居开放;书房的藏书不得出售。长子继承了房子,拿到了房产证,名字也过户到了他名下。然后他拆掉了花园的围墙,把它改成了私人停车场;他锁上了书房的门,把藏书搬去了地下室;他在客厅打了隔断,改成了三间出租屋。

从法律上说,这栋房子仍然登记在同一个地址,仍然挂着同一个门牌号。但从遗嘱的角度看,这栋房子已经不是父亲留下的那栋房子了。门牌号还在,但契约已经被违背。

这个比喻并不完美,但它捕捉到了比特币与BTC之间关系的核心张力。本章要探讨的问题是:BTC对原始比特币协议的修改,是否已经足以构成一种结构性的偏离?判断标准是:以白皮书和0.1版本代码所定义的协议规则为参照系,逐一检视BTC的每一次重大协议变更。BTC继承了比特币的名字、ticker符号、交易历史和品牌认知。在绝大多数人的心目中,BTC就是比特币,比特币就是BTC。但如果我们认真对照中本聪发布的白皮书和0.1版本代码——那份“遗嘱“——就会发现,BTC在过去十几年中对原始协议做出了一系列根本性的修改。每一次修改都有充分的技术理由,每一次都被包装成“升级“或“改进“,但累积起来的效果是:今天运行在BTC网络上的协议,与中本聪设计的协议之间,已经存在结构性的差异。

第二部分的九章——从第六章到第十四章——完整地论证了比特币的原始设计:电子现金的定义、UTXO交易模型、工作量证明、经济激励、隐私架构、法律定位、协议锁定、链上扩容、脚本与智能合约。现在,读者已经掌握了完整的参照系。有了这个参照系,我们可以逐一检视BTC的每一次“升级“,看看它到底改变了什么。

第一刀:操作码禁用(2010年)

故事要从最早的一次改变说起。

2010年8月15日,中本聪在Bitcoin的代码库中提交了一次关键修改:禁用了大量脚本操作码。被禁用的包括OP_CAT(字符串拼接)、OP_SUBSTR(子串提取)、OP_LEFT和OP_RIGHT(字符串截取)、OP_INVERT、OP_AND、OP_OR、OP_XOR(位运算)、OP_MUL和OP_DIV(乘法和除法)、OP_MOD(取模)、OP_LSHIFT和OP_RSHIFT(位移)等十多个操作码。

禁用的理由是安全:某些操作码的组合可能被恶意利用来发动拒绝服务(DoS)攻击。例如,OP_CAT与OP_DUP配合使用,攻击者可以构造出栈数据指数级增长的脚本,让验证节点的内存耗尽。这是一个真实的安全隐患,中本聪选择了最快速的应对——直接禁用。

第三章已经详细讨论了这次禁用的技术背景,第十四章则论证了这些操作码对比特币脚本能力的重要性。在这里,我们需要从协议变更的角度来审视这件事。

关键事实是:这次禁用是中本聪本人做出的,目的是应对紧急安全漏洞。它在当时的语境下是合理的——网络刚刚起步,节点数量极少,一次成功的DoS攻击可能直接杀死这个项目。但中本聪的应急处理,和后来BTC开发者对这些操作码的永久放弃,是两件完全不同的事情。

打一个比方:你家的窗户玻璃碎了,冷风灌进来。你先用纸板临时糊上——这是应急措施。但如果你事后不去换一块新玻璃,反而用水泥把整个窗户封死,然后告诉家人“我们家不需要窗户“——这就不再是应急了,这是对房屋结构的永久改变。

中本聪禁用操作码的行为,相当于糊上纸板。合理的后续操作是修复漏洞——给有问题的操作码加上资源限制(比如限制OP_CAT可以拼接的数据长度),然后重新启用它们。但在BTC的历史上,这件事从未发生。那块纸板变成了水泥墙。十多年来,部分Bitcoin Core开发者和研究者不仅没有推动修复并重启这些操作码,反而主张将操作码的缺失视为一种“特性“——比特币脚本“不需要“那么多功能,比特币“不应该“做智能合约。

第十四章已经论证了这种说法的偏颇:恢复这些操作码后,比特币脚本的表达能力将显著增强,可以支持更复杂的验证逻辑与合约模式——例如代币系统、链上原子交换、以及更丰富的条件支付结构。操作码的禁用不是一个无关紧要的细节,它是比特币脚本能力被大幅削减的起点,也是“比特币不能做智能合约“这一行业级误解的技术根源。

第二刀:1MB 区块限制的固化

如果说操作码禁用是对比特币功能维度的截断,那么1MB区块限制的固化就是对比特币容量维度的绞杀。

2010年7月,中本聪在代码中静默加入了一个挖矿软上限:矿工产出的区块不得超过1MB。同年9月的 v0.3.1 版本进一步引入了共识硬限制——网络将在区块高度79,400之后拒绝接受任何大于1,000,000字节的区块。

这个限制被引入时,没有任何公开声明,没有正式讨论,没有白皮书修订。它被悄悄地加入了代码。根据可追溯的讨论记录,这个限制最初是作为反垃圾交易的临时措施——在网络早期,一个攻击者可以用极低的成本创建巨大的区块来瘫痪网络。1MB在当时远远超过实际需求——当时最大的区块也远不到1MB——所以这个限制不会影响正常使用,只是阻止恶意攻击。

但“临时“这两个字,在后来的历史中被彻底遗忘了。

比特币的原始设计中包含了一套完整的扩容架构(第十三章有详细论证):默克尔树提供对数级的证明路径,使得即便区块中包含百万级交易,验证单笔交易的开销仍然极小;简化支付验证(SPV)允许用户在不下载完整区块的情况下验证交易;磁盘空间回收机制通过修剪已花费的交易来控制存储增长。这三个设计组件构成了一个完整的扩容架构,它们的存在显示中本聪至少考虑过更大区块的可能性,并为此预先设计了配套机制,使得区块可以随着需求增长而增大。

白皮书第七节对磁盘空间的计算也暗示了这一点。中本聪写道:“假设每10分钟产生一个区块,80字节×6×24×365 = 每年4.2MB。“他在做这个计算时,讨论的是区块头的存储需求——因为完整的区块数据可以被修剪,只有区块头需要永久保存。如果他的设计预期是每个区块永远只有1MB,为什么要特别设计一套让大多数节点不需要存储完整区块数据的机制?

中本聪本人在2010年10月的一篇帖子中,对这个问题给出了直接回答。当有人讨论提高区块大小限制的补丁时,他写道:

“It can be phased in, like: if (blocknumber > 115000) maxblocksize = largerlimit.”

这句话清楚地表明,在中本聪的规划中,1MB限制是有终点的——在某个区块高度之后,限制应该被提高。这不是一个永久的设计参数,而是一个有到期日的临时措施。

但从2010年中本聪离开比特币项目,到2017年区块容量危机全面爆发,这个限制不仅没有被提高,反而被异化成了一种设计哲学。Bitcoin Core开发者中的主流观点逐渐演变为:小区块是比特币的核心特性,它保证了“去中心化“——因为更小的区块意味着更低的节点运行成本,从而更多的人可以运行全节点。

这个论点在逻辑上存在根本缺陷。第十三章已经论证过:在白皮书的工作量证明投票语境下,出块节点以算力表达对规则的接受,共识的形成依赖于矿工的算力投票——而不是只验证和转发数据的“非挖矿全节点“。中本聪的扩容设计明确预期大多数用户将使用SPV模式,而不是运行全节点。将“人人都能运行全节点“提升为比特币的核心价值,然后以此为理由拒绝提高区块大小——这是在用一个原始设计中不存在的目标,来阻止原始设计中明确规划的扩容路径。

区块战争:2015-2017

围绕区块大小限制的争论,最终演变成了比特币历史上最剧烈的内部冲突——所谓的“区块战争“(Block Size War)。这场持续了近三年的争论,不仅决定了BTC的技术路径,也从根本上改变了比特币社区的权力结构。

大区块阵营的尝试

2015年,比特币的早期核心开发者Mike Hearn和Gavin Andresen——后者是中本聪离开后比特币项目的首席维护者——发布了Bitcoin XT,提议将区块大小限制提高到8MB。Bitcoin XT没有获得足够的矿工支持,未能激活。随后出现了Bitcoin Classic(提议提高到2MB)和Bitcoin Unlimited(提议取消硬编码限制,让矿工自行决定区块大小),但都没有达到激活所需的共识阈值。

值得注意的是,大区块阵营的核心人物——Gavin Andresen和Mike Hearn——是比特币最早期的开发者,他们对中本聪的原始设计意图有直接的了解。他们的立场始终一致:中本聪设计比特币时预期区块会增大,1MB限制是临时的。

香港协议和纽约协议

2016年2月,一群矿工和部分Bitcoin Core开发者以个人身份在香港达成了一项协议:推进SegWit(隔离见证)方案,同时开发一个将区块大小提高到2MB的硬分叉方案。这被称为“香港协议“。但协议中的区块大小增加部分从未被履行——需要指出的是,这并非Bitcoin Core项目的正式承诺,而是部分开发者的个人表态。

2017年5月,在纽约,包括超过80%算力的矿工和数十家主要比特币企业签署了“纽约协议“(也称SegWit2x):先激活SegWit,然后在六个月后通过硬分叉将基础区块大小提高到2MB。这主要是矿工和企业联盟推动的方案,大部分Bitcoin Core开发者并未参与。SegWit于2017年8月激活——纽约协议的第一部分被执行了。但第二部分——2MB的区块大小提升——在2017年11月8日被宣布取消,理由是“缺乏共识“。

两次关于2MB扩容的路线最终均未落地。区块大小始终没有提高。

UASF:用户激活软分叉

SegWit的激活过程本身就值得深思。在矿工多数不愿独立激活SegWit的情况下,一群BTC的支持者发起了“用户激活软分叉“(UASF,BIP148)运动——威胁从2017年8月1日起,运行UASF的节点将拒绝不包含SegWit信号的区块。BIP148形成了对矿工的施压背景,而实际的关键节点是BIP91的先行锁定——它以较低的激活阈值要求矿工发出SegWit就绪信号,随后SegWit按既定的BIP9机制正式激活。整个过程中,BIP148更多是施压工具,BIP91才是直接促成激活的技术路径。

在白皮书的设计中,节点(矿工)“用CPU算力进行投票”——这是共识机制的核心。UASF运动的实质是:非挖矿节点试图通过威胁链分裂来迫使矿工接受一项协议变更。无论对SegWit的技术优劣持何种看法,这种激活方式本身就偏离了白皮书定义的共识模型。

结局:分裂

2017年8月1日,不愿接受SegWit的一部分矿工和开发者选择了另一条路:他们将区块大小提高到8MB(后来进一步提高到32MB),保留了传统的交易格式,不包含SegWit变更。这就是Bitcoin Cash(BCH)的诞生。

区块战争的结局,在技术层面上是SegWit的激活和大区块方案的失败。但在更深的层面上,它确立了一个先例:BTC的协议可以被一小群核心开发者的技术偏好所主导,即使这种偏好与原始设计的方向相悖,即使矿工和企业的多数支持另一种方案。

第三刀:隔离见证(2017年8月)

区块战争以SegWit的激活告终。现在让我们仔细审视这个被称为“升级“的改变到底做了什么。

SegWit(Segregated Witness,隔离见证),正式编号BIP141,于2017年8月24日在BTC网络上激活。它的核心改变是:将交易的签名数据(“见证数据”)从交易的主体结构中分离出来,放到一个单独的数据区域中。

这个改变有多个层面的影响。

交易结构的变异

回忆第七章对比特币交易的论证。白皮书第二节定义了电子货币:“我们将电子货币定义为一条数字签名链。每一位所有者通过对前一笔交易的哈希和下一位所有者的公钥进行数字签名,并将签名附加到这枚货币的末尾,来将货币转让给下一位所有者。”

在这个定义中,数字签名是交易的组成部分。签名不是交易的附属品,不是可以被分离出去的注脚——它是交易本身的一部分,是“电子硬币“这条签名链上的一个环节。所有者的身份验证和产权转移,在同一个数据结构中完成。

SegWit做的事情,恰恰是把签名从交易中拆出来。在SegWit格式的交易中,交易ID(TXID)的计算不再包含签名数据。签名被移到了一个叫做“witness“(见证)的独立数据区域。交易本身和证明交易合法性的签名,不再存在于同一个数据结构中。

用第七章的土地契约比喻来说:原始的比特币交易就像那张传统的土地契约——每一次转让的记录和签字都写在同一张纸上。SegWit做的事情,相当于把签字撕下来,单独存放在另一个文件夹里。那张纸上仍然写着“某人将此地转让给某人“,但签字不在这张纸上了——你需要去另一个地方才能看到签字。

这不是一个无关紧要的数据格式调整。SegWit实际上引入了双重标识体系:传统的txid不再覆盖见证数据,而新增的wtxid则包含完整的交易信息(含见证数据)。区块通过coinbase交易中的witness commitment来承诺所有交易的wtxid。这意味着签名数据的完整性保证从txid层面转移到了wtxid和witness commitment层面。从原始设计的角度看,关键的变化在于:txid——这个比特币系统中引用交易的基本标识——不再覆盖签名数据。在原始格式中,txid涵盖了交易的全部信息,包括签名;在SegWit格式中,txid只覆盖交易的非见证部分。这改变了“电子硬币是一条数字签名链“这个基本定义在txid层面的物理实现。

见证数据的折扣

SegWit还引入了一个新的概念:“区块权重”(block weight)。原来的1MB区块大小限制被替换为400万权重单位(4MWU)的限制。交易主体数据每字节计为4个权重单位,而见证数据(主要是签名及相关解锁数据,包括公钥和赎回脚本等)每字节只计为1个权重单位。

这意味着签名数据在“付费“上得到了75%的折扣。一个使用SegWit格式的交易,其签名数据占用的有效“空间“只有传统格式的四分之一。这个折扣的实际效果是:在400万权重单位的限制下,一个SegWit区块在常见的交易类型混合下,实际数据大小通常在1.7MB到2.1MB的范围内(协议上限为约4MB的极端理论值),其中大约1MB是交易主体,其余是折扣后的见证数据。

表面上看,这增加了区块的有效容量。但它是以一种极其扭曲的方式实现的——不是直接提高区块大小(这是原始设计中预期的扩容方式),而是通过给签名数据“打折“来在不提高名义区块大小的前提下塞入更多数据。这种复杂的间接方式之所以被选择,有一个政治原因:它可以作为软分叉实施,不需要所有节点升级——而直接提高区块大小需要硬分叉,需要全网共识。

第十二章论证了协议锁定的原则:比特币的核心设计在0.1版本发布时就被“写入石头“。从这个角度看,SegWit不是升级——它是对交易数据结构的根本性改变。白皮书定义的交易格式中,签名是交易的一部分。SegWit改变了这个定义。无论改变的理由多么充分(解决交易延展性、为闪电网络铺路),改变本身就构成了对原始协议的偏离。

为什么解决延展性不需要SegWit

SegWit的支持者提出的一个核心理由是解决“交易延展性“(transaction malleability)问题——在原始交易格式中,签名数据在被打包之前可以被第三方修改(虽然这不影响交易的有效性),导致交易ID发生变化,这给依赖未确认交易ID的应用(尤其是支付通道和闪电网络)带来了麻烦。

但交易延展性并不是一个需要重构交易数据结构才能解决的问题。事实上,存在更保守的方案思路——例如BIP66(严格DER签名编码)确实消除了部分延展性来源,而BIP62试图通过规范协议规则来系统性地消除延展性,尽管后者因实现复杂且无法完全覆盖所有边缘情况而最终被废弃。这些方案不能等价替代SegWit对交易标识层面的处理,但它们说明了一种可能性:无需像SegWit那样重构整个交易数据结构,也能在很大程度上缓解延展性问题。选择SegWit而非沿着这些更保守的路径继续探索,更多是为了绕过硬分叉的政治决定,其技术上的必要性是值得质疑的。

第四刀:Replace-by-Fee(2016年)

虽然在时间线上早于SegWit的激活,但RBF(手续费替换)对比特币“现金“属性的杀伤力同样致命。在SegWit引发大规模争论的同一时期,BTC引入了这个影响深远但获得关注远少于SegWit的改变。

Replace-by-Fee(RBF),正式编号BIP125,由Peter Todd在2015年提出,并在2016年2月发布的Bitcoin Core 0.12.0中实现为“选择性加入“(opt-in)的功能。RBF允许交易发送者用一笔手续费更高的新交易替换一笔尚未被确认的旧交易——只要旧交易标记了“可替换“信号。

这个改变废弃了比特币早期实现中长期采用的一项默认内存池和交易转发策略:首次看到规则(first-seen rule)。需要说明的是,首次看到规则并非白皮书中明确写下的共识层规则,而是Bitcoin早期软件在内存池管理和交易传播层面采用的默认策略——但这一策略对比特币的“电子现金“功能有重要的实践意义。

在比特币的原始实现中,节点在收到一笔交易后,会将它放入内存池并转发给其他节点。如果之后收到另一笔花费相同输入的交易——即使这笔新交易的手续费更高——节点会直接拒绝它。这就是“首次看到规则“:先到的交易被保留在内存池中,后到的冲突交易被拒绝转发。

这个规则对比特币的“电子现金“功能至关重要。第六章论证了比特币的核心定义是点对点的电子现金。电子现金的一个基本要求是:在交易被广播后、被确认之前的那段时间里,收款方需要有一个合理的信心基础来判断这笔交易大概率会被确认。首次看到规则提供了这个基础——一旦交易被网络中的大多数节点接受并传播,发送者就很难用一笔冲突交易来替换它,因为大多数节点会拒绝后到的交易。

这就是“零确认交易“(zero-confirmation transaction)可以在实际商业中被接受的一个重要技术前提。即便在没有RBF的情况下,零确认交易也从来不是绝对安全的——竞速双花(race attack)、Finney攻击等风险一直存在。但首次看到规则大幅提高了双花的难度和成本:一旦交易被网络中的大多数节点接受并传播,发送者就很难用一笔冲突交易来替换它。这使得零确认交易的风险在许多商业场景中处于可接受的范围内,类似于信用卡退款的风险在商业上也是可以接受的。

RBF进一步提高了零确认收款的复杂度和风险。在RBF机制下,发送者可以在交易被确认之前用一笔新交易替换它——把收款地址改成自己的地址,同时提高手续费。节点不仅不会拒绝这笔新交易,反而会优先接受它。这大幅降低了双花的技术门槛:收款方看到一笔交易被广播,提供了商品或服务,然后发送者用RBF把交易替换掉,把钱转回给自己。

BTC的辩护是:RBF最初是“选择性加入“的——只有标记了特定信号的交易才能被替换。但这个辩护站不住脚,原因有二。第一,对于收款方来说,他无法控制发送方的交易是否标记了可替换信号。第二,也是更根本的,BTC后来的发展证实了滑坡效应:2022年,Bitcoin Core 24.0.1引入了mempoolfullrbf选项(“完全RBF”)——允许节点替换任何未确认交易,无论它是否标记了可替换信号。随着2023年后越来越多的节点开启了这一选项,零确认交易在BTC网络上几乎失去了商业实操性。虽然这个选项默认关闭,但它的存在本身就标志着首次看到规则在BTC网络中已经不再是一个可靠的保障。

让我们用白皮书的语言来评估这个改变。白皮书摘要说得很清楚:比特币是一种“点对点电子现金系统“。电子现金必须能够在日常商业场景中使用——你付钱,对方收钱,交易完成。RBF让这个场景变得不可靠。在一个RBF广泛存在的网络中,商家必须等待至少一个区块确认才能信任一笔交易——而在1MB区块限制下,这意味着至少等待十分钟,在网络拥堵时可能等待数小时。

一个不能做即时支付的电子现金系统,还是电子现金吗?

第五刀:Taproot(2021年11月)

2021年11月14日,BTC在区块高度709,632处激活了Taproot升级,包含三个比特币改进提案:BIP340(Schnorr签名)、BIP341(Taproot)和BIP342(Tapscript)。

Taproot的改变比SegWit更安静——它没有引发大规模的社区分裂,部分原因是反对BTC路线的人在2017年已经离开了。但从协议偏离的角度看,Taproot的改变同样深刻。

签名方案的替换

BIP340为新的Taproot输出类型(spend path)引入了Schnorr签名方案;旧的输出类型仍然可以继续使用ECDSA签名。Schnorr签名在数学上确实有一些优势——线性特性允许多重签名被聚合成一个单一签名,提高了隐私性和效率。但这不是问题的关键。

问题的关键是:白皮书和0.1版本代码定义的签名方案是ECDSA。Taproot虽然没有废除ECDSA,但为协议引入了一套全新的签名验证逻辑,改变了“电子硬币是一条数字签名链“中“签名“这个词在新输出类型下的含义。如果SegWit是把签名从交易中拆出来,Taproot则是在新的花费路径上把签名换成了另一种东西。

脚本语义的改变

BIP342(Tapscript)修改了比特币脚本中签名验证操作码的行为。OP_CHECKSIG和OP_CHECKSIGVERIFY——比特币脚本中最基本的两个操作码——在Tapscript环境中被修改为验证Schnorr签名而非ECDSA签名。这意味着在Taproot输出的tapscript花费路径中执行的脚本,其签名验证语义与传统比特币脚本不同——相同的操作码在tapscript上下文中验证的是Schnorr签名,而在传统上下文中验证的是ECDSA签名。

这是一种协议层面的语义分裂。一个操作码的行为取决于它是在“传统“上下文还是“Tapscript“上下文中执行——这增加了系统的复杂性,也打破了脚本语义的一致性。

MAST:有条件地隐藏脚本

BIP341引入了默克尔化抽象语法树(MAST),允许一笔交易包含多个可能的花费条件,但在花费时只需要揭示实际使用的那个条件。未使用的条件保持隐藏。

这个功能本身有其技术价值——它提高了复杂交易的隐私性和效率。但从第十章论证的比特币隐私模型来看,MAST引入了一种与原始设计不同的隐私策略。白皮书的隐私模型是通过匿名公钥来实现的——“公众可以看到有人正在向另一个人发送一笔金额,但没有将交易与任何人关联的信息。“这是一种透明但匿名的模型。MAST则引入了一种选择性隐藏的模型——不是所有信息都可见但不可关联,而是某些信息被主动隐藏。

这两种隐私模型的哲学是不同的,而BTC将后者叠加到了前者之上——不是替换,而是增加了一层新的复杂性。

偏离的模式:从修补到变异

回顾这五次主要的协议改变,一个清晰的模式浮现出来。

改变时间影响偏离的维度
操作码禁用2010年8月脚本能力被阉割功能
1MB区块限制固化2010年至今扩容路径被堵死容量
RBF2016年零确认交易不再可靠现金功能
SegWit2017年8月交易结构被改变数据模型
Taproot2021年11月签名方案和脚本语义被改变密码学实现

每一次改变都有合理的技术叙事——安全修复、容量优化、延展性解决、隐私增强。但它们的累积效果是一个根本性的事实:今天的BTC协议与2009年的比特币协议之间,存在结构性差异。交易的数据格式不同了(SegWit)。签名的算法不同了(Taproot/Schnorr)。脚本的能力不同了(操作码禁用)。区块的容量被锁死了(1MB)。未确认交易的行为不同了(RBF)。

如果一艘船的木板被逐一替换,直到没有一块是原来的木板,它还是原来那艘船吗?这是哲学史上著名的忒修斯之船悖论。但比特币的情况比忒修斯之船更极端——BTC不仅替换了“木板“(技术实现),还改变了“设计图纸“(协议规则)。忒修斯之船至少保持了船的形状和功能不变。BTC改变的是船的结构本身。

Ticker ≠ 协议

这就引出了一个核心问题:BTC是比特币吗?

要回答这个问题,需要区分两个完全不同的概念:ticker符号协议

Ticker符号是市场标识。当你在交易所看到“BTC“这三个字母时,你看到的是一种可交易资产的标识符——就像“AAPL“代表苹果公司的股票。ticker符号是由交易所分配的,它的唯一功能是告诉你“这个价格对应哪个资产“。ticker符号不包含任何技术信息——它不告诉你这个资产的底层协议是什么,不告诉你交易的数据结构是什么样的,不告诉你签名用的是哪种算法。

协议是技术规范。比特币的协议定义了:交易的格式(UTXO模型、输入输出结构)、签名的方式(ECDSA on secp256k1)、共识规则(工作量证明、最长链规则)、脚本的语法和语义(操作码集合及其行为)、区块的结构(头部+交易列表+Merkle根)。这些规则在白皮书中被定义,在0.1版本代码中被实现。

BTC继承了比特币的ticker符号。在2017年分叉时,BTC保留了“BTC“这个代号,Bitcoin Cash获得了“BCH“。从市场标识的角度看,BTC就是“比特币“。交易所这么叫它,媒体这么叫它,绝大多数人这么认为。

但BTC没有完整地继承比特币的协议。SegWit改变了交易格式。Taproot改变了签名方案。操作码禁用削弱了脚本能力。1MB限制堵死了链上扩容路径。RBF破坏了零确认交易的可靠性。

一个继承了名字但改变了规则的系统,应该被如何称呼?

这不是一个文字游戏。它关系到一个根本性的问题:当我们说“比特币“时,我们指的是什么?是一个ticker符号——一种在交易所可以买卖的资产?还是一套协议——中本聪定义的那套规则?

如果“比特币“指的是ticker符号,那么BTC当然是比特币——因为交易所就是这么标记它的。

如果“比特币“指的是协议——白皮书定义的那套规则——那么BTC与比特币之间已经存在结构性的差异。它仍然是一条运行着的区块链,它仍然使用工作量证明,它仍然有2100万的供应上限。但它的交易格式、签名方案、脚本能力、区块容量和未确认交易的行为,都与原始设计不同了。

“数字黄金”:扩容失败后的退路

理解了BTC对原始协议的偏离之后,一个自然的问题是:BTC的社区和开发者如何解释这种偏离?

答案是一个叙事的转换。

比特币的白皮书标题是“一种点对点的电子现金系统“。在比特币的头几年,社区对这个定义没有争议——比特币就是电子现金,目标是替代传统支付系统,让人们可以点对点地、无需中间人地进行交易。

但当1MB区块限制导致网络拥堵、交易费飙升、确认时间延长之后,比特币作为电子现金的功能事实上被摧毁了。例如2017年12月高峰期,一度出现五十美元以上的手续费加上数小时的确认时间,让“用比特币买咖啡“变成了一个笑话。这时候,一个新的叙事开始在BTC社区中兴起:“比特币不是用来买咖啡的,比特币是数字黄金。”

这个叙事转换的时间线非常能说明问题:

“数字黄金“的说法虽然早有零星出现,但在扩容争论中被显著强化,成为BTC社区的主流叙事。这一转变恰恰发生在比特币的电子现金功能因为人为的容量限制而退化之后。先是扩容失败,然后才是叙事转变。不是因为社区“发现“了比特币作为价值存储的独特属性,而是因为比特币作为支付工具的功能被废掉了,需要一个新的故事来解释“为什么这仍然有价值”。

“数字黄金“叙事在逻辑上有两个根本性的缺陷。

第一,它与白皮书直接矛盾。白皮书的标题是“电子现金系统“,不是“电子黄金系统“。白皮书第一节讨论的是支付——商业交易、小额支付、交易成本。白皮书第六节关于激励机制的设计,明确预期交易手续费将在区块奖励减半后成为矿工收入的主要来源——这要求大量的链上交易,而不是少量的高价值转账。一个“数字黄金“——以囤积而非流通为主要用途——无法产生足够的交易手续费来维持网络的安全性。

第二,“数字黄金“叙事混淆了结果和原因。比特币确实具有某些与黄金类似的属性——供应有限、不可伪造、不需要信任发行方。但这些属性是比特币作为电子现金的副产品,不是它的核心目的。在不少货币理论中,交换媒介功能有助于货币形成价值储藏属性——这也是为什么黄金是先作为交易媒介被使用、然后才成为价值储存手段的。一种不能用来交易的“货币”,凭什么储存价值?

把比特币从电子现金重新定义为数字黄金,不是一个自然的认知演化。它是扩容路线被人为堵死后,不得不进行的叙事退却。当你的车跑不了了,你不是去修引擎,而是宣布“这其实是一件雕塑“。

“最长诚实链“的重新理解

白皮书中有一段经常被引用但很少被准确理解的话:

“Nodes always consider the longest chain to be the correct one and will keep working on extending it.”

“节点始终认为最长的链是正确的,并将持续在其上工作以延长它。”

在BTC社区的通常解读中,这句话被理解为:BTC拥有最多的算力、最长的链,所以BTC就是“正确的“比特币。谁的链最长,谁就是比特币。

但这种解读忽略了一个关键的限定条件。白皮书同一节中明确写道:

“Nodes accept the block only if all transactions in it are valid and not already spent.”

“节点只有在区块中所有交易都有效且尚未被花费的情况下才接受该区块。”

以及:

“They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them.”

“它们用CPU算力进行投票,通过在有效区块上继续工作来表达对其接受,通过拒绝在无效区块上工作来表达对其拒绝。”

关键词是“valid“——有效的。最长链规则不是说“最长的任意链就是正确的“。它说的是“最长的有效链就是正确的“。什么是“有效“?遵守协议规则的链才是有效的。

现在问题变得尖锐了:如果协议规则本身被改变了呢?

一条按照修改后的规则运行的链,和一条按照原始规则运行的链,哪一条才是“有效“的?白皮书定义了一套规则,然后说“遵守这些规则的最长链是正确的“。如果有人改变了规则然后说“看,遵守新规则的链更长,所以新规则是正确的“——这就是循环论证了。

第十二章论证了中本聪的“set in stone“原则:“比特币的性质决定了,一旦0.1版本发布,其核心设计就在其整个生命周期内被写入了石头。“若接受这个原则——协议规则是固定的——那么“最长诚实链“的含义就很清楚:它是遵守原始规则的最长链,不是遵守某个修改版规则的最长链。若不接受这个前提——即认为协议可以通过社区共识合法演进——则会得出不同的结论。本书的立场是前者,但读者应当意识到这一分歧的存在。

这不意味着BTC没有价值。它是一条运行着的区块链,有真实的算力在维护它,有真实的市场在为它定价。但“有价值“和“是比特币“是两个不同的命题。一条改变了比特币原始规则的链,无论它积累了多少算力、获得了多少市场认可,从协议定义的角度看,它与比特币之间已经存在了不可调和的差异。

分叉不是升级,是退出

“升级“这个词本身就包含了一个未经审视的假设:改变后的系统优于改变前的系统,而且改变后的系统仍然是同一个系统。

当你的手机操作系统从iOS 17升级到iOS 18时,它仍然是iOS。核心功能保持一致,API接口向后兼容,应用程序照常运行。这是升级。

但如果你的手机突然运行了一个不同的操作系统——它看起来像iOS,图标风格相似,但底层架构不同,某些核心功能的行为发生了改变,部分原有API不再兼容——这不是升级,这是操作系统的替换。你仍然在用你的手机,但手机上运行的系统已经不是原来的那个了。

BTC对比特币协议的改变,更接近后者而非前者。SegWit不是对交易格式的优化,它是交易格式的改变。Taproot不是对签名方案的增强,它是签名方案的替换。RBF不是对交易传播的改进,它是对首次看到规则的废弃。这些改变不是在原有系统内的渐进调整——它们改变了系统的基本规则。

在传统的协议治理中,当一部分参与者想要运行一套不同的规则时,正确的做法是分叉出去——创建一条新链,使用新的名称,让市场决定哪条链更有价值。以太坊和以太坊经典的历史恰好提供了一个参照:DAO分叉后,改变规则的一方(回滚DAO攻击)保留了“Ethereum“的名称和ETH代号,而坚持原始规则、拒绝回滚的一方反而被冠以“Ethereum Classic“(ETC)的新名称。换言之,在以太坊的案例中,改变规则的一方同样保留了原始品牌——这与比特币的情况形成了平行而非对照。

比特币的分裂中也遵循了同样的模式。改变规则的一方保留了原始的名称和ticker符号,而坚持原始规则的一方反而被要求使用新名称。BTC改变了交易格式、签名方案、扩容路径和零确认行为,但它仍然叫“比特币“。而保留了原始交易格式和大区块扩容路径的Bitcoin Cash,被称为“分叉币“。

这就好比一栋楼的业主委员会投票改变了楼的结构——拆掉了花园、封死了窗户、改变了电路——然后对不同意这些改变的住户说:“你们才是违规的。这栋楼还是原来的楼。”

从协议定义的角度看,每一次改变规则的硬分叉或实质性软分叉,在逻辑上都不是“升级“,而是“退出“——退出原始规则,进入一套新的规则。改变规则的链不再是原来的链,无论它保留了什么名字。

小结

本章的论证可以归纳为以下几点。

第一,BTC在过去十几年中对比特币的原始协议做出了一系列根本性的改变:操作码禁用削弱了脚本能力,1MB区块限制堵死了链上扩容路径,SegWit改变了交易数据结构,RBF废弃了首次看到规则,Taproot改变了签名方案和脚本语义。这些不是边际调整,而是对协议核心组件的修改。

第二,每一次改变都有技术理由,但技术理由不能改变一个事实:改变后的协议与原始协议不同了。安全修复、效率优化、功能增强——这些都是合理的工程目标。但如果实现这些目标的方式是修改比特币的基本规则,那么修改后的系统就不再是严格意义上的“比特币“了。它是一个基于比特币的衍生系统。

第三,BTC继承了比特币的ticker符号和品牌认知,但ticker符号不等于协议。“BTC“这三个字母告诉你的是交易所的资产代码,不是底层协议的技术规范。把ticker等同于协议,就像把一家公司的股票代码等同于公司的章程——代码不变不代表章程没有被修改。

第四,“数字黄金“叙事是扩容失败后的退路,不是比特币的原始愿景。白皮书定义的是电子现金系统,不是价值存储工具。先堵死现金功能,再宣布“本来就不是现金”——这不是认知的深化,而是叙事的退却。

第五,“最长链就是比特币“是对白皮书的误读。白皮书说的是“最长的有效链”,而“有效“的前提是遵守原始协议规则。改变了规则的链,无论多长,都不能用自己的长度来证明自己的规则变更是合法的。

理解了BTC如何偏离原始设计之后,下一章将探讨一个更尖锐的问题:BSV——声称自己最忠实于原始设计的那条链——到底在多大程度上恢复了中本聪的比特币?它在技术上做对了什么,在治理上犯了什么错?它离中本聪的原始愿景还有多远?