比特幣0.19.0版本Core客戶端即將正式釋出,預設啟用bech32地址格式並禁用BIP70

買賣虛擬貨幣
據比特幣Core協議首席維護者Wladimir J. van der Laan在github透露,Bitcoin Core最新版本客戶端0.19.0日前已正式完成,這一版本客戶端不僅提供了一些新的功能(例如BIP158區塊過濾器,用於替代BIP 37的Bloom過濾器),其還部分提升了比特幣的隱私特性,值得注意的是,新版本客戶端預設啟用了相容隔離見證的bech32地址格式,並預設禁用了BIP70支付請求協議。據悉,比特幣下一個重要版本客戶端 v 0.20.0,預計將於2020年5月份釋出。

以下是0.19.0版本core客戶端的具體更新說明:

比特幣0.19.0版本Core客戶端現可透過以下網址獲得:
https://bitcoin core.org/bin/bitcoin-core-0.19.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系統)。

直接從舊版本的Bitcoin Core客戶端進行升級是可能的,但如果需要遷移datadir,則可能需要一些時間。舊版本的Bitcoin Core客戶端通常是支援的。 

二、相容性

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作業系統。

此外,當macOS“dark模式”被啟用時,Bitcoin Core不會改變外觀。

執行macOS Catalina系統的使用者可能需要“右鍵單擊”,然後選擇“Open”以開啟Bitcoin Core.dmg。這是因為蘋果公司提出了新的簽名要求,而Bitcoin Core專案目前還沒有遵守這一要求。

三、顯著的更改

3、1 新使用者文件

