Bitcoin Core 25.0

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

25.0 版本說明

Bitcoin Core 25.0 版本現已發布,可從以下位置下載:

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

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

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

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

如需接收安全性和更新通知,請訂閱:

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

如何升級

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

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

相容性

Bitcoin Core 在使用 Linux kernel、macOS 10.15+ 和 Windows 7 及更新版本的作業系統上受到支援和廣泛測試。Bitcoin Core 也應該可以在大多數其他類 Unix 系統上運作,但在這些系統上的測試頻率較低。不建議在不受支援的系統上使用 Bitcoin Core。

重要變更

P2P 和網路變更

  • 現在 mempool 和中繼政策允許非見證大小 65 bytes 及以上的交易。這是為了更好地反映針對 CVE-2017-12842 的實際提供保護,並開放更小交易大小的額外使用案例。(#26265)

新的 RPC

  • scanblocks RPC 透過掃描給定範圍內的所有區塊過濾器,從一組描述符返回相關的區塊雜湊值。它可以與 getblockheader 和 rescanblockchain RPC 結合使用,以實現快速錢包重新掃描。請注意,只有在節點建構了緊湊區塊過濾器索引(-blockfilterindex=1)時,才能使用此功能。(#23549)

更新的 RPC

  • 所有 JSON-RPC 方法都接受名為 args 的新命名參數,可以包含位置參數值。這是一個方便功能,允許某些參數值透過名稱傳遞,而無需命名每個值。python 測試框架和 bitcoin-cli 工具都利用了這一點,因此例如:
bitcoin-cli -named createwallet wallet_name=mywallet load_on_startup=1

現在可以縮短為:

bitcoin-cli -named createwallet mywallet load_on_startup=1
  • verifychain RPC 現在將返回 false,如果檢查沒有失敗,但無法在所需的深度和級別完成。這可能是由於在修剪時缺少資料、由於 dbcache 不足或由於節點在呼叫完成之前被關閉。(#25574)

  • sendrawtransaction 有一個新的可選參數 maxburnamount,預設值為 0。任何包含值大於 maxburnamount 的不可花費輸出的交易都不會提交。目前,被視為不可花費的輸出是那些腳本以 OP_RETURN 程式碼開頭的(稱為「datacarriers」)、超過最大腳本大小的腳本以及包含無效操作碼的腳本。

  • testmempoolaccept RPC 現在在「fees」結果中返回 2 個額外結果:「effective-feerate」是包括使用套件驗證時一起驗證的交易的費用和大小的費率,並且還包括來自 prioritisetransaction 的任何修改費用。「effective-includes」結果列出了其修改費用和大小用於有效費率的交易的 wtxid。(#26646)

  • decodescript 現在可以在 P2WSH 上下文下推斷 Miniscript 描述符(如果不缺少資訊)。(#27037)

  • finalizepsbt 現在能夠最終化花費 Miniscript 相容 P2WSH 腳本的輸入的交易。(#24149)

與錢包相關的 RPC 變更可以在下面的錢包部分找到。

建置系統

  • --enable-upnp-default--enable-natpmp-default 選項已被移除。如果您想使用連接埠映射,可以使用 .conf 檔案進行設定,或在執行時傳遞相關選項。(#26896)

更新的設定

  • 如果使用者明確提供了 -checkblocks-checklevel 選項,但由於 dbcache 不足而無法完成驗證檢查,Bitcoin Core 現在將在啟動時返回錯誤。(#25574)

  • -port-rpcport 選項中指定的連接埠現在會在啟動時進行驗證。先前有效且被視為有效的值現在可能導致錯誤。(#22087)

  • 設定 -blocksonly 現在將最大 mempool 記憶體減少到 5MB(使用者仍可使用 -maxmempool 覆蓋)。先前,將使用預設的 300MB,導致使用 -blocksonly 運作的使用者出現意外的記憶體使用,預期它會消除 mempool 記憶體使用。

    由於未使用的 mempool 記憶體與 dbcache 共用,這也減少了使用 -blocksonly 運作的使用者的 dbcache 大小,可能影響效能。

  • 設定 -maxconnections=0 現在將停用 -dnsseed-listen(使用者仍可設定它們以覆蓋)。

與 GUI 或錢包相關的設定變更可以在下面的 GUI 或錢包部分找到。

新設定

  • shutdownnotify 選項用於指定在 Bitcoin Core 開始其關閉序列之前同步執行的命令。(#23395)

錢包

  • minconf 選項(允許使用者指定正在花費的 UTXO 的最小確認數)和 maxconf 選項(允許指定最大確認數)已在 #25375 中新增到以下 RPC:
    • fundrawtransaction
    • send
    • walletcreatefundedpsbt
    • sendall
  • listdescriptors 的回應中新增了新的 next_index 欄位,以與 importdescriptors 具有相同的格式 (#26194)

  • RPC listunspent 現在有新參數 include_immature_coinbase,以包含不符合最小可花費深度要求的 coinbase UTXO(之前會被靜默跳過)。(#25730)

  • 如果可用緊湊區塊過濾器(BIP158),描述符錢包的重新掃描現在明顯更快。由於預設情況下不會建構這些過濾器,因此必須提供設定選項「-blockfilterindex=1」才能利用此最佳化。這改善了 RPC 呼叫 rescanblockchainimportdescriptorsrestorewallet 的效能。(#25957)

  • RPC unloadwallet 現在如果重新掃描正在進行中則會失敗。(#26618)

  • 錢包密碼現在可以包含 null 字元。在此變更之前,只有第一個 null 字元之前的字元會被識別和接受。(#27068)

  • 地址目的字串現在限制為目前已知的「send」、「receive」和「refund」值。具有未識別目的字串的錢包將有載入警告,如果請求未識別的目的,listlabels RPC 將引發錯誤。(#27217)

  • createwalletloadwalletunloadwalletrestorewallet RPC 中,「warning」字串欄位已被棄用,改為返回字串 JSON 陣列的「warnings」欄位,以更好地處理多個警告訊息並與其他錢包 RPC 保持一致。「warning」欄位將在 v26 中從這些 RPC 中完全移除。在棄用期間,可以透過使用設定選項 -deprecatedrpc=walletwarningfield 啟動 bitcoind 來暫時重新啟用它。(#27279)

  • 描述符錢包現在可以花費發送到 P2WSH Miniscript 描述符的幣。(#24149)

GUI 變更

  • 「Mask values」現在是一個持久選項。(gui#701)
  • 「Mask values」選項現在除了影響「Overview」視圖外,也影響「Transaction」視圖。(gui#708)

REST

  • 已新增新的 /rest/deploymentinfo 端點,用於獲取有關共識變更部署的各種狀態資訊。(#25412)

二進位驗證

  • 二進位驗證腳本已更新。在先前版本中,它會驗證二進位檔案是否使用單一「release key」簽署。在此版本及後續版本中,它將驗證二進位檔案是否由_信任密鑰的門檻_簽署。有關更多詳細資訊和範例,請參閱: https://github.com/bitcoin/bitcoin/blob/master/contrib/verify-binaries/README.md (#27358)

低階變更

RPC

  • JSON-RPC 伺服器現在拒絕參數以相同名稱多次指定的請求,而不是靜默地用後面的參數值覆蓋較早的參數值。(#26628)
  • RPC listsinceblock 現在接受可選的 label 參數,以獲取具有指定標籤的傳入交易。(#25934)
  • 先前 setbanaddpeeraddresswalletcreatefundedpsbt 方法允許將非布林和非 null 值作為布林參數傳遞。傳遞的任何字串、數字、陣列或物件值都會被視為 false。在此變更後,傳遞除 truefalsenull 之外的任何值現在會觸發 JSON value is not of expected type 錯誤。(#26213)

致謝

感謝所有直接為此版本做出貢獻的人:

  • 0xb10c
  • 721217.xyz
  • @RandyMcMillan
  • amadeuszpawlik
  • Amiti Uttarwar
  • Andrew Chow
  • Andrew Toth
  • Anthony Towns
  • Antoine Poinsot
  • Aurèle Oulès
  • Ben Woosley
  • Bitcoin Hodler
  • brunoerg
  • Bushstar
  • Carl Dong
  • Chris Geihsler
  • Cory Fields
  • David Gumberg
  • dergoegge
  • Dhruv Mehta
  • Dimitris Tsapakidis
  • dougEfish
  • Douglas Chimento
  • ekzyis
  • Elichai Turkel
  • Ethan Heilman
  • Fabian Jahr
  • FractalEncrypt
  • furszy
  • Gleb Naumenko
  • glozow
  • Greg Sanders
  • Hennadii Stepanov
  • hernanmarino
  • ishaanam
  • ismaelsadeeq
  • James O’Beirne
  • jdjkelly@gmail.com
  • Jeff Ruane
  • Jeffrey Czyz
  • Jeremy Rubin
  • Jesse Barton
  • João Barbosa
  • JoaoAJMatos
  • John Moffett
  • Jon Atack
  • Jonas Schnelli
  • jonatack
  • Joshua Kelly
  • josibake
  • Juan Pablo Civile
  • kdmukai
  • klementtan
  • Kolby ML
  • kouloumos
  • Kristaps Kaupe
  • laanwj
  • Larry Ruane
  • Leonardo Araujo
  • Leonardo Lazzaro
  • Luke Dashjr
  • MacroFake
  • MarcoFalke
  • Martin Leitner-Ankerl
  • Martin Zumsande
  • Matt Whitlock
  • Matthew Zipkin
  • Michael Ford
  • Miles Liu
  • mruddy
  • Murray Nesbitt
  • muxator
  • omahs
  • pablomartin4btc
  • Pasta
  • Pieter Wuille
  • Pttn
  • Randall Naar
  • Riahiamirreza
  • roconnor-blockstream
  • Russell O’Connor
  • Ryan Ofsky
  • S3RK
  • Sebastian Falbesoner
  • Seibart Nedor
  • sinetek
  • Sjors Provoost
  • Skuli Dulfari
  • SomberNight
  • Stacie Waleyko
  • stickies-v
  • stratospher
  • Suhas Daftuar
  • Suriyaa Sundararuban
  • TheCharlatan
  • Vasil Dimov
  • Vasil Stoyanov
  • virtu
  • w0xlt
  • willcl-ark
  • yancy
  • Yusuf Sahin HAMZA

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