综合介绍

比特币改进建议(Bitcoin Improvement Proposals,BIPs)是提供信息给比特币社区或描述比特币或其流程或环境中的新功能的设计文档。

根据 BIP1《BIP 目的和指南》,BIPs 有三种类型:

标准BIP

描述影响大多数或所有比特币实现的任何更改,例如对网络协议的更改、区块或交易有效性规则的更改,或者任何影响使用比特币的应用程序互操作性的更改或添加。

信息性BIP

描述比特币设计问题或向比特币社区提供一般性指南或信息,但不提出新功能。信息性BIP不一定代表比特币社区的共识或建议,因此用户和实施者可以忽略信息性BIP或遵循其建议。

流程BIP

描述比特币流程或提议对流程进行更改(或事件)。流程BIP类似于标准BIP,但适用于比特币协议之外的其他领域。它们可能提出一种实现方法,但不涉及比特币的代码库;它们通常需要社区共识。与信息性BIP不同,它们不仅仅是建议,用户通常不能忽略它们。示例包括程序、指南、决策过程的更改以及比特币开发中使用的工具或环境的更改。任何元-BIP也被视为流程BIP。

BIPs被记录在GitHub上的一个版本化存储库中。一份来自开源比特币核心项目的MIT许可的文件,在这里以编辑形式重现,描述了它实现了哪些BIP,包括列出每个BIP的拉取请求(PR)和比特币核心版本,在哪个版本中支持每个BIP被添加或显著更改。

已由比特币核心实现的BIPs:

!ChatGPT

