Bitcoin Core 22.0

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

22.0 版本說明

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

https://bitcoincore.org/bin/bitcoin-core-22.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.14+ 和 Windows 7 及更新版本的作業系統上受到支援和廣泛測試。Bitcoin Core 也應該可以在大多數其他類 Unix 系統上運作,但在這些系統上的測試頻率較低。不建議在不受支援的系統上使用 Bitcoin Core。

從 Bitcoin Core 22.0 開始,不再支援 macOS 10.14 之前的版本。

重要變更

P2P 和網路變更

  • 新增支援將 Bitcoin Core 作為 I2P (Invisible Internet Project) 服務執行並連接到此類服務。詳情請參閱 i2p.md。(#20685)
  • 此版本移除了對 Tor 版本 2 隱藏服務的支援,轉而僅支援 Tor v3,因為 Tor 網路在 Tor 0.4.6 版本發布時停止支援 Tor v2。從現在開始,Bitcoin Core 忽略 Tor v2 地址;它既不會透過網路向其他對等節點傳播這些地址,也不會將它們儲存在記憶體或 peers.dat 中。(#22050)

  • 透過 libnatpmp 新增 NAT-PMP 連接埠映射支援。(#18077)

新的和更新的 RPC

  • 由於實施了 BIP 350,所有接受地址的 RPC 在傳遞原生見證版本 1(或更高版本)時的行為都會改變。現在這些需要 Bech32m 編碼而不是 Bech32 編碼,並且 RPC 輸出中也將使用 Bech32m 編碼表示此類地址。在共識規則賦予版本 1 地址意義之前,不應為主網建立版本 1 地址(這將透過 BIP 341 實現)。一旦發生這種情況,預計將對它們使用 Bech32m,因此這不應影響任何生產系統,但可能會在此類地址已具有意義的其他網路(如 signet)上觀察到。(#20861)

  • getpeerinfo RPC 返回兩個新的布林欄位 bip152_hb_tobip152_hb_from,分別指示我們是否選擇了對等節點為緊湊區塊高頻寬模式,或對等節點是否選擇我們作為緊湊區塊高頻寬對等節點。高頻寬對等節點透過 cmpctblock 訊息而不是通常的 inv/headers 公告來發送新區塊公告。詳情請參閱 BIP 152。(#19776)

  • getpeerinfo 不再返回以下欄位:addnodebanscorewhitelisted,這些欄位先前在 0.21 中已被棄用。connection_type 欄位返回 manual 而不是 addnodepermissions 欄位指示對等節點是否具有特殊權限,而不是 whitelistedbanscore 欄位已被簡單移除。(#20755)

  • 以下 RPC:gettxoutgetrawtransactiondecoderawtransactiondecodescriptgettransaction 和 REST 端點:/rest/tx/rest/getutxos/rest/block 棄用了以下欄位(預設情況下不再在回應中返回):addressesreqSigs。必須傳遞 -deprecatedrpc=addresses 標誌才能在 RPC 回應中包含這些欄位。此標誌/選項僅適用於此主要版本,之後將完全移除棄用。請注意,這些欄位是 RPC 回應中返回的 scriptPubKey 物件的屬性。但是,在 decodescript 的回應中,這些欄位是頂層屬性,並再次作為 scriptPubKey 物件的屬性包含。(#20286)

  • 使用設定了 -json 選項的 bitcoin-tx 實用程式建立十六進位編碼的 bitcoin 交易時,回應的 tx 輸出中不再返回以下欄位:addressesreqSigs。(#20286)

  • listbanned RPC 現在返回兩個新的數字欄位:ban_durationtime_remaining。這些新欄位分別指示禁止的持續時間和禁止到期前的剩餘時間,均以秒為單位。此外,ban_created 欄位已重新定位到 banned_until 之前。(#21602)

  • setban RPC 可以再次禁止 onion 地址。這修復了 0.21.0 版本中引入的回歸。(#20852)

  • getnodeaddresses RPC 現在返回一個「network」欄位,指示每個地址的網路類型(ipv4、ipv6、onion 或 i2p)。(#21594)

  • getnodeaddresses 現在也接受「network」參數(ipv4、ipv6、onion 或 i2p)以僅返回指定網路的地址。(#21843)

  • testmempoolaccept RPC 現在接受多個交易(目前仍處於實驗階段,API 可能不穩定)。這旨在測試具有依賴關係的交易套件;不建議批次驗證獨立交易。除了 mempool 政策外,還適用套件政策:清單不能包含超過 25 個交易或總大小超過 101K 虛擬位元組,並且不能相互衝突(花費相同的輸入)或與 mempool 衝突,即使這將是有效的 BIP125 手續費替換。測試接受的準確性存在一些已知限制:testmempoolaccept 可能為一組交易返回「allowed」=True,但如果實際提交,則返回「too-long-mempool-chain」。(#20833)

  • addmultisigaddresscreatemultisig 現在最多支援 20 個金鑰用於 Segwit 地址。(#20867)

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

建置系統

  • 現在使用新的基於 guix 的建置系統產生發布二進位檔案。/doc/release-process.md 文件已相應更新。

檔案

  • 被禁止主機和網路的清單(透過 setban RPC)現在以 JSON 格式儲存在 banlist.json 中,而不是 banlist.dat。只有在 banlist.json 不存在時,才會在啟動時讀取 banlist.dat。變更僅寫入新的 banlist.json。未來版本的 Bitcoin Core 可能會完全忽略 banlist.dat。(#20966)

新設定

  • 已新增 -natpmp 選項以使用 NAT-PMP 映射監聽連接埠。如果同時啟用 UPnP 和 NAT-PMP,來自 UPnP 的成功分配優先於 NAT-PMP 的分配。(#18077)

更新的設定

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

  • 傳遞無效的 -rpcauth 參數現在會導致 bitcoind 無法啟動。(#20461)

工具和實用程式

  • 新的 CLI -addrinfo 命令返回節點已知的每個網路類型(包括 Tor v2 與 v3)和總計的地址數量。這可用於查看節點是否知道網路中足夠的地址以使用 -onlynet=<network> 等選項,或升級到支援僅 Tor v3 的 Bitcoin Core 22.0。(#21595)

  • 新的 -rpcwaittimeout 參數用於 bitcoin-cli,設定與 -rpcwait 一起使用的超時(以秒為單位)。如果超時到期,bitcoin-cli 將回報失敗。(#21056)

錢包

  • 現在可以透過新的 RPC 方法 enumeratesignersdisplayaddress 使用硬體錢包等外部簽名器。send RPC 呼叫也新增了支援。此功能是實驗性的。詳情請參閱 external-signer.md。(#16546)

  • 新的 listdescriptors RPC 可用於檢查啟用描述符的錢包的內容。RPC 返回所有匯入描述符的公共版本,包括它們的時間戳記和標誌。對於範圍描述符,它還返回範圍邊界和從中生成地址的下一個索引。(#20226)

  • bumpfee RPC 不適用於已停用私鑰的錢包。可以改用 psbtbumpfee。(#20891)

  • fundrawtransactionsendwalletcreatefundedpsbt RPC 現在支援 include_unsafe 選項,當為 true 時允許使用不安全的輸入來資助交易。請注意,如果其中一個不安全的輸入消失,結果交易可能會變得無效。如果發生這種情況,必須使用不同的輸入資助交易並重新發布。(#21359)

  • 我們現在支援 wsh() 下的 multi()sortedmulti() 描述符中最多 20 個金鑰。(#20867)

  • 只有在使用的網路(例如主網、測試網、signet)上發生啟動後,才能將 Taproot 描述符匯入錢包。請參閱 descriptors.md 以了解支援的描述符。

GUI 變更

  • 現在可以使用硬體錢包等外部簽名器。這些需要安裝外部工具(例如 HWI)並在選項 -> 錢包下進行設定。建立新錢包時,對話框中將出現新選項「External signer」。如果檢測到裝置,其名稱將建議作為錢包名稱。然後自動匯入僅觀察金鑰。可以在裝置上驗證接收地址。發送對話框將自動使用連接的裝置。此功能是實驗性的,執行這些操作時 UI 可能會凍結幾秒鐘。

低階變更

RPC

  • RPC 伺服器可以處理有限數量的同時 RPC 請求。以前,如果超過此限制,RPC 伺服器將回應狀態碼 500 (HTTP_INTERNAL_SERVER_ERROR)。現在它返回狀態碼 503 (HTTP_SERVICE_UNAVAILABLE)。(#18335)

  • 錯誤代碼已更新,以便對以下錯誤情況更加準確 (#18466):

    • signmessage 現在如果傳遞的地址無效,則返回 RPC_INVALID_ADDRESS_OR_KEY (-5)。以前返回 RPC_TYPE_ERROR (-3)。
    • verifymessage 現在如果傳遞的地址無效,則返回 RPC_INVALID_ADDRESS_OR_KEY (-5)。以前返回 RPC_TYPE_ERROR (-3)。
    • verifymessage 現在如果傳遞的簽名格式錯誤,則返回 RPC_TYPE_ERROR (-3)。以前返回 RPC_INVALID_ADDRESS_OR_KEY (-5)。

測試

22.0 變更日誌

此版本中變更的詳細清單如下。為了將清單保持在可管理的長度,不包括小型重構和拼寫錯誤修復,有時將類似的變更濃縮為一行。

共識

  • #19438 Introduce deploymentstatus (ajtowns)
  • #20207 Follow-up extra comments on taproot code and tests (sipa)
  • #21330 Deal with missing data in signature hashes more consistently (sipa)

政策

  • #18766 Disable fee estimation in blocksonly mode (by removing the fee estimates global) (darosior)
  • #20497 Add MAX_STANDARD_SCRIPTSIG_SIZE to policy (sanket1729)
  • #20611 Move TX_MAX_STANDARD_VERSION to policy (MarcoFalke)

挖礦

致謝

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

  • Aaron Clauson
  • Adam Jonas
  • amadeuszpawlik
  • Amiti Uttarwar
  • Andrew Chow
  • Andrew Poelstra
  • Anthony Towns
  • Antoine Poinsot
  • Antoine Riard
  • apawlik
  • apitko
  • Ben Carman
  • Ben Woosley
  • benk10
  • Bezdrighin
  • Block Mechanic
  • Brian Liotti
  • Bruno Garcia
  • Carl Dong
  • Christian Decker
  • coinforensics
  • Cory Fields
  • Dan Benjamin
  • Daniel Kraft
  • Darius Parvin
  • Dhruv Mehta
  • Dmitry Goncharov
  • Dmitry Petukhov
  • dplusplus1024
  • dscotese
  • Duncan Dean
  • Elle Mouton
  • Elliott Jin
  • Emil Engler
  • Ethan Heilman
  • eugene
  • Evan Klitzke
  • Fabian Jahr
  • Fabrice Fontaine
  • fanquake
  • fdov
  • flack
  • Fotis Koutoupas
  • Fu Yong Quah
  • fyquah
  • glozow
  • Gregory Sanders
  • Guido Vranken
  • Gunar C. Gessner
  • h
  • HAOYUatHZ
  • Hennadii Stepanov
  • Igor Cota
  • Ikko Ashimine
  • Ivan Metlushko
  • jackielove4u
  • James O’Beirne
  • Jarol Rodriguez
  • Joel Klabo
  • John Newbery
  • Jon Atack
  • Jonas Schnelli
  • João Barbosa
  • Josiah Baker
  • Karl-Johan Alm
  • Kiminuo
  • Klement Tan
  • Kristaps Kaupe
  • Larry Ruane
  • lisa neigut
  • Lucas Ontivero
  • Luke Dashjr
  • Maayan Keshet
  • MarcoFalke
  • Martin Ankerl
  • Martin Zumsande
  • Michael Dietz
  • Michael Polzer
  • Michael Tidwell
  • Niklas Gögge
  • nthumann
  • Oliver Gugger
  • parazyd
  • Patrick Strateman
  • Pavol Rusnak
  • Peter Bushnell
  • Pierre K
  • Pieter Wuille
  • PiRK
  • pox
  • practicalswift
  • Prayank
  • R E Broadley
  • Rafael Sadowski
  • randymcmillan
  • Raul Siles
  • Riccardo Spagni
  • Russell O’Connor
  • Russell Yanofsky
  • S3RK
  • saibato
  • Samuel Dobson
  • sanket1729
  • Sawyer Billings
  • Sebastian Falbesoner
  • setpill
  • sgulls
  • sinetek
  • Sjors Provoost
  • Sriram
  • Stephan Oeste
  • Suhas Daftuar
  • Sylvain Goumy
  • t-bast
  • Troy Giorshev
  • Tushar Singla
  • Tyler Chambers
  • Uplab
  • Vasil Dimov
  • W. J. van der Laan
  • willcl-ark
  • William Bright
  • William Casarin
  • windsok
  • wodry
  • Yerzhan Mazhkenov
  • Yuval Kogman
  • Zero

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