据比特币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
getbalances
返回一个包含所有余额的对象(mine
, untrusted_pending
以及immature
)。有关详细信息,请参阅getbalances的RPC帮助部分。新的RPC旨在替换getbalance
, getunconfirmedbalance
以及getwalletinfo
中的balance字段。这些旧的调用和字段可能在将来的版本中会被删除。(#15930,#16239)setwalletflag
设置和消除钱包flag,启用或禁用特定于现有钱包的特性,如在这些发布说明中其它地方记录的新avoid_reuse
功能。 (#13756)getblockfilter
获取指定区块的BIP158过滤器。仅当已使用 -blockfilterindex
配置选项创建区块过滤器时,才启用此RPC。(#14121)3、3 新的设置
-blockfilterindex
允许为整个区块链创建BIP158区块过滤器。过滤器将在后台创建,目前其使用会大约占用4GB的空间。注意:虽然本地用户可使用getblockfilter
RPC获得区块过滤器,但此版本的Bitcoin Core不在P2P网络上提供区块过滤器。(#14121)3、4 更新的设置
whitebind
和whitelist
现在接受一个权限列表,以提供使用指定接口或IP地址进行连接的对等方。如果没有使用地址或CIDR网络指定权限,则隐式默认权限与早期版本相同。有关可用权限的详细信息,请参见这两个选项的bitcoind -help
输出(#16248)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(图形用户界面)更改
-addresstype
配置选项更改默认地址类型。(#15711, #16497)./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更改
-enablebip61
命令行选项来启用它。BIP61拒绝消息将在未来版本的客户端中被完全删除。 (#14054)-peerbloomfilters
配置选项的默认值更改为false
。这可防止比特币Core客户端发送BIP111 NODE_BLOOM服务标志、接受BIP37 BLOOM过滤器或服务merkle区块或与BLOOM过滤器匹配的交易。而仍希望提供BLOOM过滤器支持的用户,可以将配置选项设置为true
,以重新启用对BIP111和BIP37的支持,或者使用本发布说明中其他地方描述的更新的-whitebind
和-whitelist
配置选项仅对特定对等方启用BIP37支持。在不久的将来,使用公共BIP111/BIP37节点的轻客户端,应该仍能够连接到较早版本的Bitcoin Core和手动启用BIP37支持的节点,但此类软件的开发人员,应考虑迁移到使用特定BIP37节点或替代的交易过滤系统。(#16152)3、10 杂项CLI更改
bitcoin-cli -getinfo
中的testnet
字段已重命名为chain
,现在返回BIP70(main、test、regtest)中定义的当前网络名。 (#15566)
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 配置
thread_local
的平台上,可以在日志行前面加上导致日志线程的名称。要启用此行为,请使用 -logthreadnames=1
。(#15849)4、4 网络
4、5 Mempool 和交易中继
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 开发系统更改
libminiupnpc-dev
包保持兼容。请注意,在Debian上,此软件包仍然易受CVE-2017-8798(仅限于jessie)和CVE-2017-1000494(包括jessie和stretch版)的攻击。(#15993)
有兴趣的读者可以查看原文:https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.19.0.md
感谢所有直接参与此次软件发布的开发者,他们是: (译者注:排名不分先后)