Bitcoin Core 30.0
Bitcoin Core installation binaries can be downloaded from bitcoincore.org and the source-code is available from the Bitcoin Core source repository.
30.0 版本發行說明
Bitcoin Core v30.0 版本現已可從以下位址取得:
https://bitcoincore.org/bin/bitcoin-core-30.0/
此版本包含新功能、各種錯誤修復和性能改進,以及更新的翻譯。
請使用 GitHub 的問題追蹤器回報錯誤:
https://github.com/bitcoin/bitcoin/issues
要接收安全和更新通知,請訂閱:
https://bitcoincore.org/zh_TW/list/announcements/join/
隨著此新主要版本的發布,27.x 及更舊版本已達「生命週期終止」,將不再接收更新。
根據安全政策,我們將在兩週內披露:
-
28.0中修復的中度和高嚴重性漏洞。沒有此類漏洞。 -
30.0中修復的低嚴重性漏洞。有 5 個此類漏洞。
如何升級
如果您正在執行較舊版本,請將其關閉。等待它完全關閉(在某些情況下可能需要幾分鐘),然後執行安裝程式(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。
重要變更
政策
-
單一標準交易中可能執行的舊版簽名操作數量上限現在限制為 2500。所有先前輸出腳本、所有輸入腳本以及所有 P2SH redeem 腳本(如果有)中的簽名操作都計入此限制。新限制預計不會影響任何已知的典型標準交易。此變更是為了準備未來可能的 BIP54 部署。(#32521)
-
-datacarriersize預設增加到 100,000,這實際上取消了限制(因為會先達到最大交易大小限制)。可以使用-datacarriersize=83覆蓋以恢復到先前版本中強制執行的限制。(#32406) -
現在允許交易中包含多個資料載體(OP_RETURN)輸出進行中繼和挖礦。
-datacarriersize限制適用於交易中所有此類輸出的 scriptPubKey 的總大小,不包括 scriptPubKey 大小本身。(#32406) -
最小區塊手續費率(
-blockmintxfee)已變更為每 vB 0.001 聰。仍可使用配置選項變更。礦工可使用此選項設定新增到區塊模板的套件的最小手續費率。(#33106) -
預設最小中繼手續費率(
-minrelaytxfee)和增量中繼手續費率(-incrementalrelayfee)已變更為每 vB 0.1 聰。仍可使用各自的配置選項變更,但如果您決定這樣做,建議一起變更兩者。(#33106)其他最小手續費率(例如塵埃手續費率、手續費估算器返回的最小值,以及錢包使用的所有手續費率)保持不變。記憶池最小手續費率仍會根據高流量變化。
請注意,除非這些較低的預設值在整個網路中被廣泛採用,否則不保證以較低手續費率建立的交易會傳播或確認。錢包手續費率保持不變;在嘗試使用錢包建立較低手續費率的交易之前,必須變更
-mintxfee。(#33106)
P2P 和網路變更
-
機會性的 1-parent-1-child 套件中繼已改進,可處理子交易在記憶池中已有未確認父交易的情況。這意味著 1p1c 套件即使連接到更廣泛的拓撲結構也可以被接受和傳播:多父-1-子(其中只有 1 個父交易需要手續費提升)、祖父-父-子(其中只有父交易需要手續費提升)等。(#31385)
-
交易孤兒池暫時保存缺少輸入的交易,同時節點嘗試獲取其父交易,現在具有改進的阻斷服務保護。以前,它強制執行唯一交易的最大數量(預設 100,可使用
-maxorphantx配置)。現在,其限制如下:條目數量(按 wtxid 和對等點唯一),加上每個唯一交易的輸入計數除以 10,不得超過 3,000。唯一交易的總重量不得超過404,000Wu 乘以對等點數量。(#31829) -
-maxorphantx選項不再有任何效果,因為孤兒池不再限制唯一交易的數量。如果使用者正在使用此配置選項,應將其移除,因為在未來版本中不再識別該設定時,它將導致錯誤。(#31829)
新的 bitcoin 命令
- 新增了一個
bitcoin命令列工具,使功能更易於發現和使用。bitcoin工具只是呼叫其他可執行檔,本身不實作任何功能。具體而言,bitcoin node是bitcoind的同義詞,bitcoin gui是bitcoin-qt的同義詞,bitcoin rpc是bitcoin-cli -named的同義詞。其他命令和選項可使用bitcoin help列出。新的bitcoin命令是直接呼叫其他命令的替代方案,但它不會取代它們,也沒有計劃棄用現有命令。(#31375)
外部簽名
- Windows 上的外部簽名支援已重新啟用。(#29868)
IPC 挖礦介面
-
新的
bitcoin命令確實支援一個新功能:(實驗性)IPC 挖礦介面,允許節點與 Stratum v2 或其他挖礦客戶端軟體協同工作,請參閱 (#31098)。當節點使用bitcoin -m node -ipcbind=unix啟動時,它將在 unix socket 上監聽 IPC 客戶端連接,允許客戶端請求區塊模板和提交已挖掘的區塊。-m選項啟動一個新的內部二進位檔案(bitcoin-node而不是bitcoind),目前是必需的,但將來會變為可選(透過 #33229)。 -
IPC 連接引入了新的依賴項(請參閱 multiprocess.md),如果您不打算使用 IPC,可以使用
-DENABLE_IPC=OFF建置選項關閉。(#31802)
安裝變更
-
test_bitcoin可執行檔現在安裝在libexec/而不是bin/中。它仍然可以直接執行,或透過新的bitcoin命令作為bitcoin test存取。libexec/目錄還包含新的bitcoin-node和bitcoin-gui二進位檔案,它們支援 IPC 功能並透過bitcoin工具呼叫。僅在原始碼建置中,test_bitcoin-qt、bench_bitcoin和bitcoin-chainstate現在也安裝到libexec/而不是bin/,可透過新的bitcoin命令存取。詳情請參閱bitcoin help輸出。(#31679) -
在 Windows 上,安裝程式不再在開始選單條目中新增「(64-bit)」後綴 (#32132),現在會在升級期間自動移除過時的檔案 (#33422)。
索引
-
coinstatsindex 的實作已變更以防止在預設 Signet 上已經可以觀察到的溢位錯誤。升級節點首次啟動時,需要從頭開始同步新版本的索引。
新版本儲存在
/indexes/coinstatsindex/中,而舊版本儲存在/indexes/coinstats/中。升級的節點不會刪除舊版本的索引,以防使用者將來選擇降級其節點。如果使用者不打算降級,可以安全地從其資料目錄中移除/indexes/coinstats/。Bitcoin Core 的未來版本可能會自動移除舊版本的索引。(#30469)
日誌記錄
-
無條件記錄到磁碟現在透過給每個源位置每小時 1MiB 的配額進行速率限制。無條件記錄是指日誌級別高於 debug 的任何記錄,即
info、warning和error。如果至少有一個源位置目前正在被抑制,所有日誌將以[*]為前綴。(#32604) -
當啟用
-logsourcelocations時,日誌輸出現在包含整個函數簽名,而不僅僅是函數名稱。(#32604)
更新的 RPC
-
-paytxfee啟動選項和settxfeeRPC 現已棄用,將在 Bitcoin Core 31.0 中移除。它們允許使用者為錢包交易設定靜態手續費率,這可能導致過度支付或支付不足。使用者應該依賴手續費估算,或使用fundrawtransaction、sendtoaddress、send、sendall和sendmany等 RPC 中的fee_rate參數為每筆交易指定手續費率。(#31278) -
任何參數之一是描述符的 RPC 如果提供的描述符在片段內的公鑰開頭或結尾包含空格,將拋出錯誤 - 例如
pk( KEY)或pk(KEY )。(#31603) -
submitpackageRPC 允許提交子-父套件,不再要求所有未確認的父交易都存在。套件也可以包含其他記憶池中的祖先。(#31385) -
waitfornewblockRPC 現在接受可選的current_tip參數。它也不再是隱藏的。(#30635) -
waitforblock和waitforblockheightRPC 不再是隱藏的。(#30635) -
psbtbumpfee和bumpfeeRPC 允許在 fullrbf 下進行替換,不再需要 BIP-125 信號。(#31953) -
交易腳本驗證錯誤以前會返回錯誤原因,如果是共識錯誤則以
mandatory-script-verify-flag-failed為前綴,如果是標準性錯誤則以non-mandatory-script-verify-flag(不帶「-failed」)為前綴。現在分別對所有區塊和記憶池錯誤變更為block-script-verify-flag-failed和mempool-script-verify-flag-failed。(#33183) -
getmininginfoRPC 現在返回「blockmintxfee」結果,指定-blockmintxfee配置的值。(#33189) -
getmempoolinfoRPC 現在返回額外的「permitbaremultisig」和「maxdatacarriersize」欄位,反映-permitbaremultisig和-datacarriersize配置值。(#29954)
與錢包相關的 RPC 變更可在下面的錢包章節中找到。
新的 RPC
- 引入了一個新的 REST API 端點(
/rest/spenttxouts/BLOCKHASH),用於使用區塊的 undo 資料有效獲取已花費的交易輸出 (#32540)。
建置系統
更新的設定
-
-maxmempool和-dbcache啟動參數現在在 32 位元系統上分別限制為 500MB 和 1GiB。(#32530) -
-natpmp選項現在預設設定為1。這意味著啟用了-listen(預設)但在防火牆後面執行的節點(例如本地網路路由器)如果防火牆/路由器支援任何PCP或NAT-PMP協議,將是可達的。(#33004) -
-upnp設定現已完全移除。請改用-natpmp。(#32500) -
以前,
-proxy為所有網路指定代理(除了使用-i2psam的 I2P),並且只能透過-onion單獨指定 Tor 代理。現在,-proxy的語法已擴展,可以透過附加=後跟網路名稱來分別為 IPv4、IPv6、Tor 和 CJDNS 指定代理,例如-proxy=127.0.0.1:5555=ipv6僅為 IPv6 配置代理。-proxy選項可以多次使用來為不同的網路定義不同的代理,例如-proxy=127.0.0.1:4444=ipv4 -proxy=10.0.0.1:6666=ipv6。對於同一網路,後面的設定會覆蓋前面的設定;這可用於移除早期的所有網路代理並僅對給定網路使用直接連接,例如-proxy=127.0.0.1:5555 -proxy=0=cjdns。(#32425) -
-blockmaxweight啟動選項已更新為僅調試。它仍然可供使用者使用,但現在在預設-help文字中隱藏,僅在-help-debug中顯示 (#32654)。
與 GUI 或錢包相關的設定變更可在下面的 GUI 或錢包章節中找到。
錢包
-
BDB 舊版錢包不能再建立或載入。它們可以遷移到新的描述符錢包格式。有關更多詳細資訊,請參閱
migratewalletRPC。 -
移除舊版錢包後,bitcoin-wallet 工具中的冗餘選項(例如
-withinternalbdb、-legacy和-descriptors)被丟棄。此外,僅限舊版的 RPCaddmultisigaddress、dumpprivkey、dumpwallet、importaddress、importmulti、importprivkey、importpubkey、importwallet、newkeypool、sethdseed和upgradewallet被移除。(#32944, #28710, #32438, #31250) -
新增了對錢包接收的 TRUC 交易的花費支援,以及建立 TRUC 交易的支援。錢包確保滿足 TRUC 政策規則。如果使用者嘗試將 TRUC utxo 與其他版本的 utxo 一起花費,錢包將拋出錯誤。此外,錢包將未確認的 TRUC 兄弟交易視為記憶池衝突。錢包還將確保花費 TRUC utxo 的交易滿足所需的大小限制。(#32896)
-
由於描述符錢包不允許混合僅監視和非僅監視描述符,
include_watchonly選項(及其命名變體)從所有擁有它的 RPC 中移除。(#32618) -
iswatchonly欄位從任何返回它的 RPC 中移除。(#32618) -
unloadwallet- 當 RPC 錢包端點和 wallet_name 參數都未指定時返回 RPC_INVALID_PARAMETER。以前 RPC 會因 JSON 解析錯誤而失敗。(#32845) -
getdescriptoractivity- 將 blockhashes 和 scanobjects 參數標記為必需,以便使用者在缺少任何一個時收到清晰的幫助訊息。與unloadwallet一樣,以前 RPC 會因 JSON 解析錯誤而失敗。(#32845) -
getwalletinfo- 移除欄位balance、immature_balance和unconfirmed_balance。(#32721) -
getunconfirmedbalance- 移除此 RPC 命令。您可以查詢getbalancesRPC 並檢查 JSON 回應中的"mine""untrusted_pending"條目。(#32721) -
以下 RPC 現在包含一個
version參數,允許使用者建立任何標準版本號(1-3)的交易:createrawtransactioncreatepsbtsendsendallwalletcreatefundedpsbt(#32896)
GUI 變更
-
GUI 已從 Qt 5 遷移到 Qt 6。在 Windows 上,現在支援深色模式。在 macOS 上,現在使用 Metal 後端。(#30997)
-
允許在 fullrbf 下進行交易手續費提升,不再需要 BIP-125 信號。(#31953)
-
作為移除舊版錢包的副作用,交易頁籤中的自訂列寬被重置。(#32459)
低階變更
- 日誌現在包含哪個對等點向我們發送了標頭。此外,冗餘的標頭日誌訊息更少。此變更的副作用是,對於某些非典型情況,新標頭不再記錄,例如帶有先前未知標頭的直接
BLOCK訊息和submitheaderRPC。(#27826)
致謝
感謝直接為此版本做出貢獻的每個人:
- 0xb10c
- amisha
- Andrew Toth
- Anthony Towns
- Antoine Poinsot
- Ava Chow
- benthecarman
- Brandon Odiwuor
- brunoerg
- Bue-von-hon
- Bufo
- Chandra Pratap
- Chris Stewart
- Cory Fields
- Daniel Pfeifer
- Daniela Brozzoni
- David Gumberg
- deadmanoz
- dennsikl
- dergoegge
- enoch
- Ethan Heilman
- Eugene Siegel
- Eunovo
- Eval EXEC
- Fabian Jahr
- fanquake
- Florian Schmaus
- fuder.eth
- furszy
- glozow
- Greg Sanders
- Hao Xu
- Haoran Peng
- Haowen Liu
- Hennadii Stepanov
- Hodlinator
- hoffman
- ishaanam
- ismaelsadeeq
- Jameson Lopp
- janb84
- Jiri Jakes
- John Bampton
- Jon Atack
- josibake
- jurraca
- kevkevin
- kevkevinpal
- kilavvy
- Kristaps Kaupe
- l0rinc
- laanwj
- leopardracer
- Lőrinc
- Luis Schwab
- Luke Dashjr
- MarcoFalke
- marcofleon
- Martin Zumsande
- Matt Corallo
- Matthew Zipkin
- Max Edwards
- monlovesmango
- Murch
- naiyoma
- nervana21
- Nicola Leonardo Susca
- Novo
- pablomartin4btc
- Peter Todd
- Pieter Wuille
- Pol Espinasa
- Prabhat Verma
- rkrux
- Roman Zeyde
- Ryan Ofsky
- Saikiran
- Salvatore Ingala
- Sebastian Falbesoner
- Sergi Delgado Segura
- Shunsuke Shimizu
- Sjors Provoost
- stickies-v
- stratospher
- stringintech
- strmfos
- stutxo
- tdb3
- TheCharlatan
- Tomás Andróil
- UdjinM6
- Vasil Dimov
- VolodymyrBg
- w0xlt
- will
- willcl-ark
- William Casarin
- woltx
- yancy
- zaidmstrr
以及所有在 Transifex 上幫助翻譯的人。
