Bitcoin Core 0.12.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.12.1 版本現已發布,可從以下位置下載:

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

此小版本包含 BIP9、BIP68 和 BIP112 軟分叉、各種錯誤修正和更新的翻譯。

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

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

升級和降級

如何升級

如果您正在執行舊版本,請將其關閉。等待它完全關閉(舊版本可能需要幾分鐘),然後執行安裝程式(在 Windows 上)或直接複製 /Applications/Bitcoin-Qt(在 Mac 上)或 bitcoind/bitcoin-qt(在 Linux 上)。

降級警告

降級到版本 < 0.12.0

由於 0.12.0 及更高版本將在每次新同步或重新索引時混淆 chainstate,因此 chainstate 與 0.12 之前版本的 Bitcoin Core 或其他軟體不向後相容。

如果您想在使用 0.12.0 或更高版本進行重新索引後降級,當您首次啟動 Bitcoin Core 0.11 或更早版本時,您將需要重新索引。

重要變更

首個使用 BIP9 的 version bits 軟分叉部署

此版本包含使用 BIP9 部署機制強制執行 BIP68BIP112BIP113 的軟分叉部署。

部署將區塊版本號設定為 0x20000001,在 2016 年 5 月 1 日午夜到 2017 年 5 月 1 日午夜之間發送就緒部署訊號。版本號由 0x20000000 組成以指示 version bits,並設定位元 0 以指示對此組合部署的支援,在 getblockchaininfo RPC 呼叫中顯示為「csv」。

有關軟分叉變更的更多資訊,請參閱 https://github.com/bitcoin/bitcoin/pull/7648

此特定回移 pull-request 可在 https://github.com/bitcoin/bitcoin/pull/7543 查看

BIP68 軟分叉以強制執行相對鎖定時間的序列鎖

BIP68 引入了序列號欄位的相對鎖定時間共識強制執行語義,以使簽名的交易輸入在其對應輸出點確認後的定義時間內保持無效。

有關實作的更多資訊,請參閱 https://github.com/bitcoin/bitcoin/pull/7184

BIP112 軟分叉以強制執行 OP_CHECKSEQUENCEVERIFY

BIP112 將現有的 OP_NOP3 重新定義為 OP_CHECKSEQUENCEVERIFY (CSV),作為 Bitcoin 腳本系統中的新操作碼,結合 BIP68 允許根據被花費輸出的年齡限制腳本的執行路徑。

有關實作的更多資訊,請參閱 https://github.com/bitcoin/bitcoin/pull/7524

BIP113 鎖定時間強制執行軟分叉

Bitcoin Core 0.11.2 先前引入了僅 mempool 的鎖定時間強制執行,使用 GetMedianTimePast()。此版本尋求共識強制執行該規則。

Bitcoin 交易目前可以指定鎖定時間,指示何時可以將它們新增到有效區塊。當前共識規則要求區塊的區塊標頭時間大於該區塊中任何交易指定的鎖定時間。

礦工可以選擇用於其標頭時間的時間,共識規則是沒有節點會接受其時間比未來時間超過兩個小時的區塊。這為礦工創造了一個激勵,讓他們將標頭時間設定為未來值,以便包含原本不應該在未來兩個小時內包含的鎖定時間交易。

共識規則還指定有效區塊的標頭時間可以大於前 11 個區塊的中位數時間。此 GetMedianTimePast() 時間具有我們通常與時間相關的關鍵特徵:它不能倒退。

BIP113 指定在此版本中強制執行的軟分叉,透過要求有效區塊的計算 GetMedianTimePast() 大於該區塊中任何交易指定的鎖定時間,來削弱個別礦工使用未來時間的這種不當激勵。

對礦工的影響:您將開始拒絕在 BIP113 下無效的交易,這將防止您在網路上強制執行 BIP113 時產生無效區塊。在當前規則下有效但在 BIP113 規則下尚未有效的任何交易將由其他礦工挖掘或延遲,直到它們在 BIP113 下有效為止。

對使用者的影響:GetMedianTimePast() 總是落後於當前時間,因此鎖定時間設定為當前時間的交易將被執行此版本的節點拒絕,直到中位數時間向前移動。為了補償,從您的鎖定時間中減去一小時(3,600 秒),以允許這些交易在大約預期的時間被包含在 mempool 中。

有關實作的更多資訊,請參閱 https://github.com/bitcoin/bitcoin/pull/6566

雜項

p2p 警報系統預設關閉。要開啟,請在啟動配置中使用 -alert

0.12.1 變更日誌

RPC 和其他 API

  • #7739 7ffc2bd Add abandoned status to listtransactions (jonasschnelli)

區塊和交易處理

  • #7543 834aaef Backport BIP9, BIP68 and BIP112 with softfork (btcdrak)

P2P 協定和網路程式碼

  • #7804 90f1d24 Track block download times per individual block (sipa)
  • #7832 4c3a00d Reduce block timeout to 10 minutes (laanwj)

驗證

  • #7821 4226aac init: allow shutdown during ‘Activating best chain…’ (laanwj)
  • #7835 46898e7 Version 2 transactions remain non-standard until CSV activates (sdaftuar)

建置系統

  • #7487 00d57b4 Workaround Travis-side CI issues (luke-jr)
  • #7606 a10da9a No need to set -L and –location for curl (MarcoFalke)
  • #7614 ca8f160 Add curl to packages (now needed for depends) (luke-jr)
  • #7776 a784675 Remove unnecessary executables from gitian release (laanwj)

錢包

  • #7715 19866c1 Fix calculation of balances and available coins (morcos)

雜項

  • #7617 f04f4fd Fix markdown syntax and line terminate LogPrint (MarcoFalke)
  • #7747 4d035bc added depends cross compile info (accraze)
  • #7741 a0cea89 Mark p2p alert system as deprecated (btcdrak)
  • #7780 c5f94f6 Disable bad-chain alert (btcdrak)

致謝

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

  • accraze
  • Alex Morcos
  • BtcDrak
  • Jonas Schnelli
  • Luke Dashjr
  • MarcoFalke
  • Mark Friedenbach
  • NicolasDorier
  • Pieter Wuille
  • Suhas Daftuar
  • Wladimir J. van der Laan

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