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

https://bitcoincore.org/bin/bitcoin-core-0.15.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 上)。

第一次執行版本 0.15.0 或更高版本時,您的 chainstate 資料庫將被轉換為新格式,這將花費幾分鐘到半小時不等的時間,取決於您機器的速度。

fee_estimates.dat 的檔案格式在版本 0.15.0 中已變更。因此,從版本 0.15 降級或升級到版本 0.15 將導致所有費用估算被丟棄。

請注意,區塊資料庫格式在版本 0.8.0 中也有變更,並且從 0.8 之前的版本升級到 0.15.0 沒有自動升級程式碼。不支援從 0.7.x 及更早版本直接升級而不重新下載區塊鏈。然而,如往常一樣,仍然支援舊版本的錢包。

降級警告

此版本的 chainstate 資料庫與先前版本不相容,因此如果您執行 0.15 然後決定切換回任何較舊版本,您將需要使用 -reindex-chainstate 選項執行舊版本,以舊格式重建 chainstate 資料結構。

如果您的節點已啟用修剪,這將需要重新下載和處理整個區塊鏈。

相容性

Bitcoin Core 在使用 Linux kernel、macOS 10.8+ 和 Windows Vista 及更新版本的作業系統上經過廣泛測試。不支援 Windows XP。

Bitcoin Core 也應該可以在大多數其他類 Unix 系統上運作,但在這些系統上的測試頻率較低。

重要變更

網路分叉安全性增強

對 Bitcoin Core 處理對等連線和無效區塊的方式進行了一些變更,作為防止區塊鏈分叉和行為不當對等節點的安全預防措施。

  • 工作量少於 minimum-chain-work 的未請求區塊現在即使具有比提示更多的工作量也不再被處理(這是 IBD 期間的潛在問題,其中提示可能具有低工作量)。這可以防止對等節點浪費節點的資源。

  • 在 IBD 期間提供工作量少於 minimum-chain-work 的鏈的對等節點現在將被斷開連線。

  • 對於給定的出站對等節點,我們現在檢查其最佳已知區塊是否至少與我們的提示具有同樣多的工作量。如果沒有,並且如果在 20 分鐘逾時後我們仍然沒有聽到具有足夠工作量的區塊,那麼我們發送單個 getheaders 訊息,並再等待 2 分鐘。如果在兩分鐘後其最佳已知區塊的工作量不足,我們將斷開該對等節點。我們保護 4 個出站對等節點不被此邏輯斷開連線,以防止由於此演算法而導致過多的網路拓撲變更,同時仍確保我們有合理數量的節點不在虛假鏈上。

  • 向我們提供已知無效的區塊標頭的出站(非手動)對等節點(緊湊區塊公告除外,因為 BIP 152 明確允許節點在完全驗證之前中繼緊湊區塊)現在將被斷開連線。

  • 如果鏈提示超過 30 分鐘沒有前進,我們現在假設提示可能已過時,並將嘗試連線到額外的出站對等節點。定期檢查確保如果正在使用此額外的對等連線,我們將斷開最近未公告新區塊的對等節點。

  • 現在追蹤所有已知本身無效的區塊集合(即我們嘗試連線但發現無效的區塊),並用於檢查新標頭是否基於無效鏈建置。這確保了從無效區塊繼承的所有內容都被標記為無效。

礦工區塊大小限制已棄用

儘管自 0.13.0 以來,blockmaxweight 一直是限制 getblocktemplate 返回的區塊大小的首選方法,但 blockmaxsize 仍作為那些希望直接限制其區塊大小的人的選項保留。使用此選項導致了一些 UI 問題以及非最佳的費用選擇和略微較差的效能,因此現已被棄用。此外,blockmaxsize 選項現在僅用於計算隱含的 blockmaxweight,而不是直接限制區塊大小。任何希望按大小而不是按權重限制其區塊的礦工都必須透過直接從其區塊模板中刪除交易來手動執行此操作。

重設時備份 GUI 設定

當使用 -resetguisettings 參數時,GUI 設定現在將在清除之前寫入資料目錄中的 guisettings.ini.bak。這可用於追溯解決由於 GUI 設定引起的問題。

不允許重複錢包

以前,可以透過手動複製錢包檔案來兩次開啟同一個錢包,當兩者同時開啟時會導致問題。現在不再可能開啟同一錢包的副本。

