43 / 736BIP

BIP (Bitcoin Improvement Proposal)

一个 Bitcoin 想法如何成为共同讨论的提案

BIP 把想法公开写清楚,让人们可以讨论,也让开发者能够实现同一套设计。编号方便大家引用某份文档。但仅有编号,并不能证明提案安全、得到支持或已经投入使用。

BIP 是 Bitcoin Improvement Proposal 的缩写。这类文档描述与 Bitcoin 有关的技术方案、工作流程或重要信息。其他人可以研究、质疑,并在合适时采用;发布文档本身不会自动修改软件或网络规则。

Anna 在电脑上准备一笔付款,却想用另一家厂商的硬件钱包签名。两个程序必须理解彼此传递的数据。BIP 174 解决的正是这类问题:它描述 PSBT,一种用于传递尚未完成的交易及签名所需信息的通用格式。开发者可以遵循同一份文档,而不必各自发明互不兼容的格式。这就是 BIP 的一个实际用途。 [8]

不同编号对应不同工作。BIP39 描述如何生成恢复词,以及如何把恢复词转换为 seed,也就是用于派生钱包密钥的起始数据。BIP 141 描述 SegWit,这项交易处理规则变更在网络激活后开始生效。BIP 174 帮助钱包交换待签名交易,并不改变区块有效性规则。BIP 50 则记录了 2013 年 3 月网络暂时分裂事故的原因和解决经过。因此,并不是每份 BIP 都在提出新的 Bitcoin 规则。 [6] [7] [8] [9]

描述方案、编写程序、投入使用,是不同步骤。方案描述叫作规范,程序代码叫作实现。钱包可能试验仍在起草的方案;另一份文档则可能还没有任何实际使用的软件。涉及区块有效性规则的变更,还需要激活,即相关软件从某个时点开始执行新规则。文档发布并不会自动更新你的节点,也就是那台检查网络规则的计算机。 [7] [10]

编号主要用于找到正确的文档,让讨论围绕同一份提案展开。编号越大,并不表示方案越好,也不表示推荐升级。获得编号的文档仍可能停留在草稿阶段或被搁置。如果某项服务宣传支持某个 BIP,你还需要查明它指的是哪项功能,以及具体软件版本是否真的提供了该功能。 [2]

作者先研究已有工作,再到 Bitcoin Development Mailing List,也就是开发者的公开邮件讨论区,交流想法。反馈可能在长篇文档写成前就暴露问题。方案充分完善后,作者向 GitHub 上的共同仓库 bitcoin/bips 提交 pull request,即申请将文档纳入仓库。作者不能自行选号:编辑会检查主题、格式和成熟程度,再分配编号。 [1]

BIP Editors 负责维护发布的文档:检查此前的讨论、内容是否清楚、格式和许可,分配编号并维护记录。这并不赋予他们决定你应使用哪个程序、你的节点应接受哪些规则的权力。进入仓库不等于获得安全保证,也不等于社区已经达成一致。真正是否使用,取决于各个项目和网络参与者。 [1]

如果新闻说某个 BIP 已获批准,不妨打开文档,先弄清实际发生了什么。是仅仅获得编号,作者完成了工作,还是已有功能在使用?钱包功能应查阅该钱包的文档和已发布版本;网络规则变更还要核实激活条件和进展。这样才能分清一个值得关注的提案与一项已经可以使用的功能。 [10] [2]

当前流程由 BIP 3(Updated BIP Process)规定,其状态为 Deployed。它取代了 BIP 2,并简化了文档类型和状态。因此,旧文章可能提到 Standards Track 或 Final,这些标签并不对应今天的分类。应以仓库中的当前文件及其修订记录为准。仓库负责发布和保存提案,而不是通过投票决定 Bitcoin 的未来。 [1] [5]

Specification 描述可据以编写相互兼容程序的技术规则。在完成之前,还必须提供可运行的参考实现,也就是展示如何实现方案的示例程序,以及测试向量,也就是示例输入及预期结果。Informational 提供信息、分析或建议。Process 规定工作方式,例如 BIP 自身的发布流程。BIP 3 就属于最后一类,它并没有定义一种新的 Bitcoin 交易格式。 [1]

Draft 表示仍在编写。Complete 表示作者已完成计划中的工作,并建议采用。Deployed 表示已有实际使用的证据;对 Process 而言,也可以是达到了所要求的 rough consensus,即经过讨论、处理实质性异议后形成广泛一致,而非简单数票。Closed 表示文档已成为历史资料,不再积极开发、推动或使用,但仍保留在档案中。即使标为 Deployed,也不代表所有钱包都支持它。 [1]

文档头部列出作者、类型、状态、编号分配日期、许可及讨论链接。Requires 指出所需的其他 BIP,Replaces 标明它打算替代的提案,Proposed-Replacement 则指出可能的后继提案。进入 Complete 状态后,后续修改都要写入 Changelog,即变更记录,并注明日期和版本号。头部的 Version 字段标明文档的当前版本。与原有设计不兼容的变更通常应另写一份 BIP,避免同一个编号在无声无息中变成另一套含义。 [1]

要获得更完整的理解,请将本词条与以下词条结合阅读: Soft Fork, 共识规则, Bitcoin Core, Bitcoin, Hard Fork, BIP 39. 反向关联还来自: Soft Fork, 区块大小之争, Bitcoin Core, 比特币教育.

DOC · 001BIP 3 — Updated BIP Process规范 DOC · 002bitcoin/bips — official BIP repository一手来源 DOC · 003BIP 123 — BIP Classification规范 DOC · 004BIP 1 — BIP Purpose and Guidelines文档 DOC · 005BIP 2 — BIP process, revised文档 DOC · 006BIP 39 — Mnemonic code规范 DOC · 007BIP 141 — Segregated Witness规范 DOC · 008BIP 174 — PSBT规范 DOC · 009BIP 50 — March 2013 chain fork post-mortem文档 DOC · 010Bitcoin Core — supported BIPs文档
修订日期: 来源优先 · 非投资建议