Bitcoin Core 0.21.1

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

0.21.1 版本說明

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

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

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

請使用 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 尚未變更外觀。

重要變更

Taproot 軟分叉

此版本包含 taproot 軟分叉(BIP341)的主網和測試網啟動參數,該軟分叉也新增了對 schnorr 簽名(BIP340)和 tapscript(BIP342)的支援。

如果啟動,這些改進將允許單一簽名腳本、多重簽名腳本和複雜合約的使用者都使用外觀相同的承諾,從而增強他們的隱私和所有比特幣的可替代性。花費者將享受更低的費用,並能夠以與單一簽名使用者相同的效率、低費用和大型匿名集來解決許多多重簽名腳本和複雜合約。Taproot 和 schnorr 還包括對全節點的效率改進,例如批次簽名驗證的能力。這些改進共同為未來可能進一步改善效率、隱私和可替代性的潛在升級奠定了基礎。

Taproot 的啟動使用 BIP9 versionbits 的變體進行管理,稱為 Speedy Trial(在 BIP341 中描述)。Taproot 的 versionbit 是位元 2,節點將在 2021 年 4 月 24 日 taproot 開始日期之後的第一個重新定位期間開始追蹤哪些區塊發出支援 taproot 的訊號。如果在 2021 年 8 月 11 日時間開始的第一個重新定位期間之前,2,016 個區塊重新定位期間(約兩週)內的 90% 區塊發出支援 taproot 的訊號,軟分叉將被鎖定,然後 taproot 將從區塊 709632(預計在 11 月初或中旬)開始啟動。

如果 taproot 未透過 Speedy Trial 啟動鎖定,預計將部署後續啟動機制,並進行變更以解決 Speedy Trial 方法失敗的原因。

此版本包括支付 taproot 地址的能力,儘管在 taproot 啟動之前對此類地址的支付並不安全。它還包括在啟動後中繼和挖礦 taproot 交易的能力。除了這兩個基本功能外,此版本不包含任何允許任何人直接使用 taproot 的程式碼。一旦確保 taproot 啟動,預計將在稍後的版本中將 taproot 相關功能新增到 Bitcoin Core 的錢包中。

鼓勵所有使用者、企業和礦工升級到此版本(或後續相容版本),除非他們反對啟動 taproot。如果 taproot 被鎖定,強烈建議在區塊 709632 之前升級,以幫助強制執行 taproot 的新規則並避免看到錯誤確認交易的不太可能情況。

想要啟動 Taproot 的礦工最好使用此版本來控制他們的訊號。一旦達到適當的開始時間,getblocktemplate RPC 結果將自動更新為發出訊號,並將繼續發出訊號直到超時發生或 taproot 啟動。或者,礦工可以隨時手動開始在位元 2 上發出訊號;如果 taproot 啟動,他們需要確保在區塊 709632 之前更新他們的節點,否則未升級的節點可能導致他們在無效鏈上挖礦。詳情請參閱 versionbits FAQ

有關 taproot 的更多資訊,請參閱以下資源:

更新的 RPC

  • 由於實施了 BIP 350,所有接受地址的 RPC 在傳遞原生見證版本 1(或更高版本)時的行為都會改變。現在這些需要 Bech32m 編碼而不是 Bech32 編碼,並且 RPC 輸出中也將使用 Bech32m 編碼表示此類地址。在共識規則賦予版本 1 地址意義之前,不應為主網建立版本 1 地址(這將透過 BIP 341 實現)。一旦發生這種情況,預計將對它們使用 Bech32m,因此這不應影響任何生產系統,但可能會在此類地址已具有意義的其他網路(如 signet)上觀察到。

0.21.1 變更日誌

共識

  • #21377 Speedy trial support for versionbits (ajtowns)
  • #21686 Speedy trial activation parameters for Taproot (achow101)

P2P 協定和網路程式碼

  • #20852 allow CSubNet of non-IP networks (vasild)
  • #21043 Avoid UBSan warning in ProcessMessage(…) (practicalswift)

錢包

  • #21166 Introduce DeferredSignatureChecker and have SignatureExtractorClass subclass it (achow101)
  • #21083 Avoid requesting fee rates multiple times during coin selection (achow101)

RPC 和其他 API

  • #21201 Disallow sendtoaddress and sendmany when private keys disabled (achow101)

建置系統

  • #21486 link against -lsocket if required for *ifaddrs (fanquake)
  • #20983 Fix MSVC build after gui#176 (hebasto)

測試和 QA

  • #21380 Add fuzzing harness for versionbits (ajtowns)
  • #20812 fuzz: Bump FuzzedDataProvider.h (MarcoFalke)
  • #20740 fuzz: Update FuzzedDataProvider.h from upstream (LLVM) (practicalswift)
  • #21446 Update vcpkg checkout commit (sipsorcery)
  • #21397 fuzz: Bump FuzzedDataProvider.h (MarcoFalke)
  • #21081 Fix the unreachable code at feature_taproot (brunoerg)
  • #20562 Test that a fully signed tx given to signrawtx is unchanged (achow101)
  • #21571 Make sure non-IP peers get discouraged and disconnected (vasild, MarcoFalke)
  • #21489 fuzz: cleanups for versionbits fuzzer (ajtowns)

Miscellaneous

  • #20861 BIP 350: Implement Bech32m and use it for v1+ segwit addresses (sipa)

文件

  • #21384 add signet to bitcoin.conf documentation (jonatack)
  • #21342 Remove outdated comment (hebasto)

致謝

感謝所有直接為此版本做出貢獻的人:

  • Aaron Clauson
  • Andrew Chow
  • Anthony Towns
  • Bruno Garcia
  • Fabian Jahr
  • fanquake
  • Hennadii Stepanov
  • Jon Atack
  • Luke Dashjr
  • MarcoFalke
  • Pieter Wuille
  • practicalswift
  • randymcmillan
  • Sjors Provoost
  • Vasil Dimov
  • W. J. van der Laan

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