Bitcoin Core 30.0

Bitcoin Core installation binaries can be downloaded from bitcoincore.org and the source-code is available from the Bitcoin Core source repository.

30.0 版本發行說明

Bitcoin Core v30.0 版本現已可從以下位址取得:

https://bitcoincore.org/bin/bitcoin-core-30.0/

此版本包含新功能、各種錯誤修復和性能改進,以及更新的翻譯。

請使用 GitHub 的問題追蹤器回報錯誤:

https://github.com/bitcoin/bitcoin/issues

要接收安全和更新通知,請訂閱:

https://bitcoincore.org/zh_TW/list/announcements/join/

隨著此新主要版本的發布,27.x 及更舊版本已達「生命週期終止」,將不再接收更新。

根據安全政策,我們將在兩週內披露:

  • 28.0 中修復的中度和高嚴重性漏洞。沒有此類漏洞。

  • 30.0 中修復的低嚴重性漏洞。有 5 個此類漏洞。

如何升級

如果您正在執行較舊版本,請將其關閉。等待它完全關閉(在某些情況下可能需要幾分鐘),然後執行安裝程式(Windows)或直接覆蓋 /Applications/Bitcoin-Qt(macOS)或 bitcoind/bitcoin-qt(Linux)。

可以直接從已達到 EOL 的 Bitcoin Core 版本升級,但如果資料目錄需要遷移,可能需要一些時間。Bitcoin Core 的舊錢包版本通常都受支援。

相容性

Bitcoin Core 在使用 Linux Kernel 3.17+、macOS 13+ 和 Windows 10+ 的作業系統上受到支援和測試。Bitcoin Core 也應該在大多數其他類 Unix 系統上運作,但在這些系統上測試的頻率較低。不建議在不受支援的系統上使用 Bitcoin Core。

重要變更

