release-notes-0.20.0.md raw

0.20.0 Release Notes ====================

Bitcoin Core version 0.20.0 is now available from:

<https://bitcoincore.org/bin/bitcoin-core-0.20.0/>

This release includes new features, various bug fixes and performance improvements, as well as updated translations.

Please report bugs using the issue tracker at GitHub:

<https://github.com/bitcoin/bitcoin/issues>

To receive security and update notifications, please subscribe to:

<https://bitcoincore.org/en/list/announcements/join/>

How to Upgrade ==============

If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes in some cases), then run the installer (on Windows) or just copy over /Applications/Bitcoin-Qt (on Mac) or bitcoind/bitcoin-qt (on Linux).

Upgrading directly from a version of Bitcoin Core that has reached its EOL is possible, but it might take some time if the data directory needs to be migrated. Old wallet versions of Bitcoin Core are generally supported.

Compatibility ==============

Bitcoin Core is supported and extensively tested on operating systems using the Linux kernel, macOS 10.12+, and Windows 7 and newer. Bitcoin Core should also work on most other Unix-like systems but is not as frequently tested on them. It is not recommended to use Bitcoin Core on unsupported systems.

From Bitcoin Core 0.20.0 onwards, macOS versions earlier than 10.12 are no longer supported. Additionally, Bitcoin Core does not yet change appearance when macOS "dark mode" is activated.

Known Bugs ==========

The process for generating the source code release ("tarball") has changed in an effort to make it more complete, however, there are a few regressions in this release:

install autotools and run ./autogen.sh before you can run ./configure. This is the same as when checking out from git.

BITCOIN_GENBUILD_NO_GIT=1 make.

Notable changes ===============

P2P and network changes


Removal of BIP61 reject network messages from Bitcoin Core

