Bitcoin Core 28.0
Bitcoin Core installation binaries can be downloaded from bitcoincore.org and the source-code is available from the Bitcoin Core source repository.
28.0 版本說明
Bitcoin Core 28.0 版本現已發布,可從以下位置下載:
https://bitcoincore.org/bin/bitcoin-core-28.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 錢包。
在 macOS 上執行 Bitcoin Core 二進位檔案需要自簽。
cd /path/to/bitcoin-28.0/bin
xattr -d com.apple.quarantine bitcoin-cli bitcoin-qt bitcoin-tx bitcoin-util bitcoin-wallet bitcoind test_bitcoin
codesign -s - bitcoin-cli bitcoin-qt bitcoin-tx bitcoin-util bitcoin-wallet bitcoind test_bitcoin
相容性
Bitcoin Core 在使用 Linux Kernel 3.17+、macOS 11.0+ 和 Windows 7 及更新版本的作業系統上受到支援和廣泛測試。Bitcoin Core 也應該可以在大多數其他類 UNIX 系統上運作,但在這些系統上的測試頻率較低。不建議在不受支援的系統上使用 Bitcoin Core。
重要變更
Testnet4/BIP94 支援
已新增對 BIP94 中指定的 Testnet4 的支援。可以使用 -testnet4 選項選擇該網路,區段標頭也命名為 [testnet4]。
雖然計劃在即將發布的版本中逐步停止對 Testnet3 的支援,但在此版本中仍可透過已知選項使用 Testnet3。(#29775)
Windows 資料目錄
Windows 上的預設資料目錄已從 C:\Users\Username\AppData\Roaming\Bitcoin 移至 C:\Users\Username\AppData\Local\Bitcoin。Bitcoin Core 將首先檢查舊目錄的存在,如果存在則繼續使用該目錄以實現向後相容性。(#27064)
JSON-RPC 2.0 支援
JSON-RPC 伺服器現在識別 JSON-RPC 2.0 請求並嚴格遵守規範進行回應。詳細資訊請參閱 JSON-RPC-interface.md。(#27101)
JSON-RPC 客戶端可能需要更新以與 JSON-RPC 伺服器相容。如果發現任何相容性問題,請在 GitHub 上開啟問題。
libbitcoinconsensus 移除
libbitcoin-consensus 程式庫在 27.0 中已被棄用,現已完全移除。(#29648)
P2P 和網路變更
-
先前,如果 Bitcoin Core 正在監聽 P2P 連線(使用預設設定或透過
bind=addr:port),它也總是會綁定到127.0.0.1:8334以監聽 Tor 連線。即使節點不使用 Tor,也無法關閉此功能。現已變更,現在bind=addr:port僅導致綁定到addr:port。綁定到0.0.0.0:8333和127.0.0.1:8334的預設行為沒有變更。如果您使用
bind=...設定而沒有bind=...=onion,並且依賴先前的隱含行為在127.0.0.1:8334接受傳入的 Tor 連線,您現在需要使用bind=... bind=127.0.0.1:8334=onion明確指定。(#22729) -
如果任何 P2P 綁定失敗,Bitcoin Core 現在將無法啟動,而不是先前只有在所有 P2P 綁定都失敗時才中止啟動的行為。(#22729)
-
UNIX domain sockets 現在可用於代理連線。將
-onion或-proxy設定為帶有前綴unix:的本地 socket 路徑(例如-onion=unix:/home/me/torsocket)。(#27375) -
-zmqpubrawblock和-zmqpubrawtx現在接受 UNIX socket 路徑,格式為-zmqpubrawtx=unix:/path/to/file(#27679) -
-whitelist新增了「in」和「out」旗標,用於控制權限是否適用於入站連線和/或手動連線(預設:僅入站)。(#27114) -
費率過低的交易將機會性地與其子交易配對並作為套件提交,從而使節點能夠使用現有的交易中繼協定下載 1-parent-1-child 套件。結合其他 mempool 政策,當父交易低於 mempool 最小費率時,此變更允許有限的「package relay」。Topologically Restricted Until Confirmation (TRUC) 父交易還允許低於最小中繼費率(即支付 0 費用)。使用
submitpackageRPC 直接向節點提交套件。警告:此 P2P 功能是有限的(與submitpackage介面不同,不支援具有多個未確認父交易的子交易),並且在對抗性條件下尚不可靠。(#28970)
Mempool Policy 變更
-
版本號設定為 3 的交易現在在所有網路上都被視為標準 (#29496),並受制於 BIP 431 中描述的選擇性 Topologically Restricted Until Confirmation (TRUC) 交易政策。該政策包括對花費未確認輸出的限制 (#28948)、如果提交更具激勵相容性的後代則驅逐先前的後代 (#29306),以及最大交易大小為 10,000vB (#29873)。這些限制簡化了接受或替換 TRUC 交易的激勵相容性評估,從而確保任何替換對節點更有利,並使費用提升更可靠。
-
Pay To Anchor (P2A) 是一種新的標準 witness 輸出類型,用於花費,是一種新識別的輸出範本。這允許無密鑰的 anchor 輸出,具有緊湊的花費條件,在等效的
sh(OP_TRUE)輸出之上具有額外的效率,以及花費交易的 txid 穩定性。 注意:在網路上足夠數量的節點採用此升級之前,此輸出在網路上的傳播將受到限制。(#30352) -
現在啟用了有限的 package RBF,其中提議的衝突套件將在 mempool 中產生大小為 2 的連接元件(又名 cluster)。所有被衝突的 cluster 必須為大小 2 或更小。(#28984)
-
-mempoolfullrbf設定選項的預設值已從 0 更改為 1,即mempoolfullrbf=1。(#30493)
更新的 RPC
-
dumptxoutsetRPC 現在以新的改進格式返回 UTXO 集轉儲。相應地,loadtxoutsetRPC 現在期望其嘗試載入的轉儲採用此新格式。不再支援舊格式的轉儲,需要使用新格式重新建立才能使用。(#29612) -
已為高度 840,000 新增 AssumeUTXO mainnet 參數。這意味著
loadtxoutsetRPC 現在可以在 mainnet 上使用該高度的匹配 UTXO 集。(#28553) -
getblockchaininfo、getmininginfo和getnetworkinfo中的warnings欄位現在將所有活動節點警告作為字串陣列返回,而不是單一警告。可以透過使用設定選項-deprecatedrpc=warnings執行 Bitcoin Core 來暫時恢復當前行為。(#29845) -
先前使用
sendrawtransactionRPC 並指定 UTXO 集中已存在的輸出時,會返回 RPC 錯誤代碼-27,訊息為「Transaction already in block chain」。錯誤訊息已更改為「Transaction outputs already in utxo set」,以更準確地描述問題來源。(#30212) -
estimatesmartfeeRPC 的預設模式已從conservative更新為economical,預計將減少許多使用者的過度估計,特別是如果 Replace-by-Fee 是一個選項。對於需要對費用估計有高信心但代價是可能過度估計的使用者,conservative模式仍然可用。(#30275) -
RPC
scantxoutset現在在「unspents」JSON 陣列中返回 2 個新欄位:blockhash和confirmations。詳細資訊請參閱 scantxoutset 說明。(#30515) -
RPC
submitpackage現在允許傳遞 2 個新參數:maxfeerate和maxburnamount。詳細資訊請參閱 subtmitpackage 說明。(#28950)
與錢包相關的 RPC 變更可以在下面的錢包部分找到。
更新的 REST API
- 透過在截斷或過大的 txid 以及格式錯誤的 outpoint 索引時引發 HTTP_BAD_REQUEST「Parse error」,改進了
/rest/getutxos的參數驗證。這些請求先前是靜默處理的。(#30482, #30444)
建置系統
-
現在需要 GCC 11.1 或更高版本,或 Clang 16.0 或更高版本,才能編譯 Bitcoin Core。(#29091, #30263)
-
執行 Bitcoin Core 所需的最低 glibc 現在為 2.31。這意味著不再支援 RHEL 8 和 Ubuntu 18.04 (Bionic)。(#29987)
-
由於 lcov 版本 1 和 2 之間的不相容性,已移除
--enable-lcov-branch-coverage。應改用LCOV_OPTS設定任何選項。(#30192)
更新的設定
- 使用
-alertnotify執行時,現在可以多次引發警報,而不僅僅是一次。先前,僅在啟用未知的新共識規則時才會引發警報。其範圍現已擴大到包括所有核心警告。具體而言,當檢測到具有大量工作量的無效鏈時,現在也會引發警報。未來可能會新增其他警告。(#30058)
與 GUI 或錢包相關的設定變更可以在下面的 GUI 或錢包部分找到。
錢包
-
錢包現在檢測錢包交易何時與 mempool 衝突。與 mempool 衝突的交易可以在
gettransaction的"mempoolconflicts"欄位中看到。當父交易從 mempool 中刪除時,與 mempool 衝突的交易的輸入現在可以重新花費,而無需手動放棄交易,這可能導致錢包餘額顯示更高。(#27307) -
RPC
fundrawtransaction、walletcreatefundedpsbt和send新增了新的max_tx_weight選項。它指定最大交易權重。如果在資助期間超過限制,則不會建立交易。預設值為 4,000,000 WU。(#29523) -
新的
createwalletdescriptorRPC 允許使用者將新的自動產生的描述符新增到其錢包。這可用於升級在引入新標準描述符(例如 taproot)之前建立的錢包。(#29130) -
新的 RPC
gethdkeys列出錢包中所有描述符使用的所有 BIP32 HD 密鑰。這些密鑰可與createwalletdescriptor結合使用,為錢包已知的特定密鑰建立並新增單一密鑰描述符到錢包。(#29130) -
sendallRPC 現在可以花費未確認的找零,並將視需要包含額外費用,以使產生的交易將未確認交易的費率提升到指定的費率。(#28979) -
在 RPC
bumpfee中,如果指定了fee_rate,則費率不再限制為遵循錢包的增量費率 5 sat/vb。費率仍必須至少是原始費用和 mempool 增量費率的總和。(#27969)
GUI 變更
-
「Migrate Wallet」選單允許使用者遷移其錢包目錄中的任何舊版錢包,無論載入的錢包為何。(gui#824)
-
「Information」視窗現在顯示最大 mempool 大小以及 mempool 使用量。(gui#825)
低階變更
測試
-
BIP94 timewarp 攻擊緩解現在在
regtest網路上活躍。(#30681) -
test_bitcoin新增了新的-testdatadir選項,允許指定單元測試資料目錄的位置。(#26564)
區塊儲存
- 區塊檔案現在預設使用儲存在 blocksdir 中的密鑰進行 XOR 處理。先前版本的 Bitcoin Core 或先前的外部軟體將無法讀取具有非零 XOR 密鑰的 blocksdir。有關更多詳細資訊,請參閱
-blocksxor說明。(#28052)
鏈狀態
- 修剪區塊時發生的鏈狀態資料庫刷新將不再清空資料庫快取。快取將保持更長時間填充,這顯著縮短了初始區塊下載完成的時間。(#28280)
相依性
- 對 Boost.Process 的相依性已被 cpp-subprocess 取代,後者包含在原始碼中。建置者將不再需要 Boost.Process 來建置外部簽署者支援。(#28981)
致謝
感謝所有直接為此版本做出貢獻的人:
- 0xb10c
- Alfonso Roman Zubeldia
- Andrew Toth
- AngusP
- Anthony Towns
- Antoine Poinsot
- Anton A
- Ava Chow
- Ayush Singh
- Ben Westgate
- Brandon Odiwuor
- brunoerg
- bstin
- Charlie
- Christopher Bergqvist
- Cory Fields
- crazeteam
- Daniela Brozzoni
- David Gumberg
- dergoegge
- Edil Medeiros
- Epic Curious
- Fabian Jahr
- fanquake
- furszy
- glozow
- Greg Sanders
- hanmz
- Hennadii Stepanov
- Hernan Marino
- Hodlinator
- ishaanam
- ismaelsadeeq
- Jadi
- Jon Atack
- josibake
- jrakibi
- kevkevin
- kevkevinpal
- Konstantin Akimov
- laanwj
- Larry Ruane
- Lőrinc
- Luis Schwab
- Luke Dashjr
- MarcoFalke
- marcofleon
- Marnix
- Martin Saposnic
- Martin Zumsande
- Matt Corallo
- Matthew Zipkin
- Matt Whitlock
- Max Edwards
- Michael Dietz
- Murch
- nanlour
- pablomartin4btc
- Peter Todd
- Pieter Wuille
- @RandyMcMillan
- RoboSchmied
- Roman Zeyde
- Ryan Ofsky
- Sebastian Falbesoner
- Sergi Delgado Segura
- Sjors Provoost
- spicyzboss
- StevenMia
- stickies-v
- stratospher
- Suhas Daftuar
- sunerok
- tdb3
- TheCharlatan
- umiumi
- Vasil Dimov
- virtu
- willcl-ark
以及所有在 Transifex 上協助翻譯的人。