政策

  • 單一標準交易中可能執行的舊版簽名操作數量上限現在限制為 2500。所有先前輸出腳本、所有輸入腳本以及所有 P2SH redeem 腳本(如果有)中的簽名操作都計入此限制。新限制預計不會影響任何已知的典型標準交易。此變更是為了準備未來可能的 BIP54 部署。(#32521)

  • -datacarriersize 預設增加到 100,000,這實際上取消了限制(因為會先達到最大交易大小限制)。可以使用 -datacarriersize=83 覆蓋以恢復到先前版本中強制執行的限制。(#32406)

  • 現在允許交易中包含多個資料載體(OP_RETURN)輸出進行中繼和挖礦。-datacarriersize 限制適用於交易中所有此類輸出的 scriptPubKey 的總大小,不包括 scriptPubKey 大小本身。(#32406)

  • 最小區塊手續費率(-blockmintxfee)已變更為每 vB 0.001 聰。仍可使用配置選項變更。礦工可使用此選項設定新增到區塊模板的套件的最小手續費率。(#33106)

  • 預設最小中繼手續費率(-minrelaytxfee)和增量中繼手續費率(-incrementalrelayfee)已變更為每 vB 0.1 聰。仍可使用各自的配置選項變更,但如果您決定這樣做,建議一起變更兩者。(#33106)

    其他最小手續費率(例如塵埃手續費率、手續費估算器返回的最小值,以及錢包使用的所有手續費率)保持不變。記憶池最小手續費率仍會根據高流量變化。

    請注意,除非這些較低的預設值在整個網路中被廣泛採用,否則不保證以較低手續費率建立的交易會傳播或確認。錢包手續費率保持不變;在嘗試使用錢包建立較低手續費率的交易之前,必須變更 -mintxfee。(#33106)

P2P 和網路變更

  • 機會性的 1-parent-1-child 套件中繼已改進,可處理子交易在記憶池中已有未確認父交易的情況。這意味著 1p1c 套件即使連接到更廣泛的拓撲結構也可以被接受和傳播:多父-1-子(其中只有 1 個父交易需要手續費提升)、祖父-父-子(其中只有父交易需要手續費提升)等。(#31385)

  • 交易孤兒池暫時保存缺少輸入的交易,同時節點嘗試獲取其父交易,現在具有改進的阻斷服務保護。以前,它強制執行唯一交易的最大數量(預設 100,可使用 -maxorphantx 配置)。現在,其限制如下:條目數量(按 wtxid 和對等點唯一),加上每個唯一交易的輸入計數除以 10,不得超過 3,000。唯一交易的總重量不得超過 404,000 Wu 乘以對等點數量。(#31829)

  • -maxorphantx 選項不再有任何效果,因為孤兒池不再限制唯一交易的數量。如果使用者正在使用此配置選項,應將其移除,因為在未來版本中不再識別該設定時,它將導致錯誤。(#31829)

新的 bitcoin 命令

  • 新增了一個 bitcoin 命令列工具,使功能更易於發現和使用。bitcoin 工具只是呼叫其他可執行檔,本身不實作任何功能。具體而言,bitcoin nodebitcoind 的同義詞,bitcoin guibitcoin-qt 的同義詞,bitcoin rpcbitcoin-cli -named 的同義詞。其他命令和選項可使用 bitcoin help 列出。新的 bitcoin 命令是直接呼叫其他命令的替代方案,但它不會取代它們,也沒有計劃棄用現有命令。(#31375)

外部簽名

  • Windows 上的外部簽名支援已重新啟用。(#29868)

IPC 挖礦介面

  • 新的 bitcoin 命令確實支援一個新功能:(實驗性)IPC 挖礦介面,允許節點與 Stratum v2 或其他挖礦客戶端軟體協同工作,請參閱 (#31098)。當節點使用 bitcoin -m node -ipcbind=unix 啟動時,它將在 unix socket 上監聽 IPC 客戶端連接,允許客戶端請求區塊模板和提交已挖掘的區塊。-m 選項啟動一個新的內部二進位檔案(bitcoin-node 而不是 bitcoind),目前是必需的,但將來會變為可選(透過 #33229)。

  • IPC 連接引入了新的依賴項(請參閱 multiprocess.md),如果您不打算使用 IPC,可以使用 -DENABLE_IPC=OFF 建置選項關閉。(#31802)

安裝變更

  • test_bitcoin 可執行檔現在安裝在 libexec/ 而不是 bin/ 中。它仍然可以直接執行,或透過新的 bitcoin 命令作為 bitcoin test 存取。libexec/ 目錄還包含新的 bitcoin-nodebitcoin-gui 二進位檔案,它們支援 IPC 功能並透過 bitcoin 工具呼叫。僅在原始碼建置中,test_bitcoin-qtbench_bitcoinbitcoin-chainstate 現在也安裝到 libexec/ 而不是 bin/,可透過新的 bitcoin 命令存取。詳情請參閱 bitcoin help 輸出。(#31679)

  • 在 Windows 上,安裝程式不再在開始選單條目中新增「(64-bit)」後綴 (#32132),現在會在升級期間自動移除過時的檔案 (#33422)。

索引

  • coinstatsindex 的實作已變更以防止在預設 Signet 上已經可以觀察到的溢位錯誤。升級節點首次啟動時,需要從頭開始同步新版本的索引。

    新版本儲存在 /indexes/coinstatsindex/ 中,而舊版本儲存在 /indexes/coinstats/ 中。升級的節點不會刪除舊版本的索引,以防使用者將來選擇降級其節點。如果使用者不打算降級,可以安全地從其資料目錄中移除 /indexes/coinstats/。Bitcoin Core 的未來版本可能會自動移除舊版本的索引。(#30469)

日誌記錄

  • 無條件記錄到磁碟現在透過給每個源位置每小時 1MiB 的配額進行速率限制。無條件記錄是指日誌級別高於 debug 的任何記錄,即 infowarningerror。如果至少有一個源位置目前正在被抑制,所有日誌將以 [*] 為前綴。(#32604)

  • 當啟用 -logsourcelocations 時,日誌輸出現在包含整個函數簽名,而不僅僅是函數名稱。(#32604)

更新的 RPC

  • -paytxfee 啟動選項和 settxfee RPC 現已棄用,將在 Bitcoin Core 31.0 中移除。它們允許使用者為錢包交易設定靜態手續費率,這可能導致過度支付或支付不足。使用者應該依賴手續費估算,或使用 fundrawtransactionsendtoaddresssendsendallsendmany 等 RPC 中的 fee_rate 參數為每筆交易指定手續費率。(#31278)

  • 任何參數之一是描述符的 RPC 如果提供的描述符在片段內的公鑰開頭或結尾包含空格,將拋出錯誤 - 例如 pk( KEY)pk(KEY )。(#31603)

  • submitpackage RPC 允許提交子-父套件,不再要求所有未確認的父交易都存在。套件也可以包含其他記憶池中的祖先。(#31385)

  • waitfornewblock RPC 現在接受可選的 current_tip 參數。它也不再是隱藏的。(#30635)

  • waitforblockwaitforblockheight RPC 不再是隱藏的。(#30635)

  • psbtbumpfeebumpfee RPC 允許在 fullrbf 下進行替換,不再需要 BIP-125 信號。(#31953)

  • 交易腳本驗證錯誤以前會返回錯誤原因,如果是共識錯誤則以 mandatory-script-verify-flag-failed 為前綴,如果是標準性錯誤則以 non-mandatory-script-verify-flag(不帶「-failed」)為前綴。現在分別對所有區塊和記憶池錯誤變更為 block-script-verify-flag-failedmempool-script-verify-flag-failed。(#33183)

  • getmininginfo RPC 現在返回「blockmintxfee」結果,指定 -blockmintxfee 配置的值。(#33189)

  • getmempoolinfo RPC 現在返回額外的「permitbaremultisig」和「maxdatacarriersize」欄位,反映 -permitbaremultisig-datacarriersize 配置值。(#29954)

與錢包相關的 RPC 變更可在下面的錢包章節中找到。

新的 RPC

  • 引入了一個新的 REST API 端點(/rest/spenttxouts/BLOCKHASH),用於使用區塊的 undo 資料有效獲取已花費的交易輸出 (#32540)。

建置系統

更新的設定

  • -maxmempool-dbcache 啟動參數現在在 32 位元系統上分別限制為 500MB 和 1GiB。(#32530)

  • -natpmp 選項現在預設設定為 1。這意味著啟用了 -listen(預設)但在防火牆後面執行的節點(例如本地網路路由器)如果防火牆/路由器支援任何 PCPNAT-PMP 協議,將是可達的。(#33004)

  • -upnp 設定現已完全移除。請改用 -natpmp。(#32500)

  • 以前,-proxy 為所有網路指定代理(除了使用 -i2psam 的 I2P),並且只能透過 -onion 單獨指定 Tor 代理。現在,-proxy 的語法已擴展,可以透過附加 = 後跟網路名稱來分別為 IPv4、IPv6、Tor 和 CJDNS 指定代理,例如 -proxy=127.0.0.1:5555=ipv6 僅為 IPv6 配置代理。-proxy 選項可以多次使用來為不同的網路定義不同的代理,例如 -proxy=127.0.0.1:4444=ipv4 -proxy=10.0.0.1:6666=ipv6。對於同一網路,後面的設定會覆蓋前面的設定;這可用於移除早期的所有網路代理並僅對給定網路使用直接連接,例如 -proxy=127.0.0.1:5555 -proxy=0=cjdns。(#32425)

  • -blockmaxweight 啟動選項已更新為僅調試。它仍然可供使用者使用,但現在在預設 -help 文字中隱藏,僅在 -help-debug 中顯示 (#32654)。

與 GUI 或錢包相關的設定變更可在下面的 GUI 或錢包章節中找到。

錢包

  • BDB 舊版錢包不能再建立或載入。它們可以遷移到新的描述符錢包格式。有關更多詳細資訊,請參閱 migratewallet RPC。

  • 移除舊版錢包後,bitcoin-wallet 工具中的冗餘選項(例如 -withinternalbdb-legacy-descriptors)被丟棄。此外,僅限舊版的 RPC addmultisigaddressdumpprivkeydumpwalletimportaddressimportmultiimportprivkeyimportpubkeyimportwalletnewkeypoolsethdseedupgradewallet 被移除。(#32944, #28710, #32438, #31250)

  • 新增了對錢包接收的 TRUC 交易的花費支援,以及建立 TRUC 交易的支援。錢包確保滿足 TRUC 政策規則。如果使用者嘗試將 TRUC utxo 與其他版本的 utxo 一起花費,錢包將拋出錯誤。此外,錢包將未確認的 TRUC 兄弟交易視為記憶池衝突。錢包還將確保花費 TRUC utxo 的交易滿足所需的大小限制。(#32896)

  • 由於描述符錢包不允許混合僅監視和非僅監視描述符,include_watchonly 選項(及其命名變體)從所有擁有它的 RPC 中移除。(#32618)

  • iswatchonly 欄位從任何返回它的 RPC 中移除。(#32618)

  • unloadwallet - 當 RPC 錢包端點和 wallet_name 參數都未指定時返回 RPC_INVALID_PARAMETER。以前 RPC 會因 JSON 解析錯誤而失敗。(#32845)

  • getdescriptoractivity - 將 blockhashes 和 scanobjects 參數標記為必需,以便使用者在缺少任何一個時收到清晰的幫助訊息。與 unloadwallet 一樣,以前 RPC 會因 JSON 解析錯誤而失敗。(#32845)

  • getwalletinfo - 移除欄位 balanceimmature_balanceunconfirmed_balance。(#32721)

  • getunconfirmedbalance - 移除此 RPC 命令。您可以查詢 getbalances RPC 並檢查 JSON 回應中的 "mine" "untrusted_pending" 條目。(#32721)

  • 以下 RPC 現在包含一個 version 參數,允許使用者建立任何標準版本號(1-3)的交易:

    • createrawtransaction
    • createpsbt
    • send
    • sendall
    • walletcreatefundedpsbt (#32896)

GUI 變更

  • GUI 已從 Qt 5 遷移到 Qt 6。在 Windows 上,現在支援深色模式。在 macOS 上,現在使用 Metal 後端。(#30997)

  • 允許在 fullrbf 下進行交易手續費提升,不再需要 BIP-125 信號。(#31953)

  • 作為移除舊版錢包的副作用,交易頁籤中的自訂列寬被重置。(#32459)

低階變更

  • 日誌現在包含哪個對等點向我們發送了標頭。此外,冗餘的標頭日誌訊息更少。此變更的副作用是,對於某些非典型情況,新標頭不再記錄,例如帶有先前未知標頭的直接 BLOCK 訊息和 submitheader RPC。(#27826)

致謝

感謝直接為此版本做出貢獻的每個人:

  • 0xb10c
  • amisha
  • Andrew Toth
  • Anthony Towns
  • Antoine Poinsot
  • Ava Chow
  • benthecarman
  • Brandon Odiwuor
  • brunoerg
  • Bue-von-hon
  • Bufo
  • Chandra Pratap
  • Chris Stewart
  • Cory Fields
  • Daniel Pfeifer
  • Daniela Brozzoni
  • David Gumberg
  • deadmanoz
  • dennsikl
  • dergoegge
  • enoch
  • Ethan Heilman
  • Eugene Siegel
  • Eunovo
  • Eval EXEC
  • Fabian Jahr
  • fanquake
  • Florian Schmaus
  • fuder.eth
  • furszy
  • glozow
  • Greg Sanders
  • Hao Xu
  • Haoran Peng
  • Haowen Liu
  • Hennadii Stepanov
  • Hodlinator
  • hoffman
  • ishaanam
  • ismaelsadeeq
  • Jameson Lopp
  • janb84
  • Jiri Jakes
  • John Bampton
  • Jon Atack
  • josibake
  • jurraca
  • kevkevin
  • kevkevinpal
  • kilavvy
  • Kristaps Kaupe
  • l0rinc
  • laanwj
  • leopardracer
  • Lőrinc
  • Luis Schwab
  • Luke Dashjr
  • MarcoFalke
  • marcofleon
  • Martin Zumsande
  • Matt Corallo
  • Matthew Zipkin
  • Max Edwards
  • monlovesmango
  • Murch
  • naiyoma
  • nervana21
  • Nicola Leonardo Susca
  • Novo
  • pablomartin4btc
  • Peter Todd
  • Pieter Wuille
  • Pol Espinasa
  • Prabhat Verma
  • rkrux
  • Roman Zeyde
  • Ryan Ofsky
  • Saikiran
  • Salvatore Ingala
  • Sebastian Falbesoner
  • Sergi Delgado Segura
  • Shunsuke Shimizu
  • Sjors Provoost
  • stickies-v
  • stratospher
  • stringintech
  • strmfos
  • stutxo
  • tdb3
  • TheCharlatan
  • Tomás Andróil
  • UdjinM6
  • Vasil Dimov
  • VolodymyrBg
  • w0xlt
  • will
  • willcl-ark
  • William Casarin
  • woltx
  • yancy
  • zaidmstrr

以及所有在 Transifex 上幫助翻譯的人。