Bitcoin Core 23.0

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

23.0 版本說明

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

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

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

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

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

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

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

如何升級

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

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

相容性

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

重要變更

P2P 和網路變更

  • bitcoind 節點預設情況下將不再向入站對等節點傳播地址。在發送 ADDR、ADDRV2 或 GETADDR 訊息後,它們將符合地址傳播的資格。(#21528)

  • 在此版本之前,Bitcoin Core 強烈傾向於嘗試僅連接到監聽連接埠 8333 的對等節點。因此,監聽非標準連接埠的 Bitcoin 節點可能不會獲得任何 Bitcoin Core 對等節點連接到它們。此偏好已被移除。(#23542)

  • 已新增對 CJDNS 網路的完整支援。請參閱新選項 -cjdnsreachabledoc/cjdns.md (#23077)

費用估算變更

  • 費用估算現在會考慮替換 (RBF) 交易的費率。(#22539)

移除重新掃描啟動參數

已移除 -rescan 啟動參數。由於損壞而需要重新掃描的錢包仍將在啟動時重新掃描。否則,請使用 rescanblockchain RPC 來觸發重新掃描。(#23123)

Tracepoint 和使用者空間靜態定義追蹤支援

Linux 的 Bitcoin Core 發布二進位檔案現在包含實驗性 tracepoint,作為程式內部事件的介面。這些可用於審查、除錯、監控等。tracepoint API 是半穩定的。雖然 API 經過測試,但程式內部可能會在版本之間變更,需要變更 tracepoint。有關現有 tracepoint 的資訊可以在 doc/tracing.md 中找到,使用範例在 contrib/tracing/ 中提供。

更新的 RPC

  • validateaddress RPC 現在為無效地址返回一個 error_locations 陣列,其中包含地址中無效字元位置的索引(如果已知)。例如,這將嘗試找到最多兩個 Bech32 錯誤,並在成功時返回它們的位置。只有在少於兩個替換錯誤時,才能保證成功和正確性。 當解碼失敗時,error 欄位中返回的錯誤訊息現在也返回更具體的錯誤。(#16807)

  • 已移除 -deprecatedrpc=addresses 設定選項。RPC gettxoutgetrawtransactiondecoderawtransactiondecodescriptgettransaction verbose=true 和 REST 端點 /rest/tx/rest/getutxos/rest/block 不再返回 addressesreqSigs 欄位,這些欄位先前在 22.0 中已被棄用。(#22650)
  • getblock RPC 命令現在支援詳細度等級 3,包含交易輸入的 prevout 資訊。現有的 /rest/block/ REST 端點也已修改以包含此資訊。每個 vin 欄位將包含一個額外的 prevout 子欄位,描述已花費的輸出。prevout 包含以下鍵:
    • generated - 如果花費的幣是 coinbase 則為 true。
    • height
    • value
    • scriptPubKey
  • 由 RPC getmempoolentrygetrawmempool(verbose=true)getmempoolancestors(verbose=true)getmempooldescendants(verbose=true) 返回的頂層費用欄位 feemodifiedfeeancestorfeesdescendantfees 已被棄用,並將在下一個主要版本中移除(如果在此版本中需要,請使用 -deprecated=fees)。相同的費用欄位可以透過結果中的 fees 物件存取。警告:已棄用的欄位 ancestorfeesdescendantfees 以 sats 計價,而 fees 物件中的所有欄位都以 BTC 計價。(#22689)

  • createmultisigaddmultisigaddress 現在都包含一個 warnings 欄位,如果在使用未壓縮公鑰時請求非傳統地址類型,將顯示警告。(#23113)

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

新的 RPC

  • 有關軟分叉狀態的資訊已從 getblockchaininfo 移至新的 getdeploymentinfo RPC,該 RPC 允許查詢任何區塊的軟分叉狀態,而不僅僅是鏈頂端。目前可以使用設定 -deprecatedrpc=softforksgetblockchaininfo 中復原包含軟分叉狀態,但這將在未來版本中移除。請注意,在任何一種情況下,status 欄位現在反映當前區塊的狀態,而不是下一個區塊。(#23508)

檔案

  • 在啟動時,被禁止主機和網路的清單(透過 setban RPC)在 banlist.dat 中將被忽略,僅考慮 banlist.json。Bitcoin Core 22.x 版本是唯一可以讀取 banlist.dat 並將其寫入 banlist.json 的版本。如果 banlist.json 已存在,22.x 版本將不會嘗試將 banlist.dat 轉換為 json。升級後,可以使用 listbanned 來仔細檢查解析的條目。(#22570)

更新的設定

  • 在先前版本中,命令列選項 -persistmempool(未提供值)的含義錯誤地停用了 mempool 持久性。-persistmempool 現在像其他布林選項一樣處理,表示 -persistmempool=1。傳遞 -persistmempool=0-persistmempool=1-nopersistmempool 不受影響。(#23061)

  • -maxuploadtarget 現在允許人類可讀的位元組單位 [k K m M g G t T]。例如 -maxuploadtarget=500g。不允許空格、+- 或分數。如果未提供後綴,預設為 M。(#23249)
  • 如果 -proxy=-noonion 一起給出,則提供的代理將不會設定為到達 Tor 網路的代理。因此將無法手動開啟到 Tor 網路的連線,例如使用 addnode RPC。要模仿舊行為,請使用 -proxy=-onlynet= 一起列出除 onion 之外的所有相關網路。(#22834)

工具和實用程式

  • 更新 -getinfo 以以使用者友好的格式返回資料,同時減少垂直空間。(#21832)

  • CLI -addrinfo 現在為節點已知的 onion 地址數量返回一個欄位,而不是單獨的 torv2torv3 欄位,因為對 Tor V2 地址的支援已在 22.0 中從 Bitcoin Core 中移除。(#22544)

錢包

  • 描述符錢包現在是預設錢包類型。新建立的錢包將使用描述符,除非在 createwallet 期間設定 descriptors=false,或在 GUI 中取消選取 Descriptor wallet 複選框。

    請注意,像 importmultidumpprivkey 這樣的錢包 RPC 命令不能與描述符錢包一起使用,因此如果您的客戶端程式碼依賴於這些命令而不在錢包建立期間指定 descriptors=false,您將需要更新您的程式碼。

  • 新建立的描述符錢包將包含一個自動生成的 tr() 描述符,允許建立單鍵 Taproot 接收地址。

  • upgradewallet 現在將在從非 HD 錢包升級到 HD 錢包時自動重新整理密鑰池,以立即開始使用新生成的 HD 金鑰。(#23093)

  • 已新增一個新的 RPC newkeypool,它將重新整理(完全清除並重新填充)密鑰池。(#23093)

  • listunspent 現在為仍在 mempool 中的每個交易輸出包含 ancestorcountancestorsizeancestorfees。(#12677)

  • lockunspent 現在可選地採用第三個參數 persistent,這會導致鎖定持久地寫入錢包資料庫。這允許 UTXO 即使在節點重新啟動或崩潰後仍保持鎖定。(#23065)

  • receivedby RPC 現在包含 coinbase 交易。以前,以下錢包 RPC 排除 coinbase 交易:getreceivedbyaddressgetreceivedbylabellistreceivedbyaddresslistreceivedbylabel。此版本變更了此行為,並返回考慮從 coinbase 輸出收到的幣的結果。可以使用設定 -deprecatedrpc=exclude_coinbase 復原先前的行為,但可能會在未來版本中移除。(#14707)

  • 在相同的 receivedby RPC 中,新選項 include_immature_coinbase(預設=false)決定是否計算未成熟的 coinbase 交易。未成熟的 coinbase 交易是確認數為 100 或更少且不可花費的 coinbase 交易。(#14707)

GUI 變更

  • 透過 GUI 鎖定的 UTXO 現在持久地儲存在錢包資料庫中,因此在節點關閉或崩潰時不會丟失。(#23065)

  • Bech32 複選框已替換為所有地址類型的下拉選單,包括適用於 Taproot 啟用錢包的新 Bech32m (BIP-350) 標準。

低階變更

RPC

  • getblockchaininfo 現在返回一個新的 time 欄位,提供鏈頂端時間。(#22407)

測試

  • 對於 regtest 網路,多個軟分叉的啟動高度設定為區塊高度 1。它們可以透過執行時設定 -testactivationheight=name@height 變更。(#22818)

致謝

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

  • 0xb10c
  • 0xree
  • Aaron Clauson
  • Adrian-Stefan Mares
  • agroce
  • aitorjs
  • Alex Groce
  • amadeuszpawlik
  • Amiti Uttarwar
  • Andrew Chow
  • Andrew Poelstra
  • Andrew Toth
  • anouar kappitou
  • Anthony Towns
  • Antoine Poinsot
  • Arnab Sen
  • Ben Woosley
  • benthecarman
  • Bitcoin Hodler
  • BitcoinTsunami
  • brianddk
  • Bruno Garcia
  • CallMeMisterOwl
  • Calvin Kim
  • Carl Dong
  • Cory Fields
  • Cuong V. Nguyen
  • Darius Parvin
  • Dhruv Mehta
  • Dimitri Deijs
  • Dimitris Apostolou
  • Dmitry Goncharov
  • Douglas Chimento
  • eugene
  • Fabian Jahr
  • fanquake
  • Florian Baumgartl
  • fyquah
  • Gleb Naumenko
  • glozow
  • Gregory Sanders
  • Heebs
  • Hennadii Stepanov
  • hg333
  • HiLivin
  • Igor Cota
  • Jadi
  • James O’Beirne
  • Jameson Lopp
  • Jarol Rodriguez
  • Jeremy Rand
  • Jeremy Rubin
  • Joan Karadimov
  • John Newbery
  • Jon Atack
  • João Barbosa
  • josibake
  • junderw
  • Karl-Johan Alm
  • katesalazar
  • Kennan Mell
  • Kiminuo
  • Kittywhiskers Van Gogh
  • Klement Tan
  • Kristaps Kaupe
  • Kuro
  • Larry Ruane
  • lsilva01
  • lucash-dev
  • Luke Dashjr
  • MarcoFalke
  • Martin Leitner-Ankerl
  • Martin Zumsande
  • Matt Corallo
  • Matt Whitlock
  • MeshCollider
  • Michael Dietz
  • Murch
  • naiza
  • Nathan Garabedian
  • Nelson Galdeman
  • NikhilBartwal
  • Niklas Gögge
  • node01
  • nthumann
  • Pasta
  • Patrick Kamin
  • Pavel Safronov
  • Pavol Rusnak
  • Perlover
  • Pieter Wuille
  • practicalswift
  • pradumnasaraf
  • pranabp-bit
  • Prateek Sancheti
  • Prayank
  • Rafael Sadowski
  • rajarshimaitra
  • randymcmillan
  • ritickgoenka
  • Rob Fielding
  • Rojar Smith
  • Russell Yanofsky
  • S3RK
  • Saibato
  • Samuel Dobson
  • sanket1729
  • seaona
  • Sebastian Falbesoner
  • sh15h4nk
  • Shashwat
  • Shorya
  • ShubhamPalriwala
  • Shubhankar Gambhir
  • Sjors Provoost
  • sogoagain
  • sstone
  • stratospher
  • Suriyaa Rocky Sundararuban
  • Taeik Lim
  • TheCharlatan
  • Tim Ruffing
  • Tobin Harding
  • Troy Giorshev
  • Tyler Chambers
  • Vasil Dimov
  • W. J. van der Laan
  • w0xlt
  • willcl-ark
  • William Casarin
  • zealsham
  • Zero-1729

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