比特币核心Bitcoin Core0.19.0.1发布

比特币核心版本0.19.0.1现在可从以下位置获得:https://bitcoincore.org/bin/bitcoin-core-0.19.0.1/

此版本包括新功能,各种错误修复和性能改进,以及更新的翻译。

请使用GitHub上的问题跟踪器报告错误:
https://github.com/bitcoin/bitcoin/issues

要接收安全和更新通知,请订阅:https://bitcoincore.org/en/list/announcements/join/

1,如何升级到Bitcoin Core0.19.0.1

如果您运行的是旧版本,请关闭它。 等到它完全关闭(对于较旧的版本可能要花几分钟),然后运行安装程序(在Windows上),或者仅通过/ Applications / Bitcoin-Qt(在Mac上)或bitcoind / bitcoin-qt(在Linux上)进行复制 )。

可以从已经达到其EOL的Bitcoin Core版本直接进行升级,但是如果需要迁移datadir,则可能需要一些时间。 通常支持比特币核心的旧钱包版本。

2,Bitcoin Core0.19.0.1兼容性

在使用Linux内核,macOS 10.10+和Windows 7及更高版本的操作系统上,Bitcoin Core受支持并受到了广泛测试。 不建议在不受支持的系统上使用Bitcoin Core。

Bitcoin Core也应该可以在大多数其他类似Unix的系统上运行,但在它们上的测试频率并不高。

从0.17.0开始,不再支持macOS <10.10。 0.17.0是使用Qt 5.9.x构建的,它不支持10.10之前的macOS版本。 此外,当激活macOS“暗模式”时,Bitcoin Core尚未更改外观。

运行macOS Catalina的用户可能需要“右键单击”,然后选择“打开”以打开Bitcoin Core .dmg。 这是由于Apple提出了新的签名要求,Bitcoin Core项目尚未完全遵守。

3,Bitcoin Core0.19.0.1版本的明显改进

