比特幣升級在即,0.18.0版本core軟體內容前瞻

買賣虛擬貨幣
根據Bitcoin Core開發團隊的計劃,0.18.0版本的比特幣core軟體將於4月3日左右正式釋出,截至發稿時,其程式碼庫的完成度已達到了96%。

以下為0.18.0版本釋出草稿,讀者可提前瞭解到該版本軟體的更新內容。

(注:這只是一個臨時版的說明,正式釋出時可能會稍有不同)
讀者可訪問Bitcoin Core 0.18.0 版本客戶端程式碼庫:
https://bitcoincore.org/bin/bitcoin-core-0.18.0/

這是比特幣的重大更新版本,更新內容包括新功能、各種bug修復、效能提升以及交易更新。

開發者可使用GitHub的問題跟蹤器上報錯誤:
https://github.com/bitcoin/bitcoin/issues

若要接受安全及更新通知,請訂閱:
https://bitcoincore.org/en/list/announcements/join/

如何更新

如果你執行的是舊版本客戶端,請關閉它,直至其完全關閉(舊版本可能需要幾分鐘的時間),然後再執行安裝程式(Windows)或複製覆蓋至/Applications/Bitcoin-Qt(Mac系統)或bitcoind/bitcoin-qt(Linux系統)。

當你第一次執行0.15.0或更新版本的客戶端時,你的鏈態資料庫將轉換成一種新的格式,這取決於你機器的速度,所花費的時間從幾分鐘到半小時不等。

注意,區塊資料庫格式在0.8.0版本中也發生了變化,並且在0.8版本之前的客戶端到 0.15.0版本的客戶端並沒有自動升級程式碼。在0.7.x版本或更早版本的客戶端,無法實現直接升級(需重新下載區塊鏈)。不過,和往常一樣的是,舊版本的錢包仍然是支援的。

相容性

Bitcoin Core客戶端已在多個作業系統上進行了廣泛測試,其中包括Linux 核心作業系統、macOS 10.10+、Windows 7以及更新的作業系統。不建議在不支援的系統上使用Bitcoin Core客戶端。

Bitcoin Core在其他類似Unix系統的OS上也是可工作的, 但測試相對較少。

需要注意的是,macOS作業系統低於10.10版本,就無法執行高於0.17.0版本的Bitcoin Core客戶端,這是因為0.17.0是使用Qt 5.9.x構建的,它並不支援低於10.10版本的macOS作業系統。

除了以前支援的CPU平臺之外,這個版本的預編譯發行版還為RISC-V平臺提供了二進位制檔案。

如果你使用位於contrib/init/bitcoind.service的systemd單元配置檔案,則已將其更改為使用/var/lib/bitcoind作為資料目錄,而不是使用~bitcoin/.bitcoin。切換到新的配置檔案時,請確保/var/lib/bitcoind所在的檔案系統有足夠的空間(使用df-h/var/lib/bitcoind進行檢查),並可以選擇複製現有的資料目錄。有關詳細資訊,請參閱系統初始化檔案部分。

顯著的更改

挖礦

如果未指定隔離見證(segwit)規則,則對getblocktemplate的呼叫將失敗。沒有隔離見證(segwit)指定而呼叫getblocktemplate,幾乎肯定是一種錯誤配置,因為這樣做會降低礦工的回報。失敗的呼叫將生成一條說明如何啟用隔離見證(segwit)規則的錯誤資訊。

配置選項更改

1. 如果在配置檔案中使用了無法識別的section名稱,則會提示警告。可識別的section有[test]、 [main]以及[regtest]。

2. 有四個新選項可用於配置ZMQ在刪除附加訊息之前將在memory中排隊的最大訊息數。預設值為1000,這與以前的版本相同。有關詳細資訊,請參閱ZMQ文件。

3. enablebip61選項(Bitcoin Core 0.17.0中引入)用於切換BIP61拒絕訊息的傳送。拒絕訊息在P2P網路上沒有應用,並且只被記錄以供大多數網路節點除錯。預設情況下,該選項現在將關閉,以提高隱私和安全性,並減少上傳使用。出於本地網路除錯目的,使用者可顯式開啟該選項。