添加除錯 -minimumchainwork 參數

已添加隱藏的除錯參數 -minimumchainwork,以允許在驗證鏈時使用自訂的最小工作量值。

低階 RPC 變更

  • getmininginfo 中的「currentblocksize」值已被移除。

  • dumpwallet 不再允許覆蓋檔案。這是一項安全措施,也可以防止危險的使用者錯誤。

  • backupwallet 現在在嘗試備份到源檔案時將失敗,而不是破壞錢包。

  • 如果傳遞了未知的 blockhash 參數值,listsinceblock 現在將拋出錯誤,而不是返回自創世區塊以來所有錢包交易的清單。當提供空字串時,行為不變。

0.15.1 變更日誌

挖礦

  • #11100 7871a7d Fix confusing blockmax{size,weight} options, dont default to throwing away money (TheBlueMatt)

RPC 和其他 API

  • #10859 2a5d099 gettxout: Slightly improve doc and tests (jtimon)
  • #11267 b1a6c94 update cli for estimate*fee argument rename (laanwj)
  • #11483 20cdc2b Fix importmulti bug when importing an already imported key (pedrobranco)
  • #9937 a43be5b Prevent dumpwallet from overwriting files (laanwj)
  • #11465 405e069 Update named args documentation for importprivkey (dusty-wil)
  • #11131 b278a43 Write authcookie atomically (laanwj)
  • #11565 7d4546f Make listsinceblock refuse unknown block hash (ryanofsky)
  • #11593 8195cb0 Work-around an upstream libevent bug (theuni)

P2P 協定和網路程式碼

  • #11397 27e861a Improve and document SOCKS code (laanwj)
  • #11252 0fe2a9a When clearing addrman clear mapInfo and mapAddr (instagibbs)
  • #11527 a2bd86a Remove my testnet DNS seed (schildbach)
  • #10756 0a5477c net processing: swap out signals for an interface class (theuni)
  • #11531 55b7abf Check that new headers are not a descendant of an invalid block (more effeciently) (TheBlueMatt)
  • #11560 49bf090 Connect to a new outbound peer if our tip is stale (sdaftuar)
  • #11568 fc966bb Disconnect outbound peers on invalid chains (sdaftuar)
  • #11578 ec8dedf Add missing lock in ProcessHeadersMessage(…) (practicalswift)
  • #11456 6f27965 Replace relevant services logic with a function suite (TheBlueMatt)
  • #11490 bf191a7 Disconnect from outbound peers with bad headers chains (sdaftuar)

驗證

  • #10357 da4908c Allow setting nMinimumChainWork on command line (sdaftuar)
  • #11458 2df65ee Don’t process unrequested, low-work blocks (sdaftuar)

建置系統

  • #11440 b6c0209 Fix validationinterface build on super old boost/clang (TheBlueMatt)
  • #11530 265bb21 Add share/rpcuser to dist. source code archive (MarcoFalke)

GUI

  • #11334 19d63e8 Remove custom fee radio group and remove nCustomFeeRadio setting (achow101)
  • #11198 7310f1f Fix display of package name on ‘open config file’ tooltip (esotericnonsense)
  • #11015 6642558 Add delay before filtering transactions (lclc)
  • #11338 6a62c74 Backup former GUI settings on -resetguisettings (laanwj)
  • #11335 8d13b42 Replace save restoreWindowGeometry with Qt functions (MeshCollider)
  • #11237 2e31b1d Fixing division by zero in time remaining (MeshCollider)
  • #11247 47c02a8 Use IsMine to validate custom change address (MarcoFalke)

錢包

  • #11017 9e8aae3 Close DB on error (kallewoof)
  • #11225 6b4d9f2 Update stored witness in AddToWallet (sdaftuar)
  • #11126 2cb720a Acquire cs_main lock before cs_wallet during wallet initialization (ryanofsky)
  • #11476 9c8006d Avoid opening copied wallet databases simultaneously (ryanofsky)
  • #11492 de7053f Fix leak in CDB constructor (promag)
  • #11376 fd79ed6 Ensure backupwallet fails when attempting to backup to source file (tomasvdw)
  • #11326 d570aa4 Fix crash on shutdown with invalid wallet (MeshCollider)