新用户文档
减少内存建议调整配置,以在内存有限的系统上运行Bitcoin Core。 (#16339)

新的RPC
getbalances返回具有所有余额(mine,untrusted_pending和不成熟)的对象。有关详细信息,请参考getbalances的RPC帮助。新的RPC旨在替换getbalance,getunconfirmedbalance和getwalletinfo中的balance字段。这些旧的调用和字段可能会在将来的版本中删除。 (#15930,#16239)

setwalletflag设置和取消设置启用或禁用特定于该现有钱包的功能的钱包标志,例如这些发行说明中其他地方记录的新的void_reuse功能。 (#13756)

getblockfilter获取指定块的BIP158过滤器。仅当使用-blockfilterindex配置选项创建了块过滤器时,才启用此RPC。 (#14121)

新设定
-blockfilterindex支持为整个区块链创建BIP158块过滤器。过滤器将在后台创建,当前使用约4 GiB的空间。注意:尽管本地用户可以使用getblockfilter RPC获取块过滤器,但是此版本的Bitcoin Core不能在P2P网络上提供块过滤器。 (#14121)
更新设置
whitebind和whitelist现在接受权限列表,以提供使用指定接口或IP地址的对等连接。如果未使用地址或CIDR网络指定权限,则隐式默认权限与以前的版本相同。有关可用权限的详细信息,请参见bitcoind -help输出以获取这两个选项。 (#16248)

设置自定义dbcache值的用户可以稍微增加其设置,而无需使用更多实际内存。最近的更改将内存使用量减少了大约9%,并使chainstate记帐更加准确(以前低估了内存的使用)。例如,如果您之前将值设置为“ 450”,则现在可以将值“ 500”设置为使用大约相同的实际内存量。 (#16957)

更新的RPC
注意:下面的“低级更改”部分介绍了一些主要对测试有用的低级RPC更改。

sendmany不再具有minconf参数。这个参数没有得到很好的说明,即使钱包的硬币选择成功,也会导致RPC错误。想要影响硬币选择的用户可以使用现有的-spendzeroconfchange,-limitancestorcount,-limitdescendantcount和-walletrejectlongchains配置参数。 (#15596)

getbalance和sendtoaddress,再加上新的RPC getbalances和createwallet,现在接受一个“ avoid_reuse”参数,该参数控制是否应在操作中包括已使用的地址。另外,即使尚未通过-avoidpartialspends命令行标志启用此功能,即使启用了void_reuse,sendtoaddress也将避免部分花费,因为如果不这样做,则可能会冒用“错误的” UTXO来处理地址重用的情况。 (#13756)

对于仅监视钱包,具有include_watchonly参数或includeWatching选项的RPC现在默认为true。受影响的RPC是:getbalance,按地址接收list,按标签接收list,列表事务,listinceblock,gettransaction,walletcreatefundedpsbt和fundrawtransaction。 (#16383)

如果启用了钱包标记“ avoid_reuse”,则listunspent现在为每个输出返回一个“重用”布尔值。 (#13756)

现在,getblockstats使用BlockUndo数据而不是事务索引,从而使其速度更快,不再依赖于-txindex配置选项,并且对所有未修剪的块都起作用。 (#14802)

utxoupdatepsbt现在接受一个描述符参数,该参数将在已知时填写输入和输出脚本以及键。当提供描述符以表明他们正在使用隔离见证输出时,将从UTXO集中填充P2SH见证输入。有关完整的详细信息,请参见RPC帮助文本。 (#15427)

如果交易费用超过配置选项-maxtxfee的值,则sendrawtransaction和testmempoolaccept不再接受allowhighfees参数以使mempool接受失败。现在有一个硬编码的默认最大费用,可以在使用maxfeerate参数调用任一RPC时更改。 (#15620)

除非使用配置选项-deprecatedrpc = size,否则getmempoolancestors,getmempooldescendant,getmempoolentry和getrawmempool不再返回size字段。而是返回带有事务的虚拟大小的新vsize字段(与其他RPC(如getrawtransaction)一致。 (#15637)

现在,getwalletinfo包含一个扫描字段,该字段为false(不扫描)或一个对象,其中包含有关钱包的历史记录区块扫描影响其余额的交易的持续时间和进度的信息。 (#15730)

gettransaction现在接受第三个(布尔值)详细参数。如果设置为true,则将新的解码字段添加到包含解码事务的响应中。传递详细信息时,此字段等效于RPC解码器awtransaction或RPC getrawtransaction。 (#16185,#16866,#16873)

createwallet接受一个新的密码短语参数。如果设置,将创建使用给定密码加密的新钱包。如果未设置(默认)或设置为空字符串,则不会使用加密。 (#16394)

getchaintxstats RPC现在返回window_final_block_height的附加键。 (#16695)

现在,getmempoolentry提供了一个权重字段,其中包含BIP141中定义的事务权重。 (#16647)

现在,getnetworkinfo和getpeerinfo命令包含带有已解码网络服务标志的新字段。 (#16786)

getdescriptorinfo现在返回一个额外的校验和字段,其中包含用户提供的未修改描述符的校验和(即,在对描述符字段进行规范化之前)。 (#15986)

joinpsbts现在可以将生成的已加入PSBT的输入和输出顺序打乱。以前,按提供PSBT的顺序添加了输入和输出。这使得将输入与输出相关联变得容易,这代表了隐私泄漏。 (#16512)

如果-walletrbf配置选项设置为true,walletcreatefundedpsbt现在会发出BIP125按费用替换的信号。 (#15911)

GUI更改
现在,GUI钱包默认提供了bech32地址。用户可以使用GUI切换在发票生成期间更改地址类型,或者可以使用-addresstype配置选项更改默认地址类型。 (#15711,#16497)

在0.18.0中,引入了./configure标志以允许在GUI中禁用BIP70支持(默认情况下已启用支持)。在0.19.0中,现在默认情况下禁用此标志。如果要在GUI中使用BIP70支持来编译Bitcoin Core,则可以将–enable-bip70传递给./configure。 (#15584)

不建议使用或删除的配置选项
-mempoolreplacement已删除,尽管默认节点行为保持不变。以前,该选项允许用户阻止节点接受或中继BIP125事务替换。这与其余的配置选项-walletrbf不同。 (#16171)

不建议使用或删除的RPC
除非指定了配置参数deprecatedrpc = totalFee,否则bumpfee不再接受totalFee选项。此参数将在后续版本中完全删除。 (#15996)

umpfee具有新的fee_rate选项,以代替已过时的totalFee。 (#16727)

在Bitcoin Core 0.18中弃用了generate之后,现在将其删除。请改使用generatetoaddress RPC。 (#15492)

P2P变更
v0.18中已弃用BIP 61拒绝消息。现在默认情况下禁用它们,但是可以通过设置-enablebip61命令行选项来启用它们。 BIP 61拒绝消息将在比特币核心的未来版本中完全删除。 (#14054)

为了消除Bitcoin Core中众所周知的拒绝服务矢量,尤其是对于磁盘旋转的节点,-peerbloomfilters配置选项的默认值已更改为false。这可以防止比特币核心发送BIP111 NODE_BLOOM服务标志,接受BIP37布隆过滤器或提供与布隆过滤器匹配的Merkle块或交易。仍希望提供布隆过滤器支持的用户可以使用这些发行说明中其他地方介绍的更新的-whitelist和-whitebind配置选项,将配置选项设置为true以重新启用BIP111和BIP37支持,或者仅对特定的对等方启用BIP37支持。 。在不久的将来,使用公共BIP111 / BIP37节​​点的轻量级客户端仍应能够连接到较旧版本的Bitcoin Core和已手动启用BIP37支持的节点,但是此类软件的开发人员应考虑迁移到使用特定的BIP37节​​点或替代交易过滤系统。 (#16152)

默认情况下,Bitcoin Core现在将另外建立两个专门用于块中继的出站连接。这些连接上不会处理任何事务或地址消息。这些连接旨在增加一点额外的内存或带宽资源需求,但应该使某些分区攻击更加难以执行。 (#15759)

其他CLI更改
bitcoin-cli -getinfo中的testnet字段已重命名为chain,现在返回BIP70中定义的当前网络名称(main,test,regtest)。 (#15566)

4,Low-level修改

RPC
getblockchaininfo不再返回bip9_softforks对象。取而代之的是,信息已移至softforks对象中,另外一个类型字段描述了Bitcoin Core如何确定该软叉是否处于活动状态(例如BIP9或BIP90)。有关详细信息,请参见RPC帮助。 (#16060)

getblocktemplate不再返回包含CSV和segwit(当前处于活动状态的BIP9部署)的规则数组。 (#16060)

现在,getrpcinfo返回一个logpath字段,其中包含debug.log的路径。 (#15483)

测验
现在,通过-regtest命令行标志启用的回归测试链要求缺省情况下事务不违反标准策略。这是用于mainnet的默认值,并且使在regtest上测试mainnet行为更加容易。请注意,默认情况下,testnet仍允许使用非标准tx,并且可以使用-acceptnonstdtxnn命令行标志针对两个测试链对策略进行本地调整。 (#15891)

组态
除非网络是主网,否则在默认部分中指定但在特定于网络的部分(例如testnet)中未指定的设置现在将产生阻止启动的错误,而不仅仅是警告。这样可以防止将用于mainnet的设置应用于testnet或regtest。 (#15629)

在支持thread_local的平台上,日志行可以使用引起日志的线程名称作为前缀。要启用此行为,请使用-logthreadnames = 1。 (#15849)

网络
当获取多个对等方宣布的交易时,早期版本的Bitcoin Core会顺序尝试从每个宣布对等方下载该交易,直到接收到该交易为止(以接收到这些对等方的公告的顺序)。在此版本中,下载逻辑已更改,以使对等端之间的获取顺序随机化,并且比向内对等端更喜欢向外向对等端发送下载请求。这解决了入站对等方可能阻止节点进行事务处理的问题。 (#14897,#15834)

如果使用了Tor隐藏服务,则即使为Clearnet连接配置了其他端口,Bitcoin Core也将绑定到标准端口8333。这样可以防止通过使用相同的非默认端口号泄漏节点标识。 (#15651)

内存池和事务中继
每个包允许一个额外的单祖先事务。以前,如果内存池中的事务有25个后代,或者该事务及其所有后代都超过101,000 vbytes,则任何新接收的也是后代的事务都将被忽略。现在,将允许一个额外的后代,前提是它是直接后代(子代),并且子代的大小为10,000 vbytes或更小。这样,闪电网络之类的两方合同协议就可以为每个参与者提供他们可以立即花费以支付父母付费用(CPFP)费用的输出,而不会允许一个恶意参与者填写整个软件包,从而防止其他参与者花费他们的产出。 (#15681)

现在,将支付为v1到v16见证版本(未来隔离见证版本)的输出的事务接受到内存池中,进行中继和挖掘。尝试花费这些产出仍然被政策禁止(“非标准”)。广泛部署此更改后,钱包和服务可以接受任何有效的bech32比特币地址,而不必担心支付未来隔离见证版本的交易将处于未确认状态。 (#15846)

现在必须使用旧版编码格式发送旧式事务(无隔离见证输入的事务),并强制执行BIP144中指定的规则。 (#14039)

钱包
在修剪模式下,仅当修剪块后,由importwallet,importpubkey,importaddress或importprivkey RPC触发的重新扫描才会失败。以前,在设置-prune时它将失败。此更改允许将-prune设置为较高的值(例如,磁盘大小),而在修剪第一个块之前,对任何导入RPC的调用都不会失败。 (#15870)

当创建费用高于-maxtxfee(默认值为0.1 BTC)的交易时,RPC命令walletcreatefundedpsbt和fundrawtransaction现在将失败,而不是舍入费用。请注意,feeRate参数是在BTC中每1,000个vbyte指定的,而不是satoshi(每个vbyte)指定的。 (#16257)

添加了新的钱包标志void_reuse(默认关闭)。启用后,钱包将区分已使用和未使用的地址,默认情况下在硬币选择中不使用前者。在现有钱包上设置此标志时,需要重新扫描区块链以正确标记以前使用的目的地。与“避免部分支出”(在Bitcoin Core v0.17.0中添加)一起,可以消除严重的隐私问题,在这种情况下,恶意用户可以通过向先前付款的地址发送小额付款来跟踪支出,该地址随后将包含在不相关的输入中未来的付款。 (#13756)

编译系统变更
现在,项目的所有方面都需要Python> = 3.5。这包括构建系统,测试框架和linter。先前支持的最低(3.4)是2019年3月的EOL。(#14954)

支持的最低miniUPnPc API版本设置为10。这保持了与Ubuntu 16.04 LTS和Debian 8 libminiupnpc-dev软件包的兼容性。请注意,在Debian上,此软件包仍易受CVE-2017-8798(仅适用于jessie)和CVE-2017-1000494(均适用于jessie和拉伸)的漏洞。 (#15993)