Bitcoin Core 29.0
Bitcoin Core installation binaries can be downloaded from bitcoincore.org and the source-code is available from the Bitcoin Core source repository.
29.0 版本說明
Bitcoin Core 29.0 版本現已發布,可從以下位置下載:
https://bitcoincore.org/bin/bitcoin-core-29.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 3.17+、macOS 13+ 和 Windows 10+ 的作業系統上受到支援和測試。Bitcoin Core 也應該可以在大多數其他類 Unix 系統上運作,但在這些系統上的測試頻率較低。不建議在不受支援的系統上使用 Bitcoin Core。
重要變更
P2P 和網路變更
-
已停止對 UPnP 的支援。如果您想自動開啟連接埠,請考慮改用
-natpmp選項,該選項根據路由器支援使用 PCP 或 NAT-PMP。(#31130) -
libnatpmp 已被內建的 PCP 和 NAT-PMP 實作取代(仍使用
-natpmp選項啟用)。這支援自動 IPv4 連接埠轉送以及 IPv6 pinholing。(#30043) -
當使用
-port設定選項時,預設的 onion 監聽連接埠現在將衍生為該連接埠 + 1,而不是設定為固定值(在 mainnet 上為 8334)。這重新允許使用不同-port且未使用-bind的多個本地節點設定,在 v28.0 中這會因連接埠衝突而導致啟動失敗。 請注意,如果與-port選項一起使用,在torrc中手動設定的HiddenServicePort可能需要調整。 例如,如果您使用非標準值-port=5555且未使用-bind=...=onion,先前 Bitcoin Core 會在127.0.0.1:8334上監聽傳入的 Tor 連線。現在它會在127.0.0.1:5556(-port加一)上監聽。如果您現在在 torrc 中手動設定了隱藏服務,則必須將其從HiddenServicePort 8333 127.0.0.1:8334更改為HiddenServicePort 8333 127.0.0.1:5556,或使用-bind=127.0.0.1:8334=onion設定 bitcoind 以獲得先前的行為。 (#31223) -
在收到 orphan transaction(花費未知輸入的未確認交易)時,節點將嘗試從所有宣告該 orphan 的對等節點下載缺失的父交易。此變更可能會增加頻寬使用量,但使 orphan 處理更可靠。(#31397)
Mempool Policy 和挖礦變更
-
Ephemeral dust 是一個新概念,允許交易中有單一 dust 輸出,前提是該交易為零費用。為了花費此交易中的任何未確認輸出,花費者除了任何其他所需輸出外,還必須花費此 dust。換句話說,此類型的交易應該在交易套件中建立,其中 dust 同時被建立和花費。(#30239)
-
由於一個錯誤,固定大小區塊標頭、交易計數和 coinbase 交易的預設區塊保留權重(
4,000 WU)被保留了兩次且無法降低。因此,總保留權重始終為8,000 WU,這意味著即使指定高於預設值的-blockmaxweight(甚至達到最大4,000,000 WU),實際區塊大小也永遠不會超過3,992,000 WU。 此修正將保留整合到單一位置,並引入新的啟動選項-blockreservedweight,直接指定保留權重。-blockreservedweight的預設值設定為8,000 WU,以確保依賴先前-blockmaxweight行為的使用者的向後相容性。-blockreservedweight的最小值設定為2,000 WU。將-blockreservedweight設定為低於預設值的使用者應確保其區塊標頭、交易計數和 coinbase 交易的總權重不超過減少的值,否則可能會冒險挖掘無效區塊。(#31384)
更新的 RPC
-
RPC
testmempoolaccept回應現在在某些情況下包含reject-details欄位,類似於sendrawtransaction返回的完整錯誤訊息 (#28121) -
使用
submitblock提交的重複區塊現在將保留其區塊資料,即使它先前已被修剪。如果啟用修剪,一旦選擇保留資料的區塊檔案進行修剪,該資料最終將再次被修剪。這與getblockfrompeer的行為一致,即使在修剪時也會保留區塊。(#31175) -
getmininginfo現在返回nBits和target欄位中的當前目標。它還返回一個next物件,指定下一個區塊的height、nBits、difficulty和target。(#31583) -
getblock和getblockheader現在在target欄位中返回當前目標 (#31583) -
getblockchaininfo和getchainstates現在在target欄位中返回nBits和當前目標 (#31583) -
getblocktemplateRPC 的curtime(BIP22)和mintime(BIP23)欄位現在在所有網路上考慮 BIP94 中提議的 timewarp 修正。這確保在主網上啟用 timewarp 修正軟分叉時,未升級的礦工不會意外違反 timewarp 規則。(#31376, #31600) 提醒一下,使用getblocktemplateRPC 的任何軟體都必須考慮這些值(curtime或mintime都可以)。在某些情況下,僅依賴時鐘可能會導致無效區塊,特別是在部署 timewarp 修正後。(#31600)
新的 RPC
getdescriptoractivity可用於在一組指定的區塊中尋找與給定描述符集合相關的所有花費/接收活動。此呼叫可與scanblocks一起使用,以減少對額外索引程式的需求。(#30708)
更新的 REST API
GET /rest/block/<BLOCK-HASH>.json和GET /rest/headers/<BLOCK-HASH>.json現在在target欄位中返回當前目標
更新的設定
-
由於最近 UTXO 集的增長,
-dbcache設定選項的最大允許值已降低。請注意,在此變更之前,大的-dbcache值會自動減少到 16 GiB(在 32 位元系統上為 1 GiB)。(#28358) -
對否定的
-noseednode、-nobind、-nowhitebind、-norpcbind、-norpcallowip、-norpcwhitelist、-notest、-noasmap、-norpcwallet、-noonlynet和-noexternalip選項的處理已變更。先前否定這些選項會有各種令人困惑且未記錄的副作用。現在否定它們只是重置設定並恢復預設行為,就像未指定選項一樣。 -
從 v28.0 開始,
-mempoolfullrbf啟動選項預設設定為1。隨著此政策的廣泛採用,使用者不再從停用它中受益,因此已移除該選項,使 full replace-by-fee 成為標準行為。(#30592) -
設定
-upnp現在會記錄警告並被解釋為-natpmp。請考慮直接使用-natpmp。(#31130, #31916) -
作為安全檢查,當
-blockreservedweight初始化參數值低於2000權重單位時,Bitcoin Core 將無法啟動。如果-blockmaxweight或-blockreservedweight初始化參數超過共識限制4,000,000 WU,Bitcoin Core 也將無法啟動。 -
傳遞
-debug=0或-debug=none現在的行為類似於-nodebug:先前設定的除錯類別將被清除,但後續的-debug選項仍將被套用。 -
-rpcthreads的預設值已從 4 更改為 16,-rpcworkqueue的預設值已從 16 更改為 64。(#31215)
建置系統
建置系統已從 Autotools 遷移到 CMake:
-
所需的最低 CMake 版本為 3.22。
-
不允許原始碼內建置。當使用根原始碼樹中的子目錄作為建置目錄時,建議其名稱包含子字串「build」。
-
CMake 變數可用於設定建置系統。某些預設值已變更。 例如,您現在需要新增
-DWITH_ZMQ=ON來建置 zmq,並新增-DBUILD_GUI=ON來建置bitcoin-qt。詳細資訊請參閱 Autotools to CMake Options Mapping。 -
對於單一設定產生器,預設建置設定(
CMAKE_BUILD_TYPE)為「RelWithDebInfo」。但是,對於「Release」設定,CMake 預設使用編譯器最佳化旗標-O3,該旗標尚未在 Bitcoin Core 上進行廣泛測試。因此,建置系統將其替換為-O2。 -
預設情況下,建置的可執行檔和程式庫位於建置目錄的
bin/和lib/子目錄中。 -
建置系統支援基於元件的安裝。可安裝元件的名稱與建置目標名稱一致。例如:
cmake -B build
cmake --build build --target bitcoind
cmake --install build --component bitcoind
- 如果您在基於 Autotools 的建置過程中使用了任何
CPPFLAGS、CFLAGS、CXXFLAGS或LDFLAGS環境變數,您應該改用相應的 CMake 變數(APPEND_CPPFLAGS、APPEND_CFLAGS、APPEND_CXXFLAGS和APPEND_LDFLAGS)。或者,如果您選擇使用專用的CMAKE_<...>_FLAGS變數,則必須確保產生的編譯器或連結器呼叫符合預期。
有關設定和使用 CMake 的更詳細指導,請參閱官方 CMake documentation 和 CMake’s User Interaction Guide。此外,請參閱特定於平台的 doc/build-*.md 建置指南,以獲取針對您作業系統的說明。
低階變更
工具和實用程式
- 新工具
utxo_to_sqlite.py將壓縮序列化的 UTXO 快照(如使用dumptxoutsetRPC 建立)轉換為 SQLite3 資料庫。有關更多詳細資訊,請參閱腳本的--help輸出。(#27432)
測試
- BIP94 timewarp 攻擊緩解(為 testnet4 設計)在 regtest 網路上不再活躍。(#31156)
相依性
致謝
感謝所有直接為此版本做出貢獻的人:
- 0xb10c
- Adlai Chandrasekhar
- Afanti
- Alfonso Roman Zubeldia
- am-sq
- Andre
- Andre Alves
- Anthony Towns
- Antoine Poinsot
- Ash Manning
- Ava Chow
- Boris Nagaev
- Brandon Odiwuor
- brunoerg
- Chris Stewart
- Cory Fields
- costcould
- Daniel Pfeifer
- Daniela Brozzoni
- David Gumberg
- dergoegge
- epysqyli
- espi3
- Eval EXEC
- Fabian Jahr
- fanquake
- furszy
- Gabriele Bocchi
- glozow
- Greg Sanders
- Gutflo
- Hennadii Stepanov
- Hodlinator
- i-am-yuvi
- ion-
- ismaelsadeeq
- Jadi
- James O’Beirne
- Jeremy Rand
- Jon Atack
- jurraca
- Kay
- kevkevinpal
- l0rinc
- laanwj
- Larry Ruane
- Lőrinc
- Maciej S. Szmigiero
- Mackain
- MarcoFalke
- marcofleon
- Marnix
- Martin Leitner-Ankerl
- Martin Saposnic
- Martin Zumsande
- Matthew Zipkin
- Max Edwards
- Michael Dietz
- naiyoma
- Nicola Leonardo Susca
- omahs
- pablomartin4btc
- Pieter Wuille
- Randall Naar
- RiceChuan
- rkrux
- Roman Zeyde
- Ryan Ofsky
- Sebastian Falbesoner
- secp512k2
- Sergi Delgado Segura
- Simon
- Sjors Provoost
- stickies-v
- Suhas Daftuar
- tdb3
- TheCharlatan
- tianzedavid
- Torkel Rogstad
- Vasil Dimov
- wgyt
- willcl-ark
- yancy
以及所有在 Transifex 上協助翻譯的人。
