根據(jù)Bitcoin Core開發(fā)團隊的計劃,0.18.0版本的比特幣core軟件將于4月3日左右正式發(fā)布,截至發(fā)稿時,其代碼庫的完成度已達到了96%。
以下為0.18.0版本發(fā)布草稿,讀者可提前了解到該版本軟件的更新內(nèi)容。
(注:這只是一個臨時版的說明,正式發(fā)布時可能會稍有不同)
讀者可訪問Bitcoin Core 0.18.0 版本客戶端代碼庫:
https://bitcoincore.org/bin/bitcoin-core-0.18.0/
這是比特幣的重大更新版本,更新內(nèi)容包括新功能、各種bug修復(fù)、性能提升以及交易更新。
開發(fā)者可使用GitHub的問題跟蹤器上報錯誤:
https://github.com/bitcoin/bitcoin/issues
若要接受安全及更新通知,請訂閱:
https://bitcoincore.org/en/list/announcements/join/
如何更新
如果你運行的是舊版本客戶端,請關(guān)閉它,直至其完全關(guān)閉(舊版本可能需要幾分鐘的時間),然后再運行安裝程序(Windows)或拷貝覆蓋至/Applications/Bitcoin-Qt(Mac系統(tǒng))或bitcoind/bitcoin-qt(Linux系統(tǒng))。
當(dāng)你第一次運行0.15.0或更新版本的客戶端時,你的鏈態(tài)數(shù)據(jù)庫將轉(zhuǎn)換成一種新的格式,這取決于你機器的速度,所花費的時間從幾分鐘到半小時不等。
注意,區(qū)塊數(shù)據(jù)庫格式在0.8.0版本中也發(fā)生了變化,并且在0.8版本之前的客戶端到 0.15.0版本的客戶端并沒有自動升級代碼。在0.7.x版本或更早版本的客戶端,無法實現(xiàn)直接升級(需重新下載區(qū)塊鏈)。不過,和往常一樣的是,舊版本的錢包仍然是支持的。
兼容性
Bitcoin Core客戶端已在多個操作系統(tǒng)上進行了廣泛測試,其中包括Linux 內(nèi)核操作系統(tǒng)、macOS 10.10+、Windows 7以及更新的操作系統(tǒng)。不建議在不支持的系統(tǒng)上使用Bitcoin Core客戶端。
Bitcoin Core在其他類似Unix系統(tǒng)的OS上也是可工作的, 但測試相對較少。
需要注意的是,macOS操作系統(tǒng)低于10.10版本,就無法運行高于0.17.0版本的Bitcoin Core客戶端,這是因為0.17.0是使用Qt 5.9.x構(gòu)建的,它并不支持低于10.10版本的macOS操作系統(tǒng)。
除了以前支持的CPU平臺之外,這個版本的預(yù)編譯發(fā)行版還為RISC-V平臺提供了二進制文件。
如果你使用位于contrib/init/bitcoind.service的systemd單元配置文件,則已將其更改為使用/var/lib/bitcoind作為數(shù)據(jù)目錄,而不是使用~bitcoin/.bitcoin。切換到新的配置文件時,請確保/var/lib/bitcoind所在的文件系統(tǒng)有足夠的空間(使用df-h/var/lib/bitcoind進行檢查),并可以選擇復(fù)制現(xiàn)有的數(shù)據(jù)目錄。有關(guān)詳細信息,請參閱系統(tǒng)初始化文件部分。
顯著的更改
挖礦
如果未指定隔離見證(segwit)規(guī)則,則對getblocktemplate的調(diào)用將失敗。沒有隔離見證(segwit)指定而調(diào)用getblocktemplate,幾乎肯定是一種錯誤配置,因為這樣做會降低礦工的回報。失敗的調(diào)用將生成一條說明如何啟用隔離見證(segwit)規(guī)則的錯誤信息。
配置選項更改
1. 如果在配置文件中使用了無法識別的section名稱,則會提示警告??勺R別的section有[test]、 [main]以及[regtest]。
2. 有四個新選項可用于配置ZMQ在刪除附加消息之前將在memory中排隊的最大消息數(shù)。默認值為1000,這與以前的版本相同。有關(guān)詳細信息,請參閱ZMQ文檔。
3. enablebip61選項(Bitcoin Core 0.17.0中引入)用于切換BIP61拒絕消息的發(fā)送。拒絕消息在P2P網(wǎng)絡(luò)上沒有應(yīng)用,并且只被記錄以供大多數(shù)網(wǎng)絡(luò)節(jié)點調(diào)試。默認情況下,該選項現(xiàn)在將關(guān)閉,以提高隱私和安全性,并減少上傳使用。出于本地網(wǎng)絡(luò)調(diào)試目的,用戶可顯式打開該選項。
4. rpcallowip選項不能再用于自動監(jiān)聽所有網(wǎng)絡(luò)接口。相反,rpcbind參數(shù)還必須用于指定要偵聽的IP地址。由于通過公共網(wǎng)絡(luò)連接偵聽RPC命令是不安全的,應(yīng)該禁用該命令,因此,如果用戶選擇了這樣的配置,現(xiàn)在將提示警告。如果需要公開RPC以便使用Docker之類的工具,請確保只將RPC綁定到本地主機,例如Docker run[…]-p 127.0.0.1:8332:8332。
5. 如果配置文件中設(shè)置的密碼包含哈希字符 (#),rpcpassword選項現(xiàn)在會導(dǎo)致啟動錯誤,因為哈希字符是用于密碼還是用作注釋,這是不明確的。
6. WhiteListforceRelay選項用于中繼來自白名單對等節(jié)點的交易,即使在未被mempool接受時也是如此。此選項現(xiàn)在默認為關(guān)閉,因此策略和斷開/禁止行為的更改,不會導(dǎo)致白名單中的另一個節(jié)點被對等方刪除。用戶仍然可以使用命令行選項顯式地啟用此行為(將來可能會棄用此功能)。
系統(tǒng)初始化文件
系統(tǒng)初始化文件 (contrib/init/bitcoind.service) 已更改為使用/var/lib/bitcoind作為數(shù)據(jù)目錄,而不是~bitcoin/.bitcoin。這一變化使Bitcoin Core 變得與其他服務(wù)更加一致,并使得系統(tǒng)初始化文件與現(xiàn)有的Upstart和OpenRC configs更加一致。
配置、PID和數(shù)據(jù)目錄現(xiàn)在完全由SystemD管理,它將負責(zé)它們的創(chuàng)建、權(quán)限等。有關(guān)詳細信息,請參閱systemd.exec (5) ;
在contrib/init下使用提供的初始化文件時,覆蓋/etc/bitcoin/bitcoin.conf中的datadir選項將無效。這是因為初始化文件中指定的命令行參數(shù)優(yōu)先于/etc/bitcoin/bitcoin.conf中指定的選項。
文檔
1. 關(guān)于JSON-RPC接口的一個新的簡短文檔描述了一些情況,其中一個RPC的結(jié)果,可能包含來自不同子系統(tǒng)的數(shù)據(jù)之間的不一致,例如錢包狀態(tài)和mempool狀態(tài)。在REST接口文檔中添加了一個說明,說明應(yīng)用了相同的規(guī)則。
2. 有關(guān)如何保護該接口的更多信息,將添加到JSON-RPC文檔中。
3. 關(guān)于bitcoin.conf文件的一個新文檔,描述了如何使用它來配置 Bitcoin Core。
4. 新的文檔介紹了Bitcoin Core的BIP174 部分簽名比特幣交易(PSBT)接口,該接口用于允許多個程序協(xié)作創(chuàng)建、簽名和廣播新的交易。這對于離線(冷)錢包、多重簽名錢包、coinjoin實現(xiàn)以及很多其他需要兩個或多個程序交互以生成完整交易的情況非常有用。
5. 輸出腳本描述符文檔已更新,其中包含有關(guān)此仍在開發(fā)中語言的新功能信息。該語言目前在scantxstart RPC中使用,預(yù)計將適應(yīng)其他rpc和底層錢包結(jié)構(gòu)。
構(gòu)建系統(tǒng)更改
1. 可以將一個新的--disable-bip70選項傳遞給。/configure,以防止Bitcoin-Qt在支持BIP70支付協(xié)議的情況下構(gòu)建或鏈接libssl。由于支付協(xié)議在過去將Bitcoin Core暴露于libssl漏洞,鼓勵不需要bip70支持的構(gòu)建者,使用此選項來減少未來漏洞暴露所帶來的傷害。
2. Qt的最低要求版本(構(gòu)建GUI時)已從5.2增加到5.5.1。
新的RPC
1. getnodeaddresses RPC返回此節(jié)點已知的對等地址。它可以用來查找不使用DNS種子器連接到的節(jié)點。
2. listwalletdir RPC返回錢包目錄中的錢包列表(默認wallet目錄或由-walletdir參數(shù)配置的目錄)。
3. getrpcinfo返回RPC服務(wù)器的運行時間詳細信息。目前,它返回一個當(dāng)前活動命令的數(shù)組,以及它們已經(jīng)運行了多長時間。
4. deriveaddresses返回與輸出描述符對應(yīng)的一個或多個地址。
更新的RPC
注意:下面的低level RPC更改部分,描述了一些主要用于測試的低level RPC更改。
1. getpeerinfo RPC現(xiàn)在返回一個額外的minfeefilter字段,該字段設(shè)置為對等節(jié)點的bip133費用過濾器。你可以使用它來檢測你的對等節(jié)點是否愿意接受低于默認最低中繼費的交易。
2. mempool RPC,例如getrawmempool ,在verbose=true的情況下,現(xiàn)在返回一個額外的“bip125可替換”值,指示交易是否選擇請求節(jié)點和礦工將其替換為使用相同輸入的更高費率交易。
3. SettXFee RPC以前會靜默地忽略將費用設(shè)置為低于允許最小值的嘗試?,F(xiàn)在它會發(fā)出警告,特殊值“0”仍可用于請求最小值。
4. getaddressinfo RPC現(xiàn)在提供一個ischange字段,指示錢包是否使用了找零輸出中的地址。
5. importmulti RPC已更新為支持P2WSH、 P2WPKH、 P2SH-P2WPKH以及P2SH-P2WSH。對P2WSH 和P2SH-P2WSH 的請求,接受一個附加的witnessscript參數(shù)。
6. importmulti RPC現(xiàn)在為每個請求返回一個額外的warnings字段,其中包含一組字符串,用于解釋字段被忽略或不一致的時間(如果有的話)。
7. 當(dāng)Bitcoin Core足夠了解地址的scriptPubKey、可選redeemScript以及可選witnessScript,以便錢包能夠生成發(fā)送到該地址的未簽名輸入支出資金時,getaddressinfo RPC現(xiàn)在返回一個額外的solvable布爾字段。
8. getaddressinfo、listunspent以及scantxoutset RPC現(xiàn)在返回一個附加的desc字段,該字段包含一個輸出描述符,其中包含地址的所有密鑰路徑和簽名信息(私鑰除外)。只有當(dāng)?shù)刂房山鈺r,getAddressInfo和listunPent才會返回desc字段。
9. importprivkey RPC 將為要導(dǎo)入的私鑰對應(yīng)的地址或公鑰保留以前設(shè)置的標(biāo)簽。例如,如果你在早期版本的Bitcoin Core中導(dǎo)入了標(biāo)簽為“冷錢包”的只讀地址,隨后導(dǎo)入私鑰將默認為將地址標(biāo)簽重置為默認的空字符串標(biāo)簽(“”)。在此版本中,將保留以前的“Cold Wallet”標(biāo)簽。如果在調(diào)用importprivkey時可選擇指定除默認值之外的任何標(biāo)簽,則新標(biāo)簽將應(yīng)用于該地址。
10. 有關(guān)對GetBlockTemplate的更改,請參閱挖礦部分。
11. 當(dāng)區(qū)塊從未通過此節(jié)點上的RPC進行裝配時,getmininginfo RPC現(xiàn)在會省略currentblockweight和currentblocktx。
12. getrawtransaction RPC和REST端點不再檢查交易的未使用UTXO集。其余行為如下:1.如果提供了區(qū)塊哈希,請檢查相應(yīng)的塊。2。如果沒有提供區(qū)塊哈希,請檢查mempool。3. 如果沒有提供區(qū)塊哈希,但啟用了 txindex,則還應(yīng)檢查txindex。
13. unloadwallet RPC 現(xiàn)在是同步的,這意味著在完全卸載錢包之前,它不會返回。
14. importmulti RPC 現(xiàn)在支持從描述符導(dǎo)入地址??梢蕴峁癲esc”參數(shù),而不是請求中的“scriptpubkey”,以及范圍描述符的可選范圍,以指定要導(dǎo)入范圍的開始和結(jié)束。關(guān)于描述符的更多信息,可以在這里找到。
15. listunspent RPC 現(xiàn)在已經(jīng)被修改,以便它返回witnessScript,即P2WSH或P2SH-P2WSH輸出時的見證腳本。
16. createwallet RPC 現(xiàn)在有一個可選的空白參數(shù),它可用于創(chuàng)建空白錢包??瞻族X包沒有任何密鑰或HD種子。如果bitcoin core客戶端低于0.18版本,則無法打開它們。一旦一個空白錢包有一個HD種子集(通過使用sethdseed)或私鑰、腳本地址和其他已被導(dǎo)入的只讀東西,錢包就不再是空白的,其可以在0.17.x中打開。加密一個空白錢包也會為它設(shè)置一個HD種子。
已棄用或刪除的RPC
1. signrawtransaction RPC 在0.17.0版本中被否決,并隱藏在特殊配置選項之后,現(xiàn)在已經(jīng)被刪除了。
2. “account”API在v0.17中被否決后,現(xiàn)在已被刪除?!甽abel’ API 在v0.17中被引入作為賬戶的替換。有關(guān)從“帳戶”API到“標(biāo)簽”API更改的完整說明,請參閱v0.17的發(fā)布說明。
3. addwitnessaddress RPC在0.16.0版中被否決后,現(xiàn)在已被刪除。
4. 錢包的generate RPC方法已被棄用,并將在隨后的主要版本中被完全刪除。此RPC僅用于測試,但其實現(xiàn)跨越多個子系統(tǒng)(錢包和挖礦),因此不推薦簡化 wallet-node接口。使用generate進行測試目的的項目,應(yīng)轉(zhuǎn)換為使用generatetoaddress RPC,后者不需要或使用錢包組件。使用getnewaddress RPC返回的地址調(diào)用generatetoaddress,提供與舊generate RPC相同的功能。要繼續(xù)在此版本中使用generate,請使用-deprecatedrpc=generate配置選項重新啟動bitcoind。
剩余的變化
添加了一個新的 /rest/blockhashbyheight/ 端點,用于根據(jù)區(qū)塊的高度,獲取當(dāng)前最佳區(qū)塊鏈中區(qū)塊的哈希。
圖形用戶界面(GUI)
1. 在現(xiàn)有文件、設(shè)置和幫助菜單旁邊,會添加一個新的窗口菜單。其他打開新窗口菜單中的幾個項,已被移動到此新窗口菜單。
2. 在“發(fā)送”選項卡中,“僅支付所需費用”復(fù)選框已被刪除。相反,用戶可簡單地將自定義費率字段中的值降低到節(jié)點配置的最小中繼費用。
3. 在Overview選項卡中,如果錢包是使用CreateWallet RPC創(chuàng)建的,并且disable_private_keys參數(shù)設(shè)置為true,則只讀的余額將是顯示的唯一余額。
4. 如果使用大于10.11的Macosx Min版本編譯,則 launch-on-startup選項在MacOS上將不再可用(使用CXXFLAGS=“-mmacosx-version-min=10.11” CFLAGS=“-mmacosx-version-min=10.11”設(shè)置部署SDK版本)
工具
一個新的bitcoin-wallet工具現(xiàn)在與Bitcoin Core的其他可執(zhí)行文件一起分發(fā)。不需要使用任何RPC,此工具當(dāng)前可以創(chuàng)建新的錢包文件或顯示有關(guān)現(xiàn)有錢包的一些基本信息,例如錢包是否加密、是否使用HD種子、包含多少交易以及有多少地址簿條目。
低level更改
RPC
(TODO pieter: 感覺此部分可與早期的RPC更改部分合并)
1. submitblock RPC 現(xiàn)在總是返回拒絕一個無效塊的基本原因,并且只返回它已接受的有效塊的“重復(fù)品”。
2. 新的submitheader RPC允許獨立于區(qū)塊提交區(qū)塊頭。這可能只對測試有用。
3. signrawtransactionwithkey和signrawtransactionwithwallet RPC已被修改,以便它們也可以選擇接受witnessScript,即P2WSH或P2SH-P2WSH輸出情況下的見證腳本。這與對 listunspent的更改兼容。
4. 通過importmulti導(dǎo)入的具有密鑰來源信息的描述符,將其密鑰來源信息存儲在錢包中,以用于創(chuàng)建PSBTs
5. 如果walletprocesspsbt和walletcreatefundedpsbt的bip32derivs都設(shè)置為true,但公鑰的密鑰元數(shù)據(jù)尚未更新,則該密鑰將具有一個派生路徑,如同它只是一個獨立的密鑰一樣(即,沒有派生路徑,其主指紋是其自身)。
配置
在0.16版本客戶端中, -usehd 配置選項被刪除了,從那個版本開始,所有新創(chuàng)建的錢包都是層次確定性(HD)錢包。此版本使指定-usehd 成為無效的配置選項。
網(wǎng)絡(luò)
此版本允許節(jié)點因行為錯誤(例如發(fā)送無效數(shù)據(jù))而自動斷開連接的對等端,重新連接到你的節(jié)點(如果你有未使用的傳入連接插槽)。如果你的插槽已滿,則會斷開行為不正常節(jié)點的連接,以便為沒有問題歷史的節(jié)點騰出空間(除非行為不正常的節(jié)點以其他方式幫助你的節(jié)點。此前,Bitcoin Core在一段時間內(nèi)(默認為1天)禁止了行為不端對等節(jié)點的IP地址,這很容易被擁有多個IP地址的攻擊者規(guī)避。如果手動禁止某個對等節(jié)點,例如使用 setban RPC,則來自該對等節(jié)點的所有連接仍將被拒絕。
錢包
第一次使用HD種子時,需要升級密鑰元數(shù)據(jù)。對于未加密的錢包,這將在錢包加載時發(fā)生。對于加密錢包,這將在錢包首次解鎖時發(fā)生。
安全性
這個版本將OpenSSL中使用的隨機數(shù)生成器(RNG)更改為Bitcoin Core自己的實現(xiàn)(盡管Bitcoin Core收集的熵,被輸出到OpenSSL,然后在程序需要強隨機性時重新讀?。_@使得Bitcoin Core更接近于不再依賴于OpenSSL,這是一種過去引起安全問題的依賴關(guān)系。
評論
查看更多