Bitcoin Core 0.20.0

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

0.20.0 版本說明

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

https://bitcoincore.org/bin/bitcoin-core-0.20.0/

Download torrent

此版本包含新功能、各種錯誤修正和效能改善,以及更新的翻譯。

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

從 Bitcoin Core 0.20.0 開始,不再支援 macOS 10.12 之前的版本。此外,當 macOS「深色模式」啟動時,Bitcoin Core 尚未變更外觀。

已知錯誤

生成原始碼發布(「tarball」)的過程已變更,以使其更完整,但是,此版本存在一些回歸:

  • 生成的 configure 腳本目前遺失,您需要安裝 autotools 並執行 ./autogen.sh,然後才能執行 ./configure。這與從 git 檢出時相同。

  • 不要簡單地執行 make,您應該改為執行 BITCOIN_GENBUILD_NO_GIT=1 make

重要變更

P2P 和網路變更

從 Bitcoin Core 移除 BIP61 拒絕網路訊息

啟用 BIP61 的 -enablebip61 命令列選項已被移除。(#17004)

此功能自 Bitcoin Core 0.18.0 版本以來預設已停用。網路上的節點通常不能被信任發送有效訊息(包括拒絕訊息),因此這應該只在連線到受信任的節點時使用。如果您依賴此移除的功能,請使用下面建議的替代方案:

  • Bitcoin P2P 網路協定的測試或除錯應透過檢查最新版本的 Bitcoin Core 產生的日誌訊息來完成。Bitcoin Core 將除錯訊息(-debug=<category>)記錄到串流(-printtoconsole)或檔案(-debuglogfile=<debug.log>)。

  • 測試區塊的有效性可以透過特定的 RPC 實現:

    • submitblock

    • 具有 'mode' 設定為 'proposal'getblocktemplate,用於具有潛在無效 POW 的區塊

  • 測試交易的有效性可以透過特定的 RPC 實現:

    • sendrawtransaction

    • testmempoolaccept

  • 錢包不應假設交易已傳播到網路,僅因為沒有拒絕訊息。相反,應監聽網路上其他對等節點公告的交易。錢包不應假設缺少拒絕訊息意味著交易支付了適當的費用。相反,應使用費用估算設定費用,並使用 replace-by-fee 在交易未在所需時間內確認時增加交易費用。

移除 BIP61 拒絕訊息支援還有以下次要的 RPC 和日誌影響:

  • 當交易未被接受到 mempool 時,testmempoolacceptsendrawtransaction 不再返回 P2P 拒絕代碼。它們仍然返回口頭拒絕原因。

  • 以前在交易未被接受到 mempool 時報告拒絕代碼的日誌訊息現在不再報告拒絕代碼。仍然報告拒絕原因。

更新的 RPC

  • 接受描述符的 RPC 現在接受新的 sortedmulti(...) 描述符類型,該類型支援多重簽名腳本,其中公鑰在結果腳本中按字典順序排序。(#17056)

  • walletprocesspsbtwalletcreatefundedpsbt RPC 現在預設包含我們知道的公鑰的 BIP32 派生路徑。這可以透過將 bip32derivs 參數設定為 false 來停用。(#17264)

  • bumpfee RPC 的參數 totalFee(在 0.19 中已棄用)已被移除。(#18312)

  • bumpfee RPC 在與停用私鑰的錢包一起使用時將返回 PSBT。(#16373)

  • getpeerinfo RPC 現在包括一個 mapped_as 欄位,以指示用於多樣化對等節點選擇的映射自治系統。請參閱下面_新設定_中描述的 -asmap 設定選項。(#16702)

  • createmultisigaddmultisigaddress RPC 現在為新建立的地址返回輸出腳本描述符。(#18032)

建置系統

  • Bitcoin Core 不再使用 OpenSSL。(#17265)

  • BIP70 支援已從 Bitcoin Core 完全移除。--enable-bip70 選項仍然存在,但它將在設定期間拋出錯誤。(#17165)

  • glibc 2.17 或更高版本現在是執行發布二進位檔案所必需的。這保持了與 RHEL 7、CentOS 7、Debian 8 和 Ubuntu 14.04 LTS 的相容性。(#17538)

  • gitian 建置提供的原始碼檔案不再包含任何 autotools 工件。因此,要從此類原始碼建置,使用者應從解壓的檔案的根目錄執行 ./autogen.sh 腳本。這意味著 autotools 和其他所需套件已安裝在使用者的系統上。(#18331)

新設定

  • 新的 rpcwhitelistrpcwhitelistdefault 設定參數允許授予某些 RPC 使用者僅對某些 RPC 呼叫的權限。(#12763)

  • 已新增一個新的 -asmap 設定選項,透過將 IP 地址映射到自治系統編號(ASN),然後限制對任何單個 ASN 的連線數量,來多樣化節點的網路連線。請參閱 issue #16599、PR #16702bitcoind help 以獲取更多資訊。此選項是實驗性的,可能會在未來版本中移除或破壞性變更,因此 IP 地址的傳統 /16 前綴映射仍然是預設設定。(#16702)

更新的設定

  • Bitcoin Core 啟動時設定的所有自訂設定現在都會寫入 debug.log 檔案以協助疑難排解。(#16115)

  • 透過 bootstrap.dat 檔案在啟動時匯入區塊不再預設發生。現在必須使用 -loadblock=<file> 指定該檔案。(#17044)

  • -debug=db 日誌類別已重新命名為 -debug=walletdb,以將其與 coindb 區分開來。-debug=db 選項已被棄用,並將在下一個主要版本中移除。(#17410)

  • -walletnotify 設定參數現在將在其參數中將任何 %w 替換為生成通知的錢包名稱。Windows 不支援此功能。(#13339)

移除的設定

  • -whitelistforcerelay 設定參數已被移除,因為發現它在 0.13 版本中變得無效,實際上已經有近四年沒有受到支援。(#17985)

GUI 變更

  • macOS 上的「在系統登入時啟動 Bitcoin Core」選項已被移除。(#17567)

  • 在對等節點視窗中,對等節點的詳細資訊現在顯示一個 Mapped AS 欄位,以指示用於多樣化對等節點選擇的映射自治系統。請參閱上面_新設定_中的 -asmap 設定選項。(#18402)

  • 0.18 版本說明中公告的「已知錯誤」已修復。該問題影響了同時使用多個 Bitcoin Core 錢包和 GUI 幣控制功能的任何人。(#18894)

  • 對於僅觀察錢包,在發送螢幕中建立新交易或在交易螢幕中提升現有交易的費用將自動將部分簽名的比特幣交易(PSBT)複製到系統剪貼簿。然後可以將其粘貼到外部程式(如 HWI)進行簽名。未來版本的 Bitcoin Core 應支援用於最終化和廣播 PSBT 的 GUI 選項,但目前可以使用除錯控制台與 finalizepsbtsendrawtransaction RPC。(#16944, #17492)

錢包

  • 錢包現在預設在使用 RPC 時使用 bech32 地址,並建立原生 segwit 找零輸出。(#16884)

  • 輸出信任的計算方式已修復,這會影響已確認/未確認餘額狀態和幣選擇。(#16766)

  • gettransactionlisttransactionslistsinceblock RPC 回應現在還包括包含錢包交易的區塊高度(如果有)。(#17437)

  • getaddressinfo RPC 的 label 欄位已被棄用(使用設定參數 -deprecatedrpc=label 為此版本重新啟用)。labels 欄位從返回 JSON 物件更改為返回標籤名稱的 JSON 陣列(使用設定參數 -deprecatedrpc=labelspurpose 為此版本重新啟用先前的行為)。使用已棄用的設定參數的向後相容性預計將在 0.21 版本中刪除。(#17585, #17578)

文件變更

  • Bitcoin Core 的自動生成的原始碼文件現在可在 https://doxygen.bitcoincore.org 獲得。(#17596)

低階變更

實用程式

  • -getinfo 參數一起使用的 bitcoin-cli 實用程式現在返回一個 headers 欄位,其中包含最佳標頭鏈上已下載區塊標頭的數量(類似於也返回的 blocks 欄位)和一個 verificationprogress 欄位,該欄位估計本地節點已同步了多少最佳區塊鏈。返回的資訊不再包括 protocolversionwalletversionkeypoololdest 欄位。(#17302, #17650)

  • bitcoin-cli 實用程式現在接受 -stdinwalletpassphrase 參數,該參數可在呼叫 walletpassphrasewalletpassphrasechange RPC 時使用,以從標準輸入讀取密碼而不將其回顯到終端,從而提高了對任何可以查看您螢幕的人的安全性。現有的 -stdinrpcpass 參數也已更新為不回顯密碼。(#13716)

命令列

  • 以主網/測試網/regtest 網路名稱為前綴的命令列選項(如 -main.port=8333 -test.server=1)以前是允許的但被忽略。現在它們在啟動時觸發「Invalid parameter」錯誤。(#17482)

新的 RPC

  • dumptxoutset RPC 輸出當前 UTXO 集的序列化快照。在 contrib/devtools 目錄中提供了一個腳本,用於在特定區塊高度生成 UTXO 集的快照。(#16899)

  • generatetodescriptor RPC 允許使用 regtest 模式的測試人員生成支付任意輸出腳本描述符的區塊。(#16943)

更新的 RPC

  • verifychain RPC 預設值現在是靜態的,而不是依賴於命令列選項或設定檔(-checklevel-checkblocks)。使用者可以在不想依賴預設值時明確傳遞 RPC 參數。(#18541)

  • getblockchaininfo RPC 的 verificationprogress 欄位將不再報告高於 1 的值。以前它偶爾會報告鏈的驗證超過 100%。(#17328)

測試

  • 如果在測試網或 regtest 網路上執行,在設定檔中使用不合格的 walletdir=path 設定現在是錯誤的。設定現在需要限定為 chain.walletdir=path 或放置在適當的 [chain] 部分中。(#17447)

  • -fallbackfee 對主鏈預設為 0(停用),但對測試鏈預設為 0.0002。現在對所有鏈預設為 0。測試網和 regtest 使用者如果沒有設定它並希望它像以前一樣繼續工作,則必須在其設定中新增 fallbackfee=0.0002。(#16524)

建置系統

  • 提供了使用 Android Native Development Kit (NDK) 建置的支援。(#16110)

致謝

感謝所有直接為此版本做出貢獻的人,總計超過 150 位貢獻者。完整清單請參閱原始版本說明。

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