測試和 QA

  • #11399 a825d4a Fix bip68-sequence rpc test (jl2012)
  • #11150 847c75e Add getmininginfo test (mess110)
  • #11407 806c78f add functional test for mempoolreplacement command line arg (instagibbs)
  • #11433 e169349 Restore bitcoin-util-test py2 compatibility (MarcoFalke)
  • #11308 2e1ac70 zapwallettxes: Wait up to 3s for mempool reload (MarcoFalke)
  • #10798 716066d test bitcoin-cli (jnewbery)
  • #11443 019c492 Allow “make cov” out-of-tree; Fix rpc mapping check (MarcoFalke)
  • #11445 51bad91 0.15.1 Backports (MarcoFalke)
  • #11319 2f0b30a Fix error introduced into p2p-segwit.py, and prevent future similar errors (sdaftuar)
  • #10552 e4605d9 Tests for zmqpubrawtx and zmqpubrawblock (achow101)
  • #11067 eeb24a3 TestNode: Add wait_until_stopped helper method (MarcoFalke)
  • #11068 5398f20 Move wait_until to util (MarcoFalke)
  • #11125 812c870 Add bitcoin-cli -stdin and -stdinrpcpass functional tests (promag)
  • #11077 1d80d1e fix timeout issues from TestNode (jnewbery)
  • #11078 f1ced0d Make p2p-leaktests.py more robust (jnewbery)
  • #11210 f3f7891 Stop test_bitcoin-qt touching ~/.bitcoin (MeshCollider)
  • #11234 f0b6795 Remove redundant testutil.cpp h files (MeshCollider)
  • #11215 cef0319 fixups from set_test_params() (jnewbery)
  • #11345 f9cf7b5 Check connectivity before sending in assumevalid.py (jnewbery)
  • #11091 c276c1e Increase initial RPC timeout to 60 seconds (laanwj)
  • #10711 fc2aa09 Introduce TestNode (jnewbery)
  • #11230 d8dd8e7 Fixup dbcrash interaction with add_nodes() (jnewbery)
  • #11241 4424176 Improve signmessages functional test (mess110)
  • #11116 2c4ff35 Unit tests for script/standard and IsMine functions (jimpo)
  • #11422 a36f332 Verify DBWrapper iterators are taking snapshots (TheBlueMatt)
  • #11121 bb5e7cb TestNode tidyups (jnewbery)
  • #11521 ca0f3f7 travis: move back to the minimal image (theuni)
  • #11538 adbc9d1 Fix race condition failures in replace-by-fee.py, sendheaders.py (sdaftuar)
  • #11472 4108879 Make tmpdir option an absolute path, misc cleanup (MarcoFalke)
  • #10853 5b728c8 Fix RPC failure testing (again) (jnewbery)
  • #11310 b6468d3 Test listwallets RPC (mess110)

Miscellaneous

  • #11377 75997c3 Disallow uncompressed pubkeys in bitcoin-tx [multisig] output adds (TheBlueMatt)
  • #11437 dea3b87 [Docs] Update Windows build instructions for using WSL and Ubuntu 17.04 (fanquake)
  • #11318 8b61aee Put back inadvertently removed copyright notices (gmaxwell)
  • #11442 cf18f42 [Docs] Update OpenBSD Build Instructions for OpenBSD 6.2 (fanquake)
  • #10957 50bd3f6 Avoid returning a BIP9Stats object with uninitialized values (practicalswift)
  • #11539 01223a0 [verify-commits] Allow revoked keys to expire (TheBlueMatt)

致謝

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

  • Andreas Schildbach
  • Andrew Chow
  • Chris Moore
  • Cory Fields
  • Cristian Mircea Messel
  • Daniel Edgecumbe
  • Donal OConnor
  • Dusty Williams
  • fanquake
  • Gregory Sanders
  • Jim Posen
  • John Newbery
  • Johnson Lau
  • João Barbosa
  • Jorge Timón
  • Karl-Johan Alm
  • Lucas Betschart
  • MarcoFalke
  • Matt Corallo
  • Paul Berg
  • Pedro Branco
  • Pieter Wuille
  • practicalswift
  • Russell Yanofsky
  • Samuel Dobson
  • Suhas Daftuar
  • Tomas van der Wansem
  • Wladimir J. van der Laan

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