• BIP9: 允许并行部署多个软分叉的更改自v0.12.1起已经实现(PR#7575)。

• BIP11: 多重签名输出自v0.6.0起为标准(PR#669)。

• BIP13: 用于P2SH地址的地址格式自v0.6.0起已经实现(PR#669)。

• BIP14: 自v0.6.0起使用子版本字符串作为用户代理(PR#669)。

• BIP16: 付款到脚本哈希评估规则自v0.6.0起已实现,并于2012年4月1日生效(PR#748)。

• BIP21: 用于比特币支付的URI格式自v0.6.0起已实现(PR#176)。

• BIP22: 用于挖矿的getblocktemplate(GBT)RPC协议自v0.7.0起已实现(PR#936)。

• BIP23: 自v0.10.0rc1起,已实现了一些GBT的扩展,包括longpolling和块提议(PR#1816)。

• BIP30: 禁止使用与之前的未完全花费交易相同的txid创建新交易的评估规则自v0.6.0起已实现,规则于2012年3月15日生效(PR#915)。

• BIP31: pong协议消息(和协议版本提升到60001)自v0.6.1起已实现(PR#1081)。

• BIP32: 自v0.13.0起实现了分层确定性钱包(PR#8035)。

• BIP34: 要求区块包含它们的高度(编号)在coinbase输入中,以及引入版本2区块的规则自v0.7.0起已实现。规则自2013年3月5日(区块224413)起对版本2区块生效,并自2013年3月25日(区块227931)起不再允许版本1区块(PR#1526)。

• BIP35: mempool协议消息(和协议版本提升到60002)自v0.7.0起已实现(PR#1641)。自v0.13.0起,仅适用于NODE_BLOOM(BIP111)节点。

• BIP37: 自v0.8.0起实现了用于交易中继的布隆过滤,用于块的部分默克尔树,以及协议版本提升到70001(启用低带宽轻量级客户端)(PR#1795)。自v0.19.0以来默认禁用,可以通过-peerbloomfilters选项启用。

• BIP42: 修复了在块13440000后补贴计划恢复的错误自v0.9.2(PR#3842)。

• BIP43: 从v0.21.0开始引入的实验性描述符钱包默认使用BIP43提出的分层确定性钱包派生(PR#16528)。

• BIP44: 从v0.21.0开始引入的实验性描述符钱包默认使用BIP44提出的分层确定性钱包派生(PR#16528)。

• BIP49: 从v0.21.0开始引入的实验性描述符钱包默认使用BIP49提出的分层确定性钱包派生(PR#16528)。

• BIP61: 拒绝协议消息(和协议版本提升到70002)已在v0.9.0中添加(PR#3185)。从v0.17.0开始,是否发送拒绝消息可以通过-enablebip61选项配置,并且支持已被弃用(默认禁用),从v0.18.0开始。支持已在v0.20.0中删除(PR#15437)。

• BIP65: CHECKLOCKTIMEVERIFY软分叉自v0.12.0起合并(PR#6351),并回溯到v0.11.2和v0.10.4。仅在PR#6124中添加了内存池限时付款。

• BIP66: 严格的DER规则和相关的版本3区块自v0.10.0起已实现(PR#5713)。

• BIP68: 自v0.12.1起实现了序列锁(PR#7184),并自v0.19.0起被埋藏(PR#16060)。

• BIP70,71,72: 自v0.9.0以来,比特币核心GUI支持支付协议(PR#5216)。支持可以选择在构建时禁用,自v0.18.0起(PR 14451),并且自v0.19.0起在构建时默认禁用(PR#15584)。自v0.20.0起已删除(PR 17165)。

• BIP84: 自v0.21.0起,默认情况下使用BIP84提议的分层确定性钱包派生的实验性描述符钱包。(PR#16528)

• BIP86: 自v23.0起,默认情况下使用BIP86提议的分层确定性钱包派生的描述符钱包。(PR#22364)

• BIP90: 自v0.14.0起,触发BIPs 34、65和66激活的机制简化为区块高度检查。(PR#8391)

• BIP111: 自v0.13.0起,为所有对等版本添加并强制执行NODE_BLOOM服务位。(PR#6579和PR#6641)

• BIP112: 自v0.12.1起,实现了CHECKSEQUENCEVERIFY操作码。(PR#7524),并自v0.19.0起被淘汰。(PR#16060)

• BIP113: 自v0.12.1起,实现了过去中位时间锁定时间计算。(PR#6566),并自v0.19.0起被淘汰。(PR#16060)

• BIP125: 选择性完全替代费用信号部分实施。

• BIP130: 自v0.12.0起,直接头部公告通过与对等版本≥70012协商 (PR 6494)。

• BIP133: 自v0.13.0起,对等版本≥70013的费率过滤消息受到尊重并发送(PR 7542)。

• BIP141: 隔离见证(共识层)自v0.13.0起 (PR 8149),在v0.13.1中定义为主网 (PR 8937),并自v0.19.0起被淘汰 (PR#16060)。

• BIP143: 为版本0见证程序的交易签名验证自v0.13.0起 (PR 8149),在v0.13.1中定义为主网 (PR 8937),并自v0.19.0起被淘汰 (PR#16060)。

• BIP144: 自0.13.0起的隔离见证(PR 8149)。

• BIP145: 隔离见证的getblocktemplate更新自v0.13.0起 (PR 8149)。

• BIP147: 自v0.13.1起的NULLDUMMY软分叉 (PR 8636和PR 8937),自v0.19.0起被淘汰 (PR#16060)。

• BIP152: 自v0.13.0起使用紧凑块传输和相关优化(PR 8068)。

• BIP155: 自v0.21.0起支持addrv2和sendaddrv2消息,可以中继Tor V3地址(和其他网络)。(PR 19954)

• BIP157 158: 轻量级客户端的紧凑块过滤器可以在v0.19.0上索引 (PR #14121),并在v0.21.0上提供给P2P网络的对等体 (PR #16442)。

• BIP159: 自v0.16.0起,NODE_NETWORK_LIMITED服务位被标记,自v0.17.0起连接到这些节点 (PR 11740, PR 10387)。

• BIP173: 自v0.16.0起,原生隔离见证输出的Bech32地址得到支持 (PR 11167),自v0.20.0起默认生成Bech32地址(PR 16884)。

• BIP174: 自v0.17.0起存在用于部分签名比特币交易(PSBT)的RPC (PR 13557)。

• BIP176: Bits Denomination [QT only]自v0.16.0起得到支持 (PR 12035)。

• BIP325: 自v0.21.0起支持Signet测试网络 (PR 18267)。

• BIP339: 自v0.21.0起支持根据wtxid中继交易 (PR 18044)。

• BIP340 341 342: 自v0.21.0起实现了Taproot的验证规则(包括Schnorr签名和Tapscript叶节点),自v0.21.1起在主网上激活(PR 21377, PR 21686)。

• BIP350: 自v22.0起,用于原生v1+隔离见证输出的地址使用bech32m而不是bech32(PR 20861)。

• BIP371: 自v24.0起,支持PSBT的Taproot字段 (PR 22558)。

• BIP380 381 382 383 384 385: 自v0.17.0起实现了输出脚本描述符和大部分脚本表达式 (PR 13697)。

• BIP386: 自v22.0起实现了tr()输出脚本描述符 (PR 22051)。

Last updated