降低記憶體(Reduce memory)建議對在記憶體有限系統上執行Bitcoin Core客戶端進行了配置調整。 (#16339)

3、2 新的RPC

1. getbalances返回一個包含所有餘額的物件(mine, untrusted_pending以及immature)。有關詳細資訊,請參閱getbalances的RPC幫助部分。新的RPC旨在替換getbalance, getunconfirmedbalance以及getwalletinfo中的balance欄位。這些舊的呼叫和欄位可能在將來的版本中會被刪除。(#15930,#16239)
2. setwalletflag 設定和消除錢包flag,啟用或禁用特定於現有錢包的特性,如在這些釋出說明中其它地方記錄的新avoid_reuse功能。 (#13756)
3. getblockfilter 獲取指定區塊的BIP158過濾器。僅當已使用 -blockfilterindex配置選項建立區塊過濾器時,才啟用此RPC。(#14121)

3、3 新的設定

-blockfilterindex允許為整個區塊鏈建立BIP158區塊過濾器。過濾器將在後臺建立,目前其使用會大約佔用4GB的空間。注意:雖然本地使用者可使用getblockfilter RPC獲得區塊過濾器,但此版本的Bitcoin Core不在P2P網路上提供區塊過濾器。(#14121)

3、4 更新的設定

1. whitebind和whitelist現在接受一個許可權列表,以提供使用指定介面或IP地址進行連線的對等方。如果沒有使用地址或CIDR網路指定許可權,則隱式預設許可權與早期版本相同。有關可用許可權的詳細資訊,請參見這兩個選項的bitcoind -help 輸出(#16248)

2. 設定自定義dbcache值的使用者,可以在不使用任何實際記憶體的情況下稍微增加設定。最近的變化減少了大約9%的記憶體使用,並使鏈式狀態計算更加準確(以前它低估了記憶體的使用)。例如,如果之前設定的值為“450”,使用大約相同的實際記憶體量,你現在可設定的值為"500"。 (#16957)

3、5 更新的RPC

注:一些主要用於測試的低level RPC更改,放到了下面的低level更改部分內容中。

sendmany不再有minconf引數。這個引數沒有很好地指定,即使錢包的幣選擇成功,也會導致RPC錯誤。想要影響幣選擇的使用者,可使用現在的-spendzeroconfchange,-limitancestorcount, -limitdescendantcount以及-walletrejectlongchains配置引數。 (#15596)

getbalance和sendtoaddress,加上新的RPC getbalances和createwallet,現在接受一個“avoid_reuse”引數,該引數控制是否應在操作中包含已經使用的地址。此外,即使尚未透過 -avoidpartialspends命令列標誌啟用此功能,當啟用avoid_reuse時,sendtoaddress也將避免部分開銷,因為不這樣做可能會在地址重用的情況下使用“錯誤”的UTXO。(#13756)

帶有include_watch only引數或includeWatching選項的RPC,現在對於只讀錢包預設為true。受影響的RPC有:getbalance, listreceivedbyaddress, listreceivedbylabel, listtransactions, listsinceblock, gettransaction, walletcreatefundedpsbt以及fundrawtransaction。 (#16383)

如果錢包標誌"avoid_reuse" 被啟用了,listunspent現在為每個輸出返回一個“reused”bool。(#13756)

getblockstats現在使用BlockUndo資料代替交易索引,使其更快,而不再依賴於 -txindex配置選項,並且所有未修剪的區塊都有此功能。(#14802)

utxoupdatepsbt現在接受一個descriptors引數,該引數將在已知時填寫輸入和輸出指令碼和Key。當提供一個描述符來顯示它們正在使用隔離見證(segwit )輸出時,P2SH-witness輸入將從UTXO集中填充。有關詳細資訊,請參閱RPC幫助文字。(#15427)

如果交易費超過配置選項-maxtxfee的值,sendrawtransaction和 testmempoolaccept將不再接受allowhighfees引數以使mempool接受失敗。當使用maxfeerate引數呼叫任何一個RPC時,現在有一個硬編碼的預設最大費率可被更改。(#15620)

除非使用配置選項-deprecatedrpc=size,否則getmempoolancestors、getmempooldescendants、getmempoolentry以及getrawmempool不再返回範圍欄位。相反,將返回新的vsize欄位和交易的虛擬大小(與其它RPC如getrawtransaction一致)。(#15637)

getwalletinfo現在包含一個scanning欄位,該欄位可為false(不掃描),也可包含錢包掃描歷史記錄區塊的持續時間和進度資訊的物件,以檢視影響其餘額的交易。(#15730)

gettransaction現在接受第三個 (布林)引數verbose。如果設定為true,則將向包含解碼交易的響應中新增新的解碼欄位。傳遞verbose時,此欄位等效於RPC decoderawtransaction或RPC getrawtransaction。 (#16185, #16866, #16873)

createwallet接受一個新的passphrase引數。如果設定,這將建立用給定密碼短語加密的新錢包。如果未設定(預設設定)或設定為空字串,則不會使用加密。(#16394)

getchaintxstats RPC 現在返回window_final_block_height的附加 key。(#16695)

getmempoolentry現在提供了一個weight欄位,其中包含BIP141中定義的交易權重。(#16647)

getnetworkinfo和getpeerinfo命令現在包含一個帶有解碼網路服務標誌的新欄位。(#16786)

getdescriptorinfo現在返回一個額外的checksum欄位,該欄位包含使用者提供的未修改描述符的校驗和。(#15986)

joinpsbts現在對結果連線的PSBT輸入和輸出順序進行無序處理。而在以前,輸入和輸出是按提供PSBT的順序新增的,這使得輸入與輸出的關聯是容易的,從而對隱私不利(譯者注:即新的joinpsbts增強了隱私保護)。

如果-walletrbf配置選項設定為true,walletcreatefundedpsbt現在會發出BIP125 費用替代法(Replace-by-Fee)訊號。(#15911)

3、6  GUI(圖形使用者介面)更改

GUI錢包現在預設提供bech32地址,使用者可以在invoice生成期間使用GUI切換更改地址型別,或者使用-addresstype配置選項更改預設地址型別。(#15711, #16497)

在0.18.0版本錢包中,./configure標誌被引入了,以允許在GUI中禁用BIP70支援(預設情況下已啟用支援)。而在0.19.0版本錢包中,此標誌現在預設為禁用。如果要在GUI中編譯支援BIP70,你可以將--enable-bip70傳遞給./configure。 (#15584)

3、7 廢棄或刪除的配置選項

-mempoolreplacement已被移除,儘管預設節點行為保持不變。此選項以前允許使用者阻止節點接受或中繼BIP125交易替換。它與繼續存在的配置選項-walletrbf不同。(#16171)

3、8 廢棄或刪除的RPC

bumpfee不再接受totalFee選項,除非指定了配置引數deprecatedrpc=totalFee,此引數將在後續版本中被完全刪除。 (#15996)
bumpfee有一個新的fee_rate選項來替代已棄用的totalFee。(#16727)
generate在Bitcoin Core 0.18版本中被棄用後,現在已被正式移除。請改用generatetoaddress RPC。 (#15492)

3、9 P2P更改

BIP 61拒絕訊息在0.18版本中被棄用,它們現在為預設禁用,但你可透過設定-enablebip61 命令列選項來啟用它。BIP61拒絕訊息將在未來版本的客戶端中被完全刪除。 (#14054)

為了消除Bitcoin Core中眾所周知的拒絕服務向量,特別是對於具有spinning disk的節點,新版本客戶端已將-peerbloomfilters配置選項的預設值更改為false。這可防止比特幣Core客戶端傳送BIP111 NODE_BLOOM服務標誌、接受BIP37 BLOOM過濾器或服務merkle區塊或與BLOOM過濾器匹配的交易。而仍希望提供BLOOM過濾器支援的使用者,可以將配置選項設定為true,以重新啟用對BIP111和BIP37的支援,或者使用本釋出說明中其他地方描述的更新的-whitebind和-whitelist配置選項僅對特定對等方啟用BIP37支援。在不久的將來,使用公共BIP111/BIP37節點的輕客戶端,應該仍能夠連線到較早版本的Bitcoin Core和手動啟用BIP37支援的節點,但此類軟體的開發人員,應考慮遷移到使用特定BIP37節點或替代的交易過濾系統。(#16152)

預設情況下,Bitcoin Core客戶端現在將建立兩個專門用於區塊中繼的額外出站連線。不會在這些連線上處理任何交易或地址資訊。這些連線旨在增加很少的額外記憶體或頻寬資源需求,但會使某些分割槽攻擊(partitioning attack)更難執行。 (#15759)

3、10 雜項CLI更改

bitcoin-cli -getinfo中的testnet欄位已重新命名為chain,現在返回BIP70(main、test、regtest)中定義的當前網路名。 (#15566)

四、低level更改

4、1 RPC

getblockchaininfo不再返回bip9_softforks物件。相反,資訊被移動到softforks物件中,另外一個type欄位描述了Bitcoin Core客戶端如何確定該軟分叉是否處於活動狀態(例如BIP9或BIP90)。有關詳細資訊,請參閱RPC幫助。(#16060)
getblocktemplate不再返回包含CSV和segwit(當前處於活動狀態的BIP9部署)的rules陣列。(#16060)
getrpcinfo現在返回一個logpath欄位,路徑為debug.log。(#15483)

4、2 測試

由-regtest命令列標誌啟用的退化測試鏈,現在要求交易在預設情況下不違反標準策略。這與主網使用的預設值相同,使在regtest測試網上測試主網行為變得更容易。請注意,預設情況下,測試網仍然允許非標準交易,並且可使用-acceptnonstdtxn命令列標誌為兩個測試鏈本地調整策略。(#15891)

4、3 配置

在預設部分中指定,但未在網路特定部分(例如測試網)中指定的設定,現在將產生一個阻止啟動的錯誤,而不僅僅是一個警告,除非網路是主網。這將防止針對主網的設定,應用於測試網或regtest測試網。 (#15629)

在支援thread_local的平臺上,可以在日誌行前面加上導致日誌執行緒的名稱。要啟用此行為,請使用 -logthreadnames=1 。(#15849)
4、4 網路

當獲取由多個對等節點宣佈的交易時,Bitcoin Core早期版本的客戶端將按接收到這些對等方的通知順序,然後依次下載交易,直到接收到該交易為止。而在新版本客戶端中,下載邏輯已更改為隨機獲取方式,並傾向於將下載請求傳送到出站對等端而不是入站對等端。這修復了入站對等方可能阻止節點獲取交易的問題。 (#14897, #15834)

如果使用者正在使用Tor隱藏服務,Bitcoin Core客戶端也將繫結到標準埠8333(即使為透明網連線配置了不同的埠),這可防止透過使用相同的非預設埠號洩漏節點身份。(#15651)

4、5 Mempool 和交易中繼

允許每個包(package)有一筆額外的單一祖先交易。以前,如果mempool中的一筆交易有25筆子代交易,或者它和它的所有子代交易都超過 101,000 vbyte,那麼作為子代交易,新接受的交易都將被忽略。現在,新客戶端將允許一筆額外的子代交易,前提是它是直接子代,並且子代交易的大小不超過10,000 vbyte。這使得像閃電網路這樣的兩方合約協議,可以為每個參與者提供一個子付(Child-Pays-For-Parent)費用的輸出,而不允許一個惡意參與者填滿整個包(package),從而防止另一個參與者花費他們的輸出。 (#15681)

輸出為v1到v16 witness版本(未來的隔離見證版本)的交易,現在被接受到mempool中,進行中繼和挖礦操作。試圖使用這些輸出仍然被政策所禁止。當這一變化被廣泛應用時,錢包和服務可以接受任何有效的bech32比特幣地址,而無需擔心未來版本的隔離見證交易支付將陷入未經確認的狀態。 (#15846)

傳統交易(沒有隔離見證輸入的交易)現在必須使用傳統編碼格式傳送,強制執行BIP144中指定的規則。(#14039)

4、5 錢包

在修剪模式下,由importwallet、importpubkey、importaddress或importprivkey RPC觸發的重新掃描(rescan)只有在區塊被修剪時才會失敗。以前當-prune被設定時,它才會失敗,此更改允許將-prune設定為高值(例如磁碟大小),而在第一個區塊被修剪之前,對任何匯入RPC的呼叫都不會失敗。(#15870)

建立費用高於-maxtxfee (預設為0.1btc)的交易時,RPC命令 walletcreatefundedpsbt和fundrawtransaction現在將失敗,而不是降低費用。請注意,feeRate引數是以每1,000 vbyte的BTC指定的,而不是以每vbyte的satoshi指定的。(#16257)

新增了一個新的錢包標誌avoid_reuse(預設為關閉),啟用它後,錢包將區分已使用和未使用的地址,並預設在幣選擇中不使用前者。當在現有錢包上設定此標誌時,需要重新掃描區塊鏈以正確標記先前使用的目的地。再加上 "避免部分支出" (在Bitcoin Core v0.17.0中新增的功能),這可以消除一個嚴重的隱私問題,即惡意使用者可透過將小額支付傳送到先前支付的地址(該地址隨後將包含在未來支付的無關輸入中)來跟蹤支出。(#13756)

4、6 開發系統更改

目前專案的開發,Python需要>=3.5版本。這包括構建系統、測試框架和linter。之前支援的最低值 (3.4版本)已經在2019年3月被棄用。(#14954)

支援的miniUPnPc API 版本,最低為10。這與Ubuntu 16.04 LTS和Debian 8 libminiupnpc-dev包保持相容。請注意,在Debian上,此軟體包仍然易受CVE-2017-8798(僅限於jessie)和CVE-2017-1000494(包括jessie和stretch版)的攻擊。(#15993)

五、0.19.0更改日誌(略)

有興趣的讀者可以檢視原文:https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.19.0.md

六、參與貢獻的開發者名單

感謝所有直接參與此次軟體釋出的開發者,他們是:     (譯者注:排名不分先後)

251
Aaron Clauson
Akio Nakamura
Alistair Mann
Amiti Uttarwar
Andrew Chow
andrewtoth
Anthony Towns
Antoine Riard
Aseem Sood
Ben Carman
Ben Woosley
bpay
Carl Dong
Carnhof Daki
Chris Capobianco
Chris Moore
Chuf
clashic
clashicly
Cory Fields
Daki Carnhof
Dan Gershony
Daniel Edgecumbe
Daniel Kraft
Daniel McNally
darosior
David A. Harding
David Reikher
Douglas Roark
Elichai Turkel
Emil
Emil Engler
ezegom
Fabian Jahr
fanquake
Felix Weis
Ferdinando M. Ametrano
fridokus
gapeman
GChuf
Gert-Jaap Glasbergen
Giulio Lombardo
Glenn Willen
Graham Krizek
Gregory Sanders
grim-trigger
gwillen
Hennadii Stepanov
Jack Mallers
James Hilliard
James O'Beirne
Jan Beich
Jeremy Rubin
JeremyRand
Jim Posen
John Bampton
John Newbery
Jon Atack
Jon Layton
Jonas Schnelli
Jonathan "Duke" Leto
João Barbosa
Joonmo Yang
Jordan Baczuk
Jorge Timón
Josu Goñi
Julian Fleischer
Karl-Johan Alm
Kaz Wesley
keepkeyjon
Kirill Fomichev
Kristaps Kaupe
Kristian Kramer
Larry Ruane
Lenny Maiorani
LongShao007
Luca Venturini
lucash-dev
Luke Dashjr
marcoagner
MarcoFalke
marcuswin
Martin Ankerl
Martin Zumsande
Matt Corallo
MeshCollider
Michael Folkson
Miguel Herranz
Nathan Marley
Neha Narula
nicolas.dorier
Nils Loewen
nkostoulas
orient
Patrick Strateman
Peter Bushnell
Peter Wagner
Pieter Wuille
practicalswift
qmma
r8921039
RJ Rybarczyk
Russell Yanofsky
Samuel Dobson
Sebastian Falbesoner
setpill
shannon1916
Sjors Provoost
soroosh-sdi
Steven Roose
Suhas Daftuar
tecnovert
THETCR
Tim Ruffing
Tobias Kaderle
Torkel Rogstad
Ulrich Kempken
whythat
William Casarin
Wladimir J. van der Laan
zenosage

免責聲明:

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

推荐阅读

;