Bitcoin Core 0.13.1

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

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

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

此小版本包含 segwit 軟分叉的啟動參數、各種錯誤修正和效能改善,以及更新的翻譯。

請使用 GitHub 的問題追蹤器回報錯誤:

https://github.com/bitcoin/bitcoin/issues

如需接收安全性和更新通知,請訂閱:

https://bitcoincore.org/zh_TW/list/announcements/join/

相容性

從 0.13.0 開始,不再支援 Windows XP。建議使用者升級到較新版本的 Windows,或安裝支援的替代作業系統。我們沒有嘗試阻止在 Windows XP 上安裝或執行軟體,您仍然可以自行承擔風險執行,但不要期望它能正常工作:請不要向問題追蹤器回報關於 Windows XP 的問題。

從 0.13.1 開始,不再支援 OS X 10.7。0.13.0 原本打算在 10.7+ 上運作,但 10.7.x 上的 libc++ 版本存在嚴重問題,使其無法可靠執行。0.13.1 現在需要 10.8+,並會將此訊息傳達給 10.7 使用者,而不是意外崩潰。

重要變更

Segregated Witness 軟分叉

Segregated witness (segwit) 是一種軟分叉,如果啟動,將允許產生交易的軟體將交易簽名(見證)與交易中由 txid 覆蓋的部分資料分離(隔離)。這提供了幾個即時好處:

  • 消除不需要的交易可塑性:隔離見證允許現有和升級的軟體在不引用見證的情況下計算交易識別符(txid),見證有時可能被第三方(如礦工)或多重簽名支出中的共同簽名者更改。這解決了所有已知的不需要的交易可塑性案例,這使得編寫 Bitcoin 錢包軟體更加困難,並嚴重複雜化了 Bitcoin 智慧合約的設計。

  • 容量增加:Segwit 交易包含新欄位,這些欄位不是目前用於計算區塊大小的資料的一部分,這允許包含 segwit 交易的區塊容納比當前最大區塊大小允許的更多資料。基於目前在區塊中發現的交易的估算表明,如果所有錢包都切換到使用 segwit,網路將能夠支援大約 70% 更多的交易。

  • 基於對節點效能影響的資料加權:在 segwit 啟動後,隔離見證的每個位元組被賦予權重 1,區塊中的每個其他位元組被賦予權重 4,區塊的最大允許權重為 400 萬。以這種方式加權資料更好地將建立區塊的最有利可圖的策略與區塊驗證的長期成本對齊。

  • 簽名覆蓋價值:Segwit 中簽名生成方式的簡單改進簡化了安全簽名產生器(如硬體錢包)的設計,減少了簽名產生器需要下載的資料量,並允許簽名產生器更快地操作。

  • Sighash 操作的線性擴展:在 2015 年,由於交易簽名雜湊的執行方式,產生了一個在現代硬體上需要大約 25 秒驗證的區塊。可以選擇加入使用 segwit 的交易現在將使用不同的簽名方法,不會遭受此問題且沒有任何不需要的副作用。

  • 提高多重簽名的安全性:Segwit 允許進階交易使用 SHA256 雜湊函數,提供約 128 位元的安全性(相當於 ECDSA 提供的最大安全位元數)。

  • 腳本版本控制:Segwit 使得未來的軟分叉可以輕鬆允許 Bitcoin 使用者在收到新交易時單獨選擇加入 Bitcoin Script 語言的幾乎任何變更。目前由 Bitcoin Core 貢獻者研究的功能包括 Schnorr 簽名和 Merklized Abstract Syntax Trees (MAST) 支援。

Segwit 軟分叉的啟動使用 BIP9 versionbits 進行管理。Segwit 的版本位元是位元 1,節點將在 segwit 開始日期 2016 年 11 月 15 日後的第一個重新目標期間開始追蹤哪些區塊發送 segwit 支援訊號。如果 2,016 個區塊的重新目標期間(約兩週)內 95% 的區塊發送 segwit 支援訊號,軟分叉將被鎖定。再經過 2,016 個區塊後,segwit 將啟動。

