Bitcoin Core 0.14.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.14.0 版本現已發布,可從以下位置下載:
https://bitcoincore.org/bin/bitcoin-core-0.14.0/
此主要版本包含新功能、各種錯誤修正和效能改善,以及更新的翻譯。
請使用 GitHub 的問題追蹤器回報錯誤:
https://github.com/bitcoin/bitcoin/issues
如需接收安全性和更新通知,請訂閱:
https://bitcoincore.org/zh_TW/list/announcements/join/
相容性
Bitcoin Core 在使用 Linux kernel、macOS 10.8+ 和 Windows Vista 及更新版本的作業系統上經過廣泛測試。
Microsoft 已於 2014 年 4 月 8 日終止對 Windows XP 的支援,我們沒有嘗試阻止在 Windows XP 上安裝或執行軟體,您仍然可以自行承擔風險執行,但請注意存在已知的不穩定性和問題。請不要向問題追蹤器回報關於 Windows XP 的問題。
Bitcoin Core 也應該可以在大多數其他類 Unix 系統上運作,但在這些系統上的測試頻率較低。
重要變更
效能改進
版本 0.14 包含許多重大的效能改進,大幅縮短初始區塊下載、啟動、交易和區塊驗證時間:
- 腳本簽名快取已重新實作為「cuckoo cache」,允許快取更多簽名並加快查找速度。
- 引入了 assumed-valid 區塊,允許跳過已知良好區塊的祖先的腳本驗證,而不改變安全模型。詳情請見下文。
- 在某些情況下,緊湊區塊現在在完全驗證之前就被中繼,符合 BIP152 規範。
- P2P 網路已重構,專注於並發性和吞吐量。網路操作不再受驗證瓶頸限制。因此,在許多情況下,區塊獲取比先前版本快數倍。
- UTXO 快取現在聲明未使用的 mempool 記憶體。這加快了初始區塊下載,因為 UTXO 查找是主要瓶頸,在該階段 mempool 沒有用處。
手動修剪
Bitcoin Core 自 0.11 以來就支援自動修剪區塊鏈。修剪區塊鏈可以顯著節省儲存空間,因為在處理後可以丟棄絕大多數下載的資料,因此磁碟上只保留很少的資料。
現在可以透過設定 -prune=1 啟用手動區塊修剪。設定後,RPC 命令 pruneblockchain 可用於將區塊鏈修剪到指定的高度或時間戳記。
getinfo 已棄用
getinfo RPC 命令已被棄用。RPC 呼叫中的每個欄位都已移至另一個命令的輸出,該命令還提供 getinfo 未提供的其他資訊。下表顯示每個欄位已移至何處:
getinfo 欄位 |
移至 |
|---|---|
"version" |
getnetworkinfo()["version"] |
"protocolversion" |
getnetworkinfo()["protocolversion"] |
"walletversion" |
getwalletinfo()["walletversion"] |
"balance" |
getwalletinfo()["balance"] |
"blocks" |
getblockchaininfo()["blocks"] |
"timeoffset" |
getnetworkinfo()["timeoffset"] |
"connections" |
getnetworkinfo()["connections"] |
"proxy" |
getnetworkinfo()["networks"][0]["proxy"] |
"difficulty" |
getblockchaininfo()["difficulty"] |
"testnet" |
getblockchaininfo()["chain"] == "test" |
"keypoololdest" |
getwalletinfo()["keypoololdest"] |
"keypoolsize" |
getwalletinfo()["keypoolsize"] |
"unlocked_until" |
getwalletinfo()["unlocked_until"] |
"paytxfee" |
getwalletinfo()["paytxfee"] |
"relayfee" |
getnetworkinfo()["relayfee"] |
"errors" |
getnetworkinfo()["warnings"] |
Windows 上的 ZMQ
由於 ZMQ 的各種問題,先前 ZeroMQ 通知系統在 Windows 上不可用。這些問題已在上游修復,現在 Windows 上可以使用 ZMQ。請參閱此文件以獲得使用 ZMQ 的一般幫助。
除錯控制台中的巢狀 RPC 命令
除錯控制台已新增巢狀 RPC 命令的功能。這允許使用者讓一個命令的輸出成為另一個命令的輸入,而無需單獨執行命令。
巢狀 RPC 命令使用括號語法(即 getwalletinfo()),並且可以巢狀(即 getblock(getblockhash(1)))。可以使用方括號進行簡單查詢,使用陣列索引或非引號字串存取物件值(即 listunspent()[0][txid])。括號語法和正常 RPC 命令語法中都可以使用逗號和空格來分隔參數。
網路活動切換
已新增 RPC 命令和 GUI 切換以啟用或停用所有 p2p 網路活動。右下角的網路狀態圖示現在是 GUI 切換。點擊圖示將啟用或停用所有 p2p 網路活動。如果停用網路活動,圖示將變灰並在上面顯示 X。
此外,已新增 setnetworkactive RPC 命令,其功能與 GUI 圖示相同。該命令採用一個布林參數,true 啟用網路,false 停用網路。
非同步模態資訊層
當 Bitcoin Core 在啟動時不同步時,將在正常顯示上方顯示半透明的資訊層。此層包含有關當前同步進度的詳細資訊,並估計完成同步所需的剩餘時間。此層也可以透過點擊視窗底部的進度條來隱藏和隨後取消隱藏。
支援 JSON-RPC 具名參數
透過 JSON-RPC 介面和透過 bitcoin-cli 二進位檔發送的命令現在可以使用具名參數。這遵循 JSON-RPC 規範以物件按名稱傳遞參數。
bitcoin-cli 已更新為在給定 -named 選項時透過解析 name=value 參數來支援此功能。
一些範例:
src/bitcoin-cli -named help command="help"
src/bitcoin-cli -named getblockhash height=0
src/bitcoin-cli -named getblock blockhash=000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
src/bitcoin-cli -named sendtoaddress address="(snip)" amount="1.0" subtractfeefromamount=true
在這種情況下參數的順序無關緊要。具名參數對於省略應保持預設值的參數也很有用。很少使用的參數 comment 和 comment_to 到 sendtoaddress 例如可以省略。然而,這尚未為許多 RPC 呼叫實作,預計將在未來版本中實現。
RPC 伺服器仍然完全向後相容位置參數。
發送時選擇加入 RBF
已新增新的啟動選項 -walletrbf,允許使用者讓所有發送的交易選擇加入 RBF 支援。此選項的預設值目前為 false,因此交易預設不會選擇加入 RBF。新的 bumpfee RPC 可用於替換選擇加入 RBF 的交易。
除錯控制台歷史中不再儲存敏感資料
除錯控制台維護先前輸入命令的歷史記錄,可以透過按上箭頭鍵存取,以便使用者可以輕鬆重複使用先前輸入的命令。當透過歷史記錄存取時,具有敏感資訊(如密碼和私鑰)的命令現在將在參數位置顯示 (...)。
跨重啟保留 Mempool
在關閉之前,mempool 將儲存到資料目錄中的 mempool.dat 檔案。此檔案保留 mempool,以便在節點重新啟動時,可以在不等待建立新交易的情況下填充 mempool 中的交易。這也保留透過 prioritisetransaction 等命令對交易所做的任何變更,因此這些變更不會丟失。
最終警報
警報系統在 Bitcoin Core 0.12.1 中被停用和棄用,並在 0.13.0 中移除。警報系統以最大序列最終警報退役,該警報導致支援警報系統的任何節點顯示靜態硬編碼的「Alert Key Compromised」訊息,這也阻止任何其他警報覆蓋它。此最終警報已硬編碼到此版本中,以便所有舊節點都收到最終警報。
GUI 變更
-
在選項對話框中點擊
Reset Options按鈕或使用-resetguioptions啟動選項重設選項後,將提示使用者再次選擇資料目錄。這是為了確保在清除透過選擇資料目錄對話框設定的自訂資料目錄的選項重設後保留自訂資料目錄。 -
現在可以在除錯視窗的對等節點清單中選擇多個對等節點。這允許使用者同時禁止或中斷多個對等節點的連線,而不是一次禁止一個。
-
已在主視窗的右下角新增一個指示器,以指示正在使用的錢包是否為 HD 錢包。如果錢包不是 HD 錢包,此圖示將變灰並在上面顯示 X。
低階 RPC 變更
-
importprunedfunds只接受兩個必需參數。某些版本接受可選的第三個參數,但總是被忽略。請確保永遠不要傳遞超過兩個參數。 -
getaddednodeinfo的第一個布林參數已被移除。這是一個不相容的變更。 -
RPC 命令
getmininginfo失去了「testnet」欄位,改用更通用的「chain」(已存在多年)。 -
已新增新的 RPC 命令
preciousblock,它將區塊標記為珍貴。珍貴區塊將被視為比競爭區塊更早接收。 -
已新增新的 RPC 命令
importmulti,它接收一個 JSON 物件陣列,表示匯入公鑰、私鑰、地址和腳本/p2sh 的意圖。 -
使用
getrawtransaction檢索具有未花費輸出的已確認交易已被棄用。目前這仍然有效,但在未來可能會變更為只能檢索 mempool 中的交易資訊,或者如果啟用了txindex。 -
已新增新的 RPC 命令
getmemoryinfo,它將返回有關 Bitcoin Core 記憶體使用情況的資訊。這是與記憶體管理最佳化一起新增的。詳見 Pull #8753。 -
已新增新的 RPC 命令
bumpfee,允許用支付更高費用的新交易替換發送 RBF 訊號的未確認錢包交易(參見上面的-walletrbf啟動選項),並且應該更有可能快速確認。
引入 assumed-valid 區塊
-
初始區塊下載時間的很大一部分用於驗證腳本/簽名。儘管驗證必須通過以確保系統的安全性,但不需要來自此驗證的其他結果:如果節點知道給定區塊的歷史有效,它可以跳過檢查其祖先的腳本。
-
提供了新的配置選項 ‘assumevalid’ 來向軟體表達這種知識。與過去的「checkpoints」不同,此設定不會強制使用特定的鏈:與其一致的鏈處理更快,但如果其他鏈被選為最佳鏈,仍然會被接受。與「checkpoints」不同,使用者可以配置假設為真的區塊歷史,這意味著即使過時的軟體在使用者更新設定後也可以更快地同步。
-
由於鏈歷史的有效性是一個簡單的客觀事實,因此審查此設定要容易得多。因此,軟體附帶一個預設值,調整為在發布前不久匹配當前鏈。可以透過設定 -assumevalid=0 來停用此預設值的使用。
最小費率政策
自 0.12 中的變更以來,自動限制 mempool 的大小和改進挖礦程式碼中區塊建立的效能,對中繼節點或礦工設定 -minrelaytxfee 已不重要。在此版本中,與此選項綁定的以下概念已被分離:
- 用於計算 BIP 125 替換和 mempool 限制的增量中繼費用(1000 satoshis/kB)
- 塵埃輸出的閾值計算(有效 3 * 1000 satoshis/kB)
- 由挖礦程式碼建立的區塊中要包含的交易包的最低費率。如果礦工希望設定此最低值,他們可以使用新的
-blockmintxfee選項(預設為 1000 satoshis/kB)
-minrelaytxfee 選項繼續存在,但建議保持不設定。
費用估算變更
-
自 0.13.2 以來,1 個區塊的確認目標的費用估算已被停用。費用滑桿將不再能夠選擇 1 個區塊的目標。這只是一個小的行為變更,因為無論如何這個目標通常沒有足夠的資料。
estimatefee 1現在總是返回 -1,estimatesmartfee 1將從目標 2 開始搜尋。 -
費用估算的預設目標在 GUI(先前為 25)和 RPC 呼叫(先前為 2)中都更改為 6 個區塊。
移除優先級估算
-
已移除對在目標區塊數內包含交易所需「優先級」的估算。RPC 呼叫已棄用,將適當地返回 -1 或 1e24。
fee_estimates.dat的格式也已變更為不再儲存這些優先級估算。它將自動轉換為新格式,先前版本的軟體無法讀取。 -
挖礦的「優先級」(幣齡)交易排序支援在 Core 中被視為已棄用,並將在下一個主要版本中移除。這不應與
prioritisetransactionRPC 混淆,該 RPC 仍將被 Core 支援以向交易新增費用增量。
P2P 連線管理
-
透過
-addnode選項或addnodeRPC 手動新增的對等節點現在有自己的八個連線限制,不會與其他入站或出站連線使用競爭,也不受-maxconnections選項施加的限制。 -
更快地執行與手動新增的對等節點的新連線。
未使用的 mempool 記憶體被 coincache 使用
- 在 0.14 之前,為 mempool 保留的記憶體(使用
-maxmempool選項)在初始區塊下載或 IBD 期間未使用。在 0.14 中,當有額外記憶體可用時,UTXO DB 快取(使用-dbcache選項控制)會從 mempool 借用記憶體。這可能導致在 IBD 期間記憶體使用量增加,對於先前僅依賴-dbcache選項在該時間限制記憶體的使用者。
0.14.0 變更日誌
完整的變更日誌包含數百個 PR,涵蓋 RPC 和其他 API、區塊和交易處理、P2P 協定和網路程式碼、驗證、建置系統、GUI、錢包、測試和 QA 等方面。由於篇幅限制,請參閱原始版本說明以獲取完整清單。
致謝
感謝所有直接為此版本做出貢獻的超過 120 位貢獻者。完整清單請參閱原始版本說明。
以及所有在 Transifex 上協助翻譯的人。