The -enablebip61 command line option to enable BIP61 has been removed. (#17004)

This feature has been disabled by default since Bitcoin Core version 0.18.0. Nodes on the network can not generally be trusted to send valid messages (including reject messages), so this should only ever be used when connected to a trusted node. Please use the alternatives recommended below if you rely on this removed feature:

should be done by inspecting the log messages that are produced by a recent version of Bitcoin Core. Bitcoin Core logs debug messages (-debug=<category>) to a stream (-printtoconsole) or to a file (-debuglogfile=<debug.log>).

- submitblock

- getblocktemplate with 'mode' set to 'proposal' for blocks with potentially invalid POW

- sendrawtransaction

- testmempoolaccept

just because there are no reject messages. Instead, listen for the transaction to be announced by other peers on the network. Wallets should not assume a lack of reject messages means a transaction pays an appropriate fee. Instead, set fees using fee estimation and use replace-by-fee to increase a transaction's fee if it hasn't confirmed within the desired amount of time.

The removal of BIP61 reject message support also has the following minor RPC and logging implications:

code when a transaction is not accepted to the mempool. They still return the verbal reject reason.

not accepted to the mempool now no longer report the reject code. The reason for rejection is still reported.

Updated RPCs

type which supports multisig scripts where the public keys are sorted lexicographically in the resulting script. (#17056)

BIP32 derivation paths by default for public keys if we know them. This can be disabled by setting the bip32derivs parameter to false. (#17264)

0.19, has been removed. (#18312)

private keys disabled. (#16373)

mapped Autonomous System used for diversifying peer selection. See the -asmap configuration option described below in New Settings. (#16702)

output script descriptor for the newly created address. (#18032)

Build System


--enable-bip70 option remains, but it will throw an error during configure. (#17165)

retains compatibility with RHEL 7, CentOS 7, Debian 8 and Ubuntu 14.04 LTS. (#17538)

any autotools artifacts. Therefore, to build from such source, a user should run the ./autogen.sh script from the root of the unpacked archive. This implies that autotools and other required packages are installed on the user's system. (#18331)

New settings


allow giving certain RPC users permissions to only some RPC calls. (#12763)

node's network connections by mapping IP addresses Autonomous System Numbers (ASNs) and then limiting the number of connections made to any single ASN. See issue #16599, PR #16702, and the bitcoind help for more information. This option is experimental and subject to removal or breaking changes in future releases, so the legacy /16 prefix mapping of IP addresses remains the default. (#16702)

Updated settings


written to the debug.log file to assist troubleshooting. (#16115)

occurs by default. The file must now be specified with -loadblock=<file>. (#17044)

-debug=walletdb to distinguish it from coindb. The -debug=db option has been deprecated and will be removed in the next major release. (#17410)

in its argument with the name of the wallet generating the notification. This is not supported on Windows. (#13339)

Removed settings


it was discovered that it was rendered ineffective in version 0.13 and hasn't actually been supported for almost four years. (#17985)

GUI changes


(#17567)

field to indicate the mapped Autonomous System used for diversifying peer selection. See the -asmap configuration option in _New Settings_, above. (#18402)

in the release notes of version 0.18 has been fixed. The issue affected anyone who simultaneously used multiple Bitcoin Core wallets and the GUI coin control feature. (#18894)

or fee bumping an existing transaction in the Transactions screen will automatically copy a Partially-Signed Bitcoin Transaction (PSBT) to the system clipboard. This can then be pasted into an external program such as HWI for signing. Future versions of Bitcoin Core should support a GUI option for finalizing and broadcasting PSBTs, but for now the debug console may be used with the finalizepsbt and sendrawtransaction RPCs. (#16944, #17492)

Wallet


creates native segwit change outputs. (#16884)

confirmed/unconfirmed balance status and coin selection. (#16766)

responses now also include the height of the block that contains the wallet transaction, if any. (#17437)

(re-enable for this release using the configuration parameter -deprecatedrpc=label). The labels field is altered from returning JSON objects to returning a JSON array of label names (re-enable previous behavior for this release using the configuration parameter -deprecatedrpc=labelspurpose). Backwards compatibility using the deprecated configuration parameters is expected to be dropped in the 0.21 release. (#17585, #17578)

Documentation changes


now available at https://doxygen.bitcoincore.org. (#17596)

Low-level changes =================

Utilities


returns a headers field with the number of downloaded block headers on the best headers chain (similar to the blocks field that is also returned) and a verificationprogress field that estimates how much of the best block chain has been synced by the local node. The information returned no longer includes the protocolversion, walletversion, and keypoololdest fields. (#17302, #17650)

parameter that can be used when calling the walletpassphrase and walletpassphrasechange RPCs to read the passphrase from standard input without echoing it to the terminal, improving security against anyone who can look at your screen. The existing -stdinrpcpass parameter is also updated to not echo the passphrase. (#13716)

Command line


-main.port=8333 -test.server=1 previously were allowed but ignored. Now they trigger "Invalid parameter" errors on startup. (#17482)

New RPCs


UTXO set. A script is provided in the contrib/devtools directory for generating a snapshot of the UTXO set at a particular block height. (#16899)

generate blocks that pay an arbitrary output script descriptor. (#16943)

Updated RPCs


depending on the command line options or configuration file (-checklevel, and -checkblocks). Users can pass in the RPC arguments explicitly when they don't want to rely on the default values. (#18541)

longer report values higher than 1. Previously it would occasionally report the chain was more than 100% verified. (#17328)

Tests


the config file if running on testnet or regtest networks. The setting now needs to be qualified as chain.walletdir=path or placed in the appropriate [chain] section. (#17447)

0.0002 by default for the test chains. Now it is 0 by default for all chains. Testnet and regtest users will have to add fallbackfee=0.0002 to their configuration if they weren't setting it and they want it to keep working like before. (#16524)

Build system


Kit (NDK). (#16110)

0.20.0 change log =================

Mining

Block and transaction handling

P2P protocol and network code

Wallet

RPC and other APIs

GUI

Build system

Platform support

Tests and QA

Documentation

Miscellaneous

Credits =======

Thanks to everyone who directly contributed to this release:

As well as to everyone that helped with translations on Transifex.