Bitcoin Core 0.11.0

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

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

此主要版本帶來了新功能和錯誤修正。

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

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

升級和降級

降級警告

由於 0.10.0 及更高版本使用標頭優先同步和平行區塊下載,區塊檔案和資料庫與 0.10 之前版本的 Bitcoin Core 或其他軟體不向後相容。

從 0.11.x 降級到 0.10.x 時沒有已知問題。

重要資訊

交易洪水

在此版本發布時,P2P 網路正在遭受低費用交易的洪水攻擊。這導致 mempool 大小膨脹。

如果 mempool 的增長在您的節點上導致記憶體使用問題,可以更改一些配置選項來解決此問題。可以使用 RPC 命令 getmempoolinfo 監控 mempool 的增長。

一個是增加最低交易中繼費用 minrelaytxfee,預設為 0.00001。這將導致拒絕每 kB 費用較少的交易,從而減少進入 mempool 的交易。

另一個是限制免費交易的中繼,使用 limitfreerelay。此選項設定接受免費交易(具有足夠優先級)的 kB/分鐘速率。預設為 15。減少此數字可減少由於免費交易而導致的 mempool 增長速度。

例如,將以下內容新增到 bitcoin.conf

minrelaytxfee=0.00005
limitfreerelay=5

正在為後續版本開發更強大的解決方案。

重要變更

區塊檔案修剪

此版本支援在不維護磁碟上原始區塊和還原資料副本的情況下執行完全驗證節點。

區塊修剪允許 Bitcoin Core 在原始資料經過驗證並用於建置資料庫後刪除原始區塊和還原資料。此時,原始資料僅用於向其他節點中繼區塊、處理重組、查找舊交易(如果啟用了 -txindex 或透過 RPC/REST 介面),或重新掃描錢包。

使用者指定為區塊和還原檔案分配多少空間。允許的最小值為 550MB。請注意,這是除了區塊索引和 UTXO 資料庫所需的任何空間之外的。選擇最小值是為了使 Bitcoin Core 能夠在磁碟上維護至少 288 個區塊(以每個區塊 10 分鐘計算,兩天的區塊)。

區塊修剪在初始同步期間的工作方式與穩定狀態相同,透過在分配磁碟空間時「隨時」刪除區塊檔案。

現在,區塊修剪會停用區塊中繼。未來,具有區塊修剪的節點至少會中繼「新」區塊,即擴展其活動鏈的區塊。

區塊修剪目前與執行錢包不相容,因為區塊資料用於重新掃描錢包和匯入金鑰或位址(需要重新掃描)。然而,在不久的將來,將支援使用區塊修剪執行錢包,但受到這些限制。

區塊修剪也與 -txindex 不相容,並會自動停用它。

一旦您修剪了區塊,回到未修剪狀態需要重新下載整個區塊鏈。要執行此操作,請使用 -reindex 重新啟動節點。

要在命令列上啟用區塊修剪:

  • -prune=N:其中 N 是為原始區塊和還原資料分配的 MB 數。

修改的 RPC 呼叫:

  • getblockchaininfo 現在包括我們是否處於修剪模式。
  • getblock 將檢查區塊的資料是否已被修剪,如果是,則返回錯誤。
  • getrawtransaction 將無法再找到具有 UTXO 但其區塊檔案已被修剪的交易。

預設情況下停用修剪。

Big endian 支援

在此版本中新增了對 big-endian CPU 架構的實驗性支援。所有 little-endian 特定的程式碼都已替換為 endian 中性的建構。這已在至少 MIPS 和 PPC 主機上測試過。建置系統將自動檢測目標的 endianness。

記憶體使用最佳化

此版本中進行了許多變更以減少節點的預設記憶體使用,其中包括:

  • 準確的 UTXO 快取大小計算(#6102);這使得選項 -dbcache 精確,而以前這嚴重低估了記憶體使用量
  • 減少每個對等節點資料結構的大小(#6064 等);這增加了可以在相同記憶體量下支援的連線數
  • 減少執行緒數(#5964#5679);降低(尤其是虛擬)記憶體需求

費用估算變更

此版本改進了用於費用估算的演算法。以前,當沒有足夠的資料給出估算時,返回 -1。現在,當所需確認目標沒有足夠高的費用或優先級時,也將返回 -1。在這些情況下,要求更高目標區塊數的估算可能會有所幫助。沒有足夠高的費用或優先級可靠地(85%)包含在下一個區塊中並不罕見,因此 -txconfirmtarget=n 的預設值已從 1 更改為 2。

隱私:停用錢包交易廣播

此版本新增了一個選項 -walletbroadcast=0 以防止自動交易廣播和重新廣播(#5951)。此選項允許將交易提交與節點功能分離。

利用此功能,可以編寫第三方腳本來處理交易(重新)廣播:

  • 透過 RPC 或 GUI 正常發送交易
  • 透過 RPC 使用 gettransaction(不是 getrawtransaction)檢索交易資料。結果的 hex 欄位將包含交易的原始十六進位表示
  • 然後可以透過腳本支援的任意機制廣播交易

一個這樣的應用是選擇性 Tor 使用,其中節點在普通網際網路上執行,但交易透過 Tor 廣播。

有關範例腳本,請參閱 bitcoin-submittx

隱私:Tor 的串流隔離

此版本新增了為每個對等節點連線建立新電路的功能,當軟體與 Tor 一起使用時。新選項 -proxyrandomize 預設開啟。

啟用後,每個出站連線都將(可能)透過不同的出口節點。這顯著減少了不幸選擇單個惡意或被 P2P 網路廣泛禁止的出口節點的機會。這提高了連線可靠性和隱私,特別是對於初始連線。

重要注意事項:如果配置了支援認證但不需要認證的非 Tor SOCKS5 代理,此變更可能導致該代理拒絕連線。在這種情況下,可以傳遞 -proxyrandomize=0 以停用該行為。

0.11.0 變更日誌

完整的變更日誌包含數百個 PR,涵蓋 RPC 和 REST、配置和命令列選項、區塊和交易處理、P2P 協定和網路程式碼、驗證、建置系統、錢包、GUI、測試等方面。由於篇幅限制,請參閱原始版本說明以獲取完整清單。

致謝

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

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