8.4 KiB
After branching off for a major version release of Bitcoin Core, use this template to create the initial release notes draft.
The release notes draft is a temporary file that can be added to by anyone. See /doc/developer-notes.md#release-notes for the process.
Create the draft, named "version Release Notes Draft" (e.g. "0.20.0 Release Notes Draft"), as a collaborative wiki in:
https://github.com/bitcoin-core/bitcoin-devwiki/wiki/
Before the final release, move the notes back to this git repository.
version Release Notes Draft
Bitcoin Core version version is now available from:
https://bitcoincore.org/bin/bitcoin-core-*version*/
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 for older versions), 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 datadir 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. It is not recommended to use Bitcoin Core on unsupported systems.
Bitcoin Core should also work on most other Unix-like systems but is not as frequently tested on them.
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.
In addition to previously supported CPU platforms, this release's pre-compiled distribution provides binaries for the RISC-V platform.
Notable changes
P2P and network changes
Removal of reject network messages from Bitcoin Core (BIP61)
The command line option to enable BIP61 (-enablebip61
) has been removed.
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 ("reject") messages, so this should only ever be used when connected to a trusted node. Please use the recommended alternatives if you rely on this deprecated feature:
-
Testing or debugging of implementations of the Bitcoin P2P network protocol 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>
). -
Testing the validity of a block can be achieved by specific RPCs:
submitblock
getblocktemplate
with'mode'
set to'proposal'
for blocks with potentially invalid POW
-
Testing the validity of a transaction can be achieved by specific RPCs:
sendrawtransaction
testmempoolaccept
-
Wallets should not use the absence of "reject" messages to indicate a transaction has propagated the network, nor should wallets use "reject" messages to set transaction fees. Wallets should rather use fee estimation to determine transaction fees and set replace-by-fee if desired. Thus, they could wait until the transaction has confirmed (taking into account the fee target they set (compare the RPC
estimatesmartfee
)) or listen for the transaction announcement by other network peers to check for propagation.
The removal of BIP61 REJECT message support also has the following minor RPC and logging implications:
-
testmempoolaccept
andsendrawtransaction
no longer return the P2P REJECT code when a transaction is not accepted to the mempool. They still return the verbal reject reason. -
Log messages that previously reported the REJECT code when a transaction was not accepted to the mempool now no longer report the REJECT code. The reason for rejection is still reported.
Updated RPCs
-
testmempoolaccept
andsendrawtransaction
no longer return the P2P REJECT code when a transaction is not accepted to the mempool. See the Section Removal of reject network messages from Bitcoin Core (BIP61) for details on the removal of BIP61 REJECT message support. -
A new descriptor type
sortedmulti(...)
has been added to support multisig scripts where the public keys are sorted lexicographically in the resulting script. -
walletprocesspsbt
andwalletcreatefundedpsbt
now include BIP 32 derivation paths by default for public keys if we know them. This can be disabled by settingbip32derivs
tofalse
.
Build System
-
OpenSSL is no longer used by Bitcoin Core. The last usage of the library was removed in #17265.
-
glibc 2.17 or greater is now required to run the release binaries. This retains compatibility with RHEL 7, CentOS 7, Debian 8 and Ubuntu 14.04 LTS. Further details can be found in #17538.
New RPCs
New settings
-
RPC Whitelist system. It can give certain RPC users permissions to only some RPC calls. It can be set with two command line arguments (
rpcwhitelist
andrpcwhitelistdefault
). (#12763) -
A new
-asmap
configuration option has been added to enable IP-to-ASN mapping for bucketing of the network peers to diversify the network connections. The legacy /16 prefix mapping remains the default. See issue #16599, PR #16702, and thebitcoind help
for more information. This option is experimental and subject to changes or removal in future releases.
Updated settings
Importing blocks upon startup via the bootstrap.dat
file no longer occurs by default. The file must now be specified with -loadblock=<file>
.
- The
-debug=db
logging category has been renamed to-debug=walletdb
, to distinguish it fromcoindb
.-debug=db
has been deprecated and will be removed in the next major release.
GUI changes
- The "Start Bitcoin Core on system login" option has been removed on macOS.
Wallet
-
The wallet now by default uses bech32 addresses when using RPC, and creates native segwit change outputs.
-
The way that output trust was computed has been fixed in #16766, which impacts confirmed/unconfirmed balance status and coin selection.
-
The RPC gettransaction, listtransactions and listsinceblock responses now also includes the height of the block that contains the wallet transaction, if any.
-
RPC
getaddressinfo
changes:-
the
label
field has been deprecated in favor of thelabels
field and will be removed in 0.21. It can be re-enabled in the interim by launching with-deprecatedrpc=label
. -
the
labels
behavior of returning an array of JSON objects containing name and purpose key/value pairs has been deprecated in favor of an array of label names and will be removed in 0.21. The previous behavior can be re-enabled in the interim by launching with-deprecatedrpc=labelspurpose
.
-
Low-level changes
Command line
Command line options prefixed with main/test/regtest network names like
-main.port=8333
-test.server=1
previously were allowed but ignored. Now
they trigger "Invalid parameter" errors on startup.
Tests
-
It is now an error to use an unqualified
walletdir=path
setting in the config file if running on testnet or regtest networks. The setting now needs to be qualified aschain.walletdir=path
or placed in the appropriate[chain]
section. (#17447) -
-fallbackfee
was 0 (disabled) by default for the main chain, but 0.0002 by default for the test chains. Now it is 0 by default for all chains. Testnet and regtest users will have to addfallbackfee=0.0002
to their configuration if they weren't setting it and they want it to keep working like before. (#16524)
Credits
Thanks to everyone who directly contributed to this release:
As well as to everyone that helped with translations on Transifex.