有關 segwit 的更多資訊,請參閱 segwit FAQsegwit wallet developers guide 或 BIP 141143144145。如果您是礦工或礦池營運商,請參閱 versionbits FAQ 以獲取有關為軟分叉發送支援訊號的資訊。

Null dummy 軟分叉

與 segwit 軟分叉結合的是一個額外變更,將長期存在的網路中繼政策轉變為共識規則。OP_CHECKMULTISIGOP_CHECKMULTISIGVERIFY 操作碼在簽名驗證後消耗額外的堆疊元素(「dummy element」)。Dummy element 不會以任何方式檢查,可以被任何值替換而不會使腳本無效。

由於任何值都可以用於此 dummy element,第三方可以將資料插入其他人的交易中,更改交易的 txid(稱為交易可塑性)並可能造成其他問題。

自 Bitcoin Core 0.10.0 以來,節點預設只中繼和挖掘其 dummy element 為 null 值(0x00,也稱為 OP_0)的交易。Null dummy 軟分叉將此中繼規則轉變為共識規則,適用於非 segwit 交易和 segwit 交易,因此這種變異交易的方法從網路中永久消除。

Null dummy 軟分叉的訊號是透過為 segwit 發送支援訊號來完成的,null dummy 軟分叉將與 segwit 同時啟動。

有關更多資訊,請參閱 BIP147

低階 RPC 變更

  • importprunedfunds 只接受兩個必需參數。某些版本接受可選的第三個參數,但總是被忽略。請確保永遠不要傳遞超過兩個參數。

Linux ARM 建置

從 0.13.0 版本開始,預建構的 Linux ARM 二進位檔已新增到上傳的可執行檔集合中。以下提供每個目標 ARM 架構的其他詳細資訊。

下載目錄或 torrent 中可以找到以下額外檔案:

  • bitcoin-${VERSION}-arm-linux-gnueabihf.tar.gz:針對 32 位元 ARMv7-A 架構的 Linux 二進位檔。
  • bitcoin-${VERSION}-aarch64-linux-gnu.tar.gz:針對 64 位元 ARMv8-A 架構的 Linux 二進位檔。

ARM 建置仍然是實驗性的。如果您在某個裝置或 Linux 發行版組合上遇到問題,請在錯誤追蹤器上回報,可能可以解決。請注意,您使用的裝置必須(向後)相容您使用的二進位檔所針對的架構。

請注意,在此上下文中,Android 不被視為 ARM Linux。這些可執行檔預計不會在 Android 上開箱即用。

0.13.1 變更日誌

完整的變更日誌包含數百個 PR。由於篇幅限制,請參閱原始版本說明以獲取完整清單。

主要變更包括:

共識

  • 實作 NULLDUMMY 軟分叉(BIP147)
  • 定義 segwit 部署的開始和結束時間

RPC 和其他 API

  • 移除 importprunedfunds 中的誤導性選項
  • 移除 createwitnessaddress RPC 命令
  • 棄用 getinfo
  • 在十六進位而非 base64 中生成認證 cookie

P2P 協定和網路程式碼

  • 不再在 addrMe 中發送本地位址
  • 忽略 notfound P2P 訊息
  • 支援緊湊區塊與 segwit 一起使用
  • Feeler 連線以增加 tried table 中的線上位址

GUI

  • 修復最小化和關閉錯誤
  • 在選項重設後持久化 datadir
  • 修復可能導致支付意外費用的 UI 錯誤
  • 在隱藏服務執行時顯示網路/鏈錯誤

錢包

  • 修復 segwit 相關的錢包錯誤
  • 將見證位址新增到位址簿
  • 從 removeprunedfunds 移除「未使用的」ThreadFlushWalletDB

致謝

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

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