术语表 /协议与升级
比特币改进提案
又称 BIP。
- 比特币改进提案是什么?
- 比特币改进提案是一份带编号的设计文件,用于描述对比特币的某项变更,或供钱包遵循的某项标准,但无权强制推行。
规定于 BIP-2。
BIP 是比特币记录事项的方式。任何人都可以提交,由编辑分配编号,目前该代码库收录了数百份 BIP,状态从 Draft 到 Final,再到 Withdrawn 不等。这些编号会出现在您使用的产品中:您的钱包生成的12个助记词单词遵循 BIP39,它派生的地址则来自 BIP84 或 BIP86。
运作方式
BIP 流程是一套归档系统,而不是一个治理机构。
该流程借鉴自 Python。Amir Taaki 于2011年撰写了 BIP-1,参照的是该项目的改进提案,Luke Dashjr 则于2016年用 BIP-2取代了它,以更严格地界定各状态的含义以及推进所需的依据。这套流程并不光鲜:公开提出想法,听取批评,向 bitcoin/bips 代码库提交拉取请求,然后等待编辑检查格式并分配编号。
提案分为三种类型。Standards Track 文档涵盖所有影响软件互操作的内容,从共识规则到地址格式。Informational 文档记录某种设计或惯例,但不要求任何人采取行动。Process 文档描述流程本身。每份文档都有一个状态,从 Draft 和 Proposed 走向 Final 或 Active,也有许多最终停在 Withdrawn、Rejected 或 Replaced。
编号并不赋予权威。获得编号的 BIP 只是索引中的一个条目,而不是批准,况且也不存在能够批准它的机构。采用是另外进行的,而且是自愿的:有人编写代码,审阅者逐条检查,某个实现将其发布,用户自行选择运行该版本。Bitcoin Core 的许多改动没有任何 BIP,许多 BIP 也从未被任何人实现。
购买比特币时为何重要
BIP 编号会出现在钱包菜单中,选错编号是人们误以为自己的比特币消失了的常见原因。
最容易让人中招的例子是助记词恢复。BIP39 规定了词表(共2048个词)以及把其中12个或24个词转换为主密钥的规则,因此从一个品牌的钱包中抄下的助记词可以输入另一个品牌的钱包。BIP39 并未规定钱包到哪里查找您的比特币。BIP44 派生以1开头的传统地址,BIP49 派生以3开头的嵌套 SegWit 地址,BIP84 派生以 bc1q 开头的原生 SegWit 地址,BIP86 派生以 bc1p 开头的 Taproot 地址。如果把助记词恢复到默认使用其他路径的软件中,余额会显示为零,而比特币实际上原封不动地留在您当初使用的路径下。把派生路径和备份写在同一张卡片上,就不会出现这个问题。
地址格式在实际使用中也有类似的问题。Bech32 出自 BIP173,bech32m 出自 BIP350,整个行业对它们的支持先后不一,因此在 Taproot 激活后很长一段时间里,一些平台无法向 bc1p 地址转账。进行大额提币前,请先转一小笔,并确认目标地址格式被接受。卡住的交易也有对应的编号:通过 replace-by-fee 提高手续费的方式在 BIP125 中作了规定,实现了它的钱包能让您免于苦等一个时机不当的手续费估算。
请把编号当作标签,而不是保证。BIP70(支付协议)由 BitPay 和 Coinbase 实现,曾被视为商户支付的未来;Bitcoin Core 在版本0.19中将其弃用,并在0.20中将其移除,如今已没有任何软件使用它。BIP 只说明有人认真思考过。是否仍有人在运行它,是另一个值得追问的问题。
从 BIP340 到区块709,632:提案如何成为规则
Taproot 是整个流程最清晰的例证,因为它的每个阶段都有明确日期。
该设计以三份相互关联的文档发布:BIP340 对应 Schnorr 签名,BIP341 对应 Taproot 输出类型,BIP342 对应新的脚本规则,由 Pieter Wuille 与 Jonas Nick、Tim Ruffing 和 Anthony Towns 共同撰写。经过约两年的公开讨论,它们于2020年1月并入代码库。并入并未改变比特币:它只意味着这些文档有了编号。
随后的实现与审阅耗时将近一年,关于如何激活这些规则的争论又持续了数月,当时有两种相互竞争的机制。折中方案称为 Speedy Trial,随 Bitcoin Core 0.21.1于2021年5月发布。矿工在规定的窗口内发出准备就绪的信号,于2021年6月12日达到锁定,规则于2021年11月14日在区块709,632起开始强制执行。从一份有编号的文档到一条被强制执行的规则,大约经历了22个月,而这份文档本身没有起任何作用:真正起作用的是运行代码的节点运营者。
比特币改进提案 vs 共识规则
比特币改进提案是文书工作;共识规则则是节点实际强制执行的内容。两者只有在提案被实现并被采用后才会重合,而两个方向上的差距都很能说明问题。BIP70 有编号,却不在任何地方强制执行任何内容。2,100万的供应上限没有任何 BIP,因为它早于该流程,仅存在于代码之中。想知道比特币做什么,请阅读软件或其强制执行的规则;想知道某人提出了什么,请阅读 BIP。
比特币改进提案 vs 软分叉
比特币改进提案是一份文档;软分叉是一次部署事件,会收紧所有人遵循的规则。大多数 BIP 根本不是任何类型的分叉:BIP39 从未触及协议,BIP21 中让支付链接打开您的钱包的 URI 方案同样如此。真正发生软分叉时,通常需要多份 BIP 来描述,另加一份描述激活机制本身,因为 BIP9 和 BIP8 的存在只是为了定义信号机制如何运作。把两者混为一谈,会让人在提案发布时就说比特币已经改变,而这通常早了数年,有时甚至永远不会成立。