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)
-
getpeerinfoRPC 返回兩個新的布林欄位bip152_hb_to和bip152_hb_from,分別指示我們是否選擇了對等節點為緊湊區塊高頻寬模式,或對等節點是否選擇我們作為緊湊區塊高頻寬對等節點。高頻寬對等節點透過cmpctblock訊息而不是通常的 inv/headers 公告來發送新區塊公告。詳情請參閱 BIP 152。(#19776) -
getpeerinfo不再返回以下欄位:addnode、banscore和whitelisted,這些欄位先前在 0.21 中已被棄用。connection_type欄位返回 manual 而不是addnode。permissions欄位指示對等節點是否具有特殊權限,而不是whitelisted。banscore欄位已被簡單移除。(#20755) -
以下 RPC:
gettxout、getrawtransaction、decoderawtransaction、decodescript、gettransaction和 REST 端點:/rest/tx、/rest/getutxos、/rest/block棄用了以下欄位(預設情況下不再在回應中返回):addresses、reqSigs。必須傳遞-deprecatedrpc=addresses標誌才能在 RPC 回應中包含這些欄位。此標誌/選項僅適用於此主要版本,之後將完全移除棄用。請注意,這些欄位是 RPC 回應中返回的scriptPubKey物件的屬性。但是,在decodescript的回應中,這些欄位是頂層屬性,並再次作為scriptPubKey物件的屬性包含。(#20286) -
使用設定了
-json選項的bitcoin-tx實用程式建立十六進位編碼的 bitcoin 交易時,回應的 tx 輸出中不再返回以下欄位:addresses、reqSigs。(#20286) -
listbannedRPC 現在返回兩個新的數字欄位:ban_duration和time_remaining。這些新欄位分別指示禁止的持續時間和禁止到期前的剩餘時間,均以秒為單位。此外,ban_created欄位已重新定位到banned_until之前。(#21602) -
setbanRPC 可以再次禁止 onion 地址。這修復了 0.21.0 版本中引入的回歸。(#20852) -
getnodeaddressesRPC 現在返回一個「network」欄位,指示每個地址的網路類型(ipv4、ipv6、onion 或 i2p)。(#21594) -
getnodeaddresses現在也接受「network」參數(ipv4、ipv6、onion 或 i2p)以僅返回指定網路的地址。(#21843) -
testmempoolacceptRPC 現在接受多個交易(目前仍處於實驗階段,API 可能不穩定)。這旨在測試具有依賴關係的交易套件;不建議批次驗證獨立交易。除了 mempool 政策外,還適用套件政策:清單不能包含超過 25 個交易或總大小超過 101K 虛擬位元組,並且不能相互衝突(花費相同的輸入)或與 mempool 衝突,即使這將是有效的 BIP125 手續費替換。測試接受的準確性存在一些已知限制:testmempoolaccept可能為一組交易返回「allowed」=True,但如果實際提交,則返回「too-long-mempool-chain」。(#20833) -
addmultisigaddress和createmultisig現在最多支援 20 個金鑰用於 Segwit 地址。(#20867)
與錢包或 GUI 相關的 RPC 變更可以在下面的 GUI 或錢包部分找到。
建置系統
- 現在使用新的基於
guix的建置系統產生發布二進位檔案。/doc/release-process.md 文件已相應更新。
檔案
- 被禁止主機和網路的清單(透過
setbanRPC)現在以 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 方法
enumeratesigners和displayaddress使用硬體錢包等外部簽名器。sendRPC 呼叫也新增了支援。此功能是實驗性的。詳情請參閱 external-signer.md。(#16546) -
新的
listdescriptorsRPC 可用於檢查啟用描述符的錢包的內容。RPC 返回所有匯入描述符的公共版本,包括它們的時間戳記和標誌。對於範圍描述符,它還返回範圍邊界和從中生成地址的下一個索引。(#20226) -
bumpfeeRPC 不適用於已停用私鑰的錢包。可以改用psbtbumpfee。(#20891) -
fundrawtransaction、send和walletcreatefundedpsbtRPC 現在支援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_SIZEto policy (sanket1729) - #20611 Move
TX_MAX_STANDARD_VERSIONto policy (MarcoFalke)
挖礦
- #19937, bitcoin/bitcoin#20923 Signet mining utility (ajtowns)
致謝
感謝所有直接為此版本做出貢獻的人:
- 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 上協助翻譯的人。