4. rpcallowip選項不能再用於自動監聽所有網路介面。相反,rpcbind引數還必須用於指定要偵聽的IP地址。由於透過公共網路連線偵聽RPC命令是不安全的,應該禁用該命令,因此,如果使用者選擇了這樣的配置,現在將提示警告。如果需要公開RPC以便使用Docker之類的工具,請確保只將RPC繫結到本地主機,例如Docker run[…]-p 127.0.0.1:8332:8332。

5. 如果配置檔案中設定的密碼包含雜湊字元 (#),rpcpassword選項現在會導致啟動錯誤,因為雜湊字元是用於密碼還是用作註釋,這是不明確的。

6. WhiteListforceRelay選項用於中繼來自白名單對等節點的交易,即使在未被mempool接受時也是如此。此選項現在預設為關閉,因此策略和斷開/禁止行為的更改,不會導致白名單中的另一個節點被對等方刪除。使用者仍然可以使用命令列選項顯式地啟用此行為(將來可能會棄用此功能)。

系統初始化檔案

系統初始化檔案 (contrib/init/bitcoind.service) 已更改為使用/var/lib/bitcoind作為資料目錄,而不是~bitcoin/.bitcoin。這一變化使Bitcoin Core 變得與其他服務更加一致,並使得系統初始化檔案與現有的Upstart和OpenRC configs更加一致。

配置、PID和資料目錄現在完全由SystemD管理,它將負責它們的建立、許可權等。有關詳細資訊,請參閱systemd.exec (5) ;

在contrib/init下使用提供的初始化檔案時,覆蓋/etc/bitcoin/bitcoin.conf中的datadir選項將無效。這是因為初始化檔案中指定的命令列引數優先於/etc/bitcoin/bitcoin.conf中指定的選項。

文件

1. 關於JSON-RPC介面的一個新的簡短文件描述了一些情況,其中一個RPC的結果,可能包含來自不同子系統的資料之間的不一致,例如錢包狀態和mempool狀態。在REST介面文件中新增了一個說明,說明應用了相同的規則。
2. 有關如何保護該介面的更多資訊,將新增到JSON-RPC文件中。
3. 關於bitcoin.conf檔案的一個新文件,描述瞭如何使用它來配置 Bitcoin Core。
4. 新的文件介紹了Bitcoin Core的BIP174 部分簽名比特幣交易(PSBT)介面,該介面用於允許多個程式協作建立、簽名和廣播新的交易。這對於離線(冷)錢包、多重簽名錢包、coinjoin實現以及很多其他需要兩個或多個程式互動以生成完整交易的情況非常有用。
5. 輸出指令碼描述符文件已更新,其中包含有關此仍在開發中語言的新功能資訊。該語言目前在scantxstart RPC中使用,預計將適應其他rpc和底層錢包結構。

構建系統更改

1. 可以將一個新的--disable-bip70選項傳遞給./configure,以防止Bitcoin-Qt在支援BIP70支付協議的情況下構建或連結libssl。由於支付協議在過去將Bitcoin Core暴露於libssl漏洞,鼓勵不需要bip70支援的構建者,使用此選項來減少未來漏洞暴露所帶來的傷害。
2. Qt的最低要求版本(構建GUI時)已從5.2增加到5.5.1。

新的RPC

1. getnodeaddresses RPC返回此節點已知的對等地址。它可以用來查詢不使用DNS種子器連線到的節點。
2. listwalletdir RPC返回錢包目錄中的錢包列表(預設wallet目錄或由-walletdir引數配置的目錄)。
3. getrpcinfo返回RPC伺服器的執行時間詳細資訊。目前,它返回一個當前活動命令的陣列,以及它們已經執行了多長時間。
4. deriveaddresses返回與輸出描述符對應的一個或多個地址。

更新的RPC

注意:下面的低level RPC更改部分,描述了一些主要用於測試的低level RPC更改。

1. getpeerinfo RPC現在返回一個額外的minfeefilter欄位,該欄位設定為對等節點的bip133費用過濾器。你可以使用它來檢測你的對等節點是否願意接受低於預設最低中繼費的交易。
2. mempool RPC,例如getrawmempool ,在verbose=true的情況下,現在返回一個額外的“bip125可替換”值,指示交易是否選擇請求節點和礦工將其替換為使用相同輸入的更高費率交易。
3. SettXFee RPC以前會靜默地忽略將費用設定為低於允許最小值的嘗試。現在它會發出警告,特殊值“0”仍可用於請求最小值。
4. getaddressinfo RPC現在提供一個ischange欄位,指示錢包是否使用了找零輸出中的地址。
5. importmulti RPC已更新為支援P2WSH、 P2WPKH、 P2SH-P2WPKH以及P2SH-P2WSH。對P2WSH 和P2SH-P2WSH 的請求,接受一個附加的witnessscript引數。
6. importmulti RPC現在為每個請求返回一個額外的warnings欄位,其中包含一組字串,用於解釋欄位被忽略或不一致的時間(如果有的話)。
7. 當Bitcoin Core足夠了解地址的scriptPubKey、可選redeemScript以及可選witnessScript,以便錢包能夠生成傳送到該地址的未簽名輸入支出資金時,getaddressinfo RPC現在返回一個額外的solvable布林欄位。
8. getaddressinfo、listunspent以及scantxoutset RPC現在返回一個附加的desc欄位,該欄位包含一個輸出描述符,其中包含地址的所有金鑰路徑和簽名資訊(私鑰除外)。只有當地址可解時,getAddressInfo和listunPent才會返回desc欄位。
9. importprivkey RPC 將為要匯入的私鑰對應的地址或公鑰保留以前設定的標籤。例如,如果你在早期版本的Bitcoin Core中匯入了標籤為“冷錢包”的只讀地址,隨後匯入私鑰將預設為將地址標籤重置為預設的空字串標籤(“”)。在此版本中,將保留以前的“Cold Wallet”標籤。如果在呼叫importprivkey時可選擇指定除預設值之外的任何標籤,則新標籤將應用於該地址。
10. 有關對GetBlockTemplate的更改,請參閱挖礦部分。
11. 當區塊從未透過此節點上的RPC進行裝配時,getmininginfo RPC現在會省略currentblockweight和currentblocktx。
12. getrawtransaction RPC和REST端點不再檢查交易的未使用UTXO集。其餘行為如下:1.如果提供了區塊雜湊,請檢查相應的塊。2。如果沒有提供區塊雜湊,請檢查mempool。3. 如果沒有提供區塊雜湊,但啟用了 txindex,則還應檢查txindex。
13. unloadwallet RPC 現在是同步的,這意味著在完全解除安裝錢包之前,它不會返回。
14. importmulti RPC 現在支援從描述符匯入地址。可以提供“desc”引數,而不是請求中的“scriptpubkey”,以及範圍描述符的可選範圍,以指定要匯入範圍的開始和結束。關於描述符的更多資訊,可以在這裡找到。
15. listunspent RPC 現在已經被修改,以便它返回witnessScript,即P2WSH或P2SH-P2WSH輸出時的見證指令碼。
16. createwallet RPC 現在有一個可選的空白引數,它可用於建立空白錢包。空白錢包沒有任何金鑰或HD種子。如果bitcoin core客戶端低於0.18版本,則無法開啟它們。一旦一個空白錢包有一個HD種子集(透過使用sethdseed)或私鑰、指令碼地址和其他已被匯入的只讀東西,錢包就不再是空白的,其可以在0.17.x中開啟。加密一個空白錢包也會為它設定一個HD種子。

已棄用或刪除的RPC

1. signrawtransaction RPC 在0.17.0版本中被否決,並隱藏在特殊配置選項之後,現在已經被刪除了。
2. “account”API在v0.17中被否決後,現在已被刪除。'label' API 在v0.17中被引入作為賬戶的替換。有關從“帳戶”API到“標籤”API更改的完整說明,請參閱v0.17的釋出說明。
3. addwitnessaddress RPC在0.16.0版中被否決後,現在已被刪除。
4. 錢包的generate RPC方法已被棄用,並將在隨後的主要版本中被完全刪除。此RPC僅用於測試,但其實現跨越多個子系統(錢包和挖礦),因此不推薦簡化 wallet-node介面。使用generate進行測試目的的專案,應轉換為使用generatetoaddress RPC,後者不需要或使用錢包元件。使用getnewaddress RPC返回的地址呼叫generatetoaddress,提供與舊generate RPC相同的功能。要繼續在此版本中使用generate,請使用-deprecatedrpc=generate配置選項重新啟動bitcoind。

剩餘的變化

新增了一個新的 /rest/blockhashbyheight/ 端點,用於根據區塊的高度,獲取當前最佳區塊鏈中區塊的雜湊。

圖形使用者介面(GUI)

1. 在現有檔案、設定和幫助選單旁邊,會新增一個新的視窗選單。其他開啟新視窗選單中的幾個項,已被移動到此新視窗選單。
2. 在“傳送”選項卡中,“僅支付所需費用”覈取方塊已被刪除。相反,使用者可簡單地將自定義費率欄位中的值降低到節點配置的最小中繼費用。
3. 在Overview選項卡中,如果錢包是使用CreateWallet RPC建立的,並且disable_private_keys引數設定為true,則只讀的餘額將是顯示的唯一餘額。
4. 如果使用大於10.11的Macosx Min版本編譯,則 launch-on-startup選項在MacOS上將不再可用(使用CXXFLAGS="-mmacosx-version-min=10.11" CFLAGS="-mmacosx-version-min=10.11”設定部署SDK版本)

工具

一個新的bitcoin-wallet工具現在與Bitcoin Core的其他可執行檔案一起分發。不需要使用任何RPC,此工具當前可以建立新的錢包檔案或顯示有關現有錢包的一些基本資訊,例如錢包是否加密、是否使用HD種子、包含多少交易以及有多少地址簿條目。

低level更改

RPC

(TODO pieter: 感覺此部分可與早期的RPC更改部分合並)

1. submitblock RPC 現在總是返回拒絕一個無效塊的基本原因,並且只返回它已接受的有效塊的“重複品”。
2. 新的submitheader RPC允許獨立於區塊提交區塊頭。這可能只對測試有用。
3. signrawtransactionwithkey和signrawtransactionwithwallet RPC已被修改,以便它們也可以選擇接受witnessScript,即P2WSH或P2SH-P2WSH輸出情況下的見證指令碼。這與對 listunspent的更改相容。
4. 透過importmulti匯入的具有金鑰來源資訊的描述符,將其金鑰來源資訊儲存在錢包中,以用於建立PSBTs
5. 如果walletprocesspsbt和walletcreatefundedpsbt的bip32derivs都設定為true,但公鑰的金鑰後設資料尚未更新,則該金鑰將具有一個派生路徑,如同它只是一個獨立的金鑰一樣(即,沒有派生路徑,其主指紋是其自身)。

配置

在0.16版本客戶端中, -usehd 配置選項被刪除了,從那個版本開始,所有新建立的錢包都是層次確定性(HD)錢包。此版本使指定-usehd 成為無效的配置選項。

網路

此版本允許節點因行為錯誤(例如傳送無效資料)而自動斷開連線的對等端,重新連線到你的節點(如果你有未使用的傳入連線插槽)。如果你的插槽已滿,則會斷開行為不正常節點的連線,以便為沒有問題歷史的節點騰出空間(除非行為不正常的節點以其他方式幫助你的節點。此前,Bitcoin Core在一段時間內(預設為1天)禁止了行為不端對等節點的IP地址,這很容易被擁有多個IP地址的攻擊者規避。如果手動禁止某個對等節點,例如使用 setban RPC,則來自該對等節點的所有連線仍將被拒絕。

錢包

第一次使用HD種子時,需要升級金鑰後設資料。對於未加密的錢包,這將在錢包載入時發生。對於加密錢包,這將在錢包首次解鎖時發生。

安全性

這個版本將OpenSSL中使用的隨機數生成器(RNG)更改為Bitcoin Core自己的實現(儘管Bitcoin Core收集的熵,被輸出到OpenSSL,然後在程式需要強隨機性時重新讀取)。這使得Bitcoin Core更接近於不再依賴於OpenSSL,這是一種過去引起安全問題的依賴關係。

致謝

感謝所有直接參與此次軟體釋出的人。

更多數字貨幣資訊:www.qukuaiwang.com.cn/news

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;