mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-21 07:39:08 +01:00
273 lines
14 KiB
Markdown
273 lines
14 KiB
Markdown
(note: this is a temporary file, to be added-to by anybody, and moved to
|
|
release-notes at release time)
|
|
|
|
Bitcoin Core version *version* is now available from:
|
|
|
|
<https://bitcoincore.org/bin/bitcoin-core-*version*/>
|
|
|
|
This is a new major version release, including new features, various bugfixes
|
|
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).
|
|
|
|
The first time you run version 0.15.0, your chainstate database will be converted to a
|
|
new format, which will take anywhere from a few minutes to half an hour,
|
|
depending on the speed of your machine.
|
|
|
|
Note that the block database format also changed in version 0.8.0 and there is no
|
|
automatic upgrade code from before version 0.8 to version 0.15.0. Upgrading
|
|
directly from 0.7.x and earlier without redownloading the blockchain is not supported.
|
|
However, as usual, old wallet versions are still supported.
|
|
|
|
Downgrading warning
|
|
-------------------
|
|
|
|
The chainstate database for this release is not compatible with previous
|
|
releases, so if you run 0.15 and then decide to switch back to any
|
|
older version, you will need to run the old release with the `-reindex-chainstate`
|
|
option to rebuild the chainstate data structures in the old format.
|
|
|
|
If your node has pruning enabled, this will entail re-downloading and
|
|
processing the entire blockchain.
|
|
|
|
Compatibility
|
|
==============
|
|
|
|
Bitcoin Core is extensively tested on multiple operating systems using
|
|
the Linux kernel, macOS 10.10+, and Windows 7 and newer (Windows XP is not supported).
|
|
|
|
Bitcoin Core should also work on most other Unix-like systems but is not
|
|
frequently tested on them.
|
|
|
|
From 0.17.0 onwards macOS <10.10 is no longer supported. 0.17.0 is built using Qt 5.9.x, which doesn't
|
|
support versions of macOS older than 10.10.
|
|
|
|
Notable changes
|
|
===============
|
|
|
|
Changed command-line options
|
|
----------------------------
|
|
|
|
- `-includeconf=<file>` can be used to include additional configuration files.
|
|
Only works inside the `bitcoin.conf` file, not inside included files or from
|
|
command-line. Multiple files may be included. Can be disabled from command-
|
|
line via `-noincludeconf`. Note that multi-argument commands like
|
|
`-includeconf` will override preceding `-noincludeconf`, i.e.
|
|
|
|
noincludeconf=1
|
|
includeconf=relative.conf
|
|
|
|
as bitcoin.conf will still include `relative.conf`.
|
|
|
|
GUI changes
|
|
-----------
|
|
|
|
- Block storage can be limited under Preferences, in the Main tab. Undoing this setting requires downloading the full blockchain again. This mode is incompatible with -txindex and -rescan.
|
|
|
|
RPC changes
|
|
------------
|
|
|
|
### Low-level changes
|
|
|
|
- The `createrawtransaction` RPC will now accept an array or dictionary (kept for compatibility) for the `outputs` parameter. This means the order of transaction outputs can be specified by the client.
|
|
- The `fundrawtransaction` RPC will reject the previously deprecated `reserveChangeKey` option.
|
|
- `sendmany` now shuffles outputs to improve privacy, so any previously expected behavior with regards to output ordering can no longer be relied upon.
|
|
- The new RPC `testmempoolaccept` can be used to test acceptance of a transaction to the mempool without adding it.
|
|
- JSON transaction decomposition now includes a `weight` field which provides
|
|
the transaction's exact weight. This is included in REST /rest/tx/ and
|
|
/rest/block/ endpoints when in json mode. This is also included in `getblock`
|
|
(with verbosity=2), `listsinceblock`, `listtransactions`, and
|
|
`getrawtransaction` RPC commands.
|
|
- New `fees` field introduced in `getrawmempool`, `getmempoolancestors`, `getmempooldescendants` and
|
|
`getmempoolentry` when verbosity is set to `true` with sub-fields `ancestor`, `base`, `modified`
|
|
and `descendant` denominated in BTC. This new field deprecates previous fee fields, such as
|
|
`fee`, `modifiedfee`, `ancestorfee` and `descendantfee`.
|
|
- The new RPC `getzmqnotifications` returns information about active ZMQ
|
|
notifications.
|
|
|
|
External wallet files
|
|
---------------------
|
|
|
|
The `-wallet=<path>` option now accepts full paths instead of requiring wallets
|
|
to be located in the -walletdir directory.
|
|
|
|
Newly created wallet format
|
|
---------------------------
|
|
|
|
If `-wallet=<path>` is specified with a path that does not exist, it will now
|
|
create a wallet directory at the specified location (containing a wallet.dat
|
|
data file, a db.log file, and database/log.?????????? files) instead of just
|
|
creating a data file at the path and storing log files in the parent
|
|
directory. This should make backing up wallets more straightforward than
|
|
before because the specified wallet path can just be directly archived without
|
|
having to look in the parent directory for transaction log files.
|
|
|
|
For backwards compatibility, wallet paths that are names of existing data files
|
|
in the `-walletdir` directory will continue to be accepted and interpreted the
|
|
same as before.
|
|
|
|
Dynamic loading and creation of wallets
|
|
---------------------------------------
|
|
|
|
Previously, wallets could only be loaded or created at startup, by specifying `-wallet` parameters on the command line or in the bitcoin.conf file. It is now possible to load, create and unload wallets dynamically at runtime:
|
|
|
|
- Existing wallets can be loaded by calling the `loadwallet` RPC. The wallet can be specified as file/directory basename (which must be located in the `walletdir` directory), or as an absolute path to a file/directory.
|
|
- New wallets can be created (and loaded) by calling the `createwallet` RPC. The provided name must not match a wallet file in the `walletdir` directory or the name of a wallet that is currently loaded.
|
|
- Loaded wallets can be unloaded by calling the `unloadwallet` RPC.
|
|
|
|
This feature is currently only available through the RPC interface.
|
|
|
|
Coin selection
|
|
--------------
|
|
- A new `-avoidpartialspends` flag has been added (default=false). If enabled, the wallet will try to spend UTXO's that point at the same destination
|
|
together. This is a privacy increase, as there will no longer be cases where a wallet will inadvertently spend only parts of the coins sent to
|
|
the same address (note that if someone were to send coins to that address after it was used, those coins will still be included in future
|
|
coin selections).
|
|
|
|
Configuration sections for testnet and regtest
|
|
----------------------------------------------
|
|
|
|
It is now possible for a single configuration file to set different
|
|
options for different networks. This is done by using sections or by
|
|
prefixing the option with the network, such as:
|
|
|
|
main.uacomment=bitcoin
|
|
test.uacomment=bitcoin-testnet
|
|
regtest.uacomment=regtest
|
|
[main]
|
|
mempoolsize=300
|
|
[test]
|
|
mempoolsize=100
|
|
[regtest]
|
|
mempoolsize=20
|
|
|
|
The `addnode=`, `connect=`, `port=`, `bind=`, `rpcport=`, `rpcbind=`
|
|
and `wallet=` options will only apply to mainnet when specified in the
|
|
configuration file, unless a network is specified.
|
|
|
|
'label' and 'account' APIs for wallet
|
|
-------------------------------------
|
|
|
|
A new 'label' API has been introduced for the wallet. This is intended as a
|
|
replacement for the deprecated 'account' API. The 'account' can continue to
|
|
be used in V0.17 by starting bitcoind with the '-deprecatedrpc=accounts'
|
|
argument, and will be fully removed in V0.18.
|
|
|
|
The label RPC methods mirror the account functionality, with the following functional differences:
|
|
|
|
- Labels can be set on any address, not just receiving addresses. This functionality was previously only available through the GUI.
|
|
- Labels can be deleted by reassigning all addresses using the `setlabel` RPC method.
|
|
- There isn't support for sending transactions _from_ a label, or for determining which label a transaction was sent from.
|
|
- Labels do not have a balance.
|
|
|
|
Here are the changes to RPC methods:
|
|
|
|
| Deprecated Method | New Method | Notes |
|
|
| :---------------------- | :-------------------- | :-----------|
|
|
| `getaccount` | `getaddressinfo` | `getaddressinfo` returns a json object with address information instead of just the name of the account as a string. |
|
|
| `getaccountaddress` | n/a | There is no replacement for `getaccountaddress` since labels do not have an associated receive address. |
|
|
| `getaddressesbyaccount` | `getaddressesbylabel` | `getaddressesbylabel` returns a json object with the addresses as keys, instead of a list of strings. |
|
|
| `getreceivedbyaccount` | `getreceivedbylabel` | _no change in behavior_ |
|
|
| `listaccounts` | `listlabels` | `listlabels` does not return a balance or accept `minconf` and `watchonly` arguments. |
|
|
| `listreceivedbyaccount` | `listreceivedbylabel` | Both methods return new `label` fields, along with `account` fields for backward compatibility. |
|
|
| `move` | n/a | _no replacement_ |
|
|
| `sendfrom` | n/a | _no replacement_ |
|
|
| `setaccount` | `setlabel` | Both methods now: <ul><li>allow assigning labels to any address, instead of raising an error if the address is not receiving address.<li>delete the previous label associated with an address when the final address using that label is reassigned to a different label, instead of making an implicit `getaccountaddress` call to ensure the previous label still has a receiving address. |
|
|
|
|
| Changed Method | Notes |
|
|
| :--------------------- | :------ |
|
|
| `addmultisigaddress` | Renamed `account` named parameter to `label`. Still accepts `account` for backward compatibility if running with '-deprecatedrpc=accounts'. |
|
|
| `getnewaddress` | Renamed `account` named parameter to `label`. Still accepts `account` for backward compatibility. if running with '-deprecatedrpc=accounts' |
|
|
| `listunspent` | Returns new `label` fields. `account` field will be returned for backward compatibility if running with '-deprecatedrpc=accounts' |
|
|
| `sendmany` | The `account` named parameter has been renamed to `dummy`. If provided, the `dummy` parameter must be set to the empty string, unless running with the `-deprecatedrpc=accounts` argument (in which case functionality is unchanged). |
|
|
| `listtransactions` | The `account` named parameter has been renamed to `dummy`. If provided, the `dummy` parameter must be set to the string `*`, unless running with the `-deprecatedrpc=accounts` argument (in which case functionality is unchanged). |
|
|
| `getbalance` | `account`, `minconf` and `include_watchonly` parameters are deprecated, and can only be used if running with '-deprecatedrpc=accounts' |
|
|
|
|
Low-level RPC changes
|
|
---------------------
|
|
|
|
- When bitcoin is not started with any `-wallet=<path>` options, the name of
|
|
the default wallet returned by `getwalletinfo` and `listwallets` RPCs is
|
|
now the empty string `""` instead of `"wallet.dat"`. If bitcoin is started
|
|
with any `-wallet=<path>` options, there is no change in behavior, and the
|
|
name of any wallet is just its `<path>` string.
|
|
- Passing an empty string (`""`) as the `address_type` parameter to
|
|
`getnewaddress`, `getrawchangeaddress`, `addmultisigaddress`,
|
|
`fundrawtransaction` RPCs is now an error. Previously, this would fall back
|
|
to using the default address type. It is still possible to pass null or leave
|
|
the parameter unset to use the default address type.
|
|
|
|
- Bare multisig outputs to our keys are no longer automatically treated as
|
|
incoming payments. As this feature was only available for multisig outputs for
|
|
which you had all private keys in your wallet, there was generally no use for
|
|
them compared to single-key schemes. Furthermore, no address format for such
|
|
outputs is defined, and wallet software can't easily send to it. These outputs
|
|
will no longer show up in `listtransactions`, `listunspent`, or contribute to
|
|
your balance, unless they are explicitly watched (using `importaddress` or
|
|
`importmulti` with hex script argument). `signrawtransaction*` also still
|
|
works for them.
|
|
|
|
- The `getwalletinfo` RPC method now returns an `hdseedid` value, which is always the same as the incorrectly-named `hdmasterkeyid` value. `hdmasterkeyid` will be removed in V0.18.
|
|
- The `getaddressinfo` RPC method now returns an `hdseedid` value, which is always the same as the incorrectly-named `hdmasterkeyid` value. `hdmasterkeyid` will be removed in V0.18.
|
|
|
|
Other API changes
|
|
-----------------
|
|
|
|
- The `inactivehdmaster` property in the `dumpwallet` output has been corrected to `inactivehdseed`
|
|
|
|
### Logging
|
|
|
|
- The log timestamp format is now ISO 8601 (e.g. "2018-02-28T12:34:56Z").
|
|
|
|
- When running bitcoind with `-debug` but without `-daemon`, logging to stdout
|
|
is now the default behavior. Setting `-printtoconsole=1` no longer implicitly
|
|
disables logging to debug.log. Instead, logging to file can be explicitly disabled
|
|
by setting `-debuglogfile=0`.
|
|
|
|
Transaction index changes
|
|
-------------------------
|
|
|
|
The transaction index is now built separately from the main node procedure,
|
|
meaning the `-txindex` flag can be toggled without a full reindex. If bitcoind
|
|
is run with `-txindex` on a node that is already partially or fully synced
|
|
without one, the transaction index will be built in the background and become
|
|
available once caught up. When switching from running `-txindex` to running
|
|
without the flag, the transaction index database will *not* be deleted
|
|
automatically, meaning it could be turned back on at a later time without a full
|
|
resync.
|
|
|
|
Miner block size removed
|
|
------------------------
|
|
|
|
The `-blockmaxsize` option for miners to limit their blocks' sizes was
|
|
deprecated in V0.15.1, and has now been removed. Miners should use the
|
|
`-blockmaxweight` option if they want to limit the weight of their blocks'
|
|
weights.
|
|
|
|
Python Support
|
|
--------------
|
|
|
|
Support for Python 2 has been discontinued for all test files and tools.
|
|
|
|
Credits
|
|
=======
|
|
|
|
Thanks to everyone who directly contributed to this release:
|
|
|
|
|
|
As well as everyone that helped translating on [Transifex](https://www.transifex.com/projects/p/bitcoin/).
|