附錄 C
比特幣改進提案
比特幣改進提案是為比特幣社群提供資訊或描述比特幣或其流程或環境的新功能的設計文件。
根據 BIP1《BIP 目的和指南》,有三 種 BIP:
- 標準 BIP
-
描述影響大多數或所有比特幣實作的任何更改,例如網路協定的更改、區塊或交易有效性規則的更改,或影響使用比特幣的應用程式互通性的任何更改或添加。
- 資訊性 BIP
-
描述比特幣設計問題或向比特幣社群提供一般指南或資訊,但不提出新功能。資訊性 BIP 不一定代表比特幣社群的共識或建議,因此使用者和實作者可以忽略資訊性 BIP 或遵循其建議。
- 流程 BIP
-
描述比特幣流程或提議流程的更改(或流程中的事件)。流程 BIP 類似於標準 BIP,但適用於比特幣協定本身以外的領域。它們可能提議一個實作,但不是針對比特幣的程式碼庫;它們通常需要社群共識。與資訊性 BIP 不同,它們不僅僅是建議,使用者通常不能自由地忽略它們。範例包括程序、指南、決策流程的更改,以及比特幣開發中使用的工具或環境的更改。任何元 BIP 也被認為是流程 BIP。
BIP 記錄在 GitHub 上的 版本化儲存庫中。來自開源 Bitcoin Core 專案的 MIT 授權文件在此以編輯形式轉載,描述它實作了哪些 BIP,包括列出添加或顯著更改每個 BIP 支援的 Pull Request(PR)和 Bitcoin Core 版本。
由 Bitcoin Core 實作的 BIP:
-
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 的一些擴展,包括長輪詢和區塊提案(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 起已實作。該規則對版本 2 區塊自區塊 224413(2013 年 3 月 5 日)起生效,版本 1 區塊自區塊 227931(2013 年 3 月 25 日)起不再允許(PR #1526)。
-
BIP35:'mempool' 協定訊息(以及協定版本提升至 60002)自 v0.7.0 起已實作(PR #1641)。自 v0.13.0 起,這僅適用於 NODE_BLOOM(BIP111)對等節點。
-
BIP37:用於交易轉發的布隆過濾、區塊的部分 Merkle 樹以及協定版本提升至 70001(啟用低頻寬輕量級客戶端)自 v0.8.0 起已實作(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:'reject' 協定訊息(以及協定版本提升至 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。僅記憶體池 CLTV 在 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 起在 Bitcoin Core 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:BIP 34、65 和 66 的啟動觸發機制自 v0.14.0 起已簡化為區塊高度檢查(PR #8391)。
-
BIP111:NODE_BLOOM 服務位元自 v0.13.0 起為所有對等節點版本添加並強制執行(PR #6579 和 PR #6641)。
-
BIP112:CHECKSEQUENCEVERIFY 操作碼自 v0.12.1 起已實作(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 尊重並發送 feefilter 訊息(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:NULLDUMMY 軟分叉自 v0.13.1 起(PR 8636 和 PR 8937),自 v0.19.0 起埋藏(PR #16060)。
-
BIP152:緊湊區塊傳輸和相關優化自 v0.13.0 起使用(PR 8068)。
-
BIP155:啟用 Tor V3 地址(和其他網路)轉發的 'addrv2' 和 'sendaddrv2' 訊息自 v0.21.0 起支援(PR 19954)。
-
BIP157 158:輕量級客戶端的緊湊區塊過濾器可以自 v0.19.0 起建立索引(PR #14121),並自 v0.21.0 起在 P2P 網路上為對等節點提供服務(PR #16442)。
-
BIP159:NODE_NETWORK_LIMITED 服務位元自 v0.16.0 起發出信號(PR 11740),並且自 v0.17.0 起連接到此類節點(PR 10387)。
-
BIP173:自 v0.16.0 起支援原生隔離見證輸出的 Bech32 地址(PR 11167)。自 v0.20.0 起預設生成 Bech32 地址(PR 16884)。
-
BIP174:操作部分簽署比特幣交易(PSBT)的 RPC 自 v0.17.0 起存在(PR 13557)。
-
BIP176:位元面額 [僅 QT] 自 v0.16.0 起支援(PR 12035)。
-
BIP325:自 v0.21.0 起支援 Signet 測試網路(PR 18267)。
-
BIP339:自 v0.21.0 起支援透過 wtxid 轉發交易(PR 18044)。
-
BIP340 341 342:Taproot 的驗證規則(包括 Schnorr 簽章和 Tapscript 葉子)自 v0.21.0 起實作(PR 19953),主網啟動自 v0.21.1 起(PR 21377、PR 21686)。
-
BIP350:原生 v1+ 隔離見證輸出的地址自 v22.0 起使用 bech32m 而不是 bech32(PR 20861)。
-
BIP371:PSBT 的 Taproot 欄位自 v24.0 起(PR 22558)。
-
BIP380 381 382 383 384 385:輸出腳本描述符和大多數腳本表達式自 v0.17.0 起實作(PR 13697)。
-
BIP386:tr() 輸出腳本描述符自 v22.0 起實作(PR 22051)。