diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/bitcoin-conf.md | 10 | ||||
-rw-r--r-- | doc/developer-notes.md | 18 | ||||
-rw-r--r-- | doc/init.md | 10 | ||||
-rw-r--r-- | doc/release-notes-0.18.1-16257.md | 6 | ||||
-rw-r--r-- | doc/release-notes-13756.md | 41 | ||||
-rw-r--r-- | doc/release-notes-14054.md | 7 | ||||
-rw-r--r-- | doc/release-notes-14802.md | 3 | ||||
-rw-r--r-- | doc/release-notes-14954.md | 3 | ||||
-rw-r--r-- | doc/release-notes-15006.md | 4 | ||||
-rw-r--r-- | doc/release-notes-15427.md | 9 | ||||
-rw-r--r-- | doc/release-notes-15566.md | 3 | ||||
-rw-r--r-- | doc/release-notes-15620.md | 13 | ||||
-rw-r--r-- | doc/release-notes-15637.md | 3 | ||||
-rw-r--r-- | doc/release-notes-15730.md | 5 | ||||
-rw-r--r-- | doc/release-notes-15849.md | 6 | ||||
-rw-r--r-- | doc/release-notes-15993.md | 3 | ||||
-rw-r--r-- | doc/release-notes-16060.md | 15 | ||||
-rw-r--r-- | doc/release-notes-16383.md | 8 | ||||
-rw-r--r-- | doc/release-notes-16394.md | 4 | ||||
-rw-r--r-- | doc/release-notes-16647.md | 3 | ||||
-rw-r--r-- | doc/release-notes.md | 284 | ||||
-rw-r--r-- | doc/release-notes/release-notes-16152.md | 7 | ||||
-rw-r--r-- | doc/translation_process.md | 6 | ||||
-rw-r--r-- | doc/zmq.md | 4 |
24 files changed, 278 insertions, 197 deletions
diff --git a/doc/bitcoin-conf.md b/doc/bitcoin-conf.md index f8146b5d75..f4a8edec75 100644 --- a/doc/bitcoin-conf.md +++ b/doc/bitcoin-conf.md @@ -50,3 +50,13 @@ rpcport=4000 The configuration file is not automatically created; you can create it using your favorite text editor. By default, the configuration file name is `bitcoin.conf` and it is located in the Bitcoin data directory, but both the Bitcoin data directory and the configuration file path may be changed using the `-datadir` and `-conf` command-line options. The `includeconf=<file>` option in the `bitcoin.conf` file can be used to include additional configuration files. + +### Default configuration file locations + +Operating System | Data Directory | Example Path +-- | -- | -- +Windows | `%APPDATA%\Bitcoin\` | `C:\Users\username\AppData\Roaming\Bitcoin\bitcoin.conf` +Linux | `$HOME/.bitcoin/` | `/home/username/.bitcoin/bitcoin.conf` +macOS | `$HOME/Library/Application Support/Bitcoin/` | `/Users/username/Library/Application Support/Bitcoin/bitcoin.conf` + +You can find an example bitcoin.conf file in [share/examples/bitcoin.conf](../share/examples/bitcoin.conf). diff --git a/doc/developer-notes.md b/doc/developer-notes.md index d1114b0c73..561f623cd5 100644 --- a/doc/developer-notes.md +++ b/doc/developer-notes.md @@ -27,7 +27,7 @@ Developer Notes - [General C++](#general-c) - [C++ data structures](#c-data-structures) - [Strings and formatting](#strings-and-formatting) - - [Variable names](#variable-names) + - [Shadowing](#shadowing) - [Threads and synchronization](#threads-and-synchronization) - [Scripts](#scripts) - [Shebang](#shebang) @@ -613,27 +613,13 @@ Strings and formatting - *Rationale*: Bitcoin Core uses tinyformat, which is type safe. Leave them out to avoid confusion. -Variable names +Shadowing -------------- Although the shadowing warning (`-Wshadow`) is not enabled by default (it prevents issues arising from using a different variable with the same name), please name variables so that their names do not shadow variables defined in the source code. -E.g. in member initializers, prepend `_` to the argument name shadowing the -member name: - -```c++ -class AddressBookPage -{ - Mode m_mode; -} - -AddressBookPage::AddressBookPage(Mode _mode) - : m_mode(_mode) -... -``` - When using nested cycles, do not name the inner cycle variable the same as in the upper cycle, etc. diff --git a/doc/init.md b/doc/init.md index a6c9bb94d8..87e939c636 100644 --- a/doc/init.md +++ b/doc/init.md @@ -59,11 +59,11 @@ Data directory: `/var/lib/bitcoind` PID file: `/var/run/bitcoind/bitcoind.pid` (OpenRC and Upstart) or `/run/bitcoind/bitcoind.pid` (systemd) Lock file: `/var/lock/subsys/bitcoind` (CentOS) -The configuration file, PID directory (if applicable) and data directory -should all be owned by the bitcoin user and group. It is advised for security -reasons to make the configuration file and data directory only readable by the -bitcoin user and group. Access to bitcoin-cli and other bitcoind rpc clients -can then be controlled by group membership. +The PID directory (if applicable) and data directory should both be owned by the +bitcoin user and group. It is advised for security reasons to make the +configuration file and data directory only readable by the bitcoin user and +group. Access to bitcoin-cli and other bitcoind rpc clients can then be +controlled by group membership. NOTE: When using the systemd .service file, the creation of the aforementioned directories and the setting of their permissions is automatically handled by diff --git a/doc/release-notes-0.18.1-16257.md b/doc/release-notes-0.18.1-16257.md deleted file mode 100644 index 21867b7fb2..0000000000 --- a/doc/release-notes-0.18.1-16257.md +++ /dev/null @@ -1,6 +0,0 @@ -Wallet changes --------------- -When creating a transaction with a fee above `-maxtxfee` (default 0.1 BTC), -the RPC commands `walletcreatefundedpsbt` and `fundrawtransaction` will now fail -instead of rounding down the fee. Beware that the `feeRate` argument is specified -in BTC per kilobyte, not satoshi per byte. diff --git a/doc/release-notes-13756.md b/doc/release-notes-13756.md deleted file mode 100644 index a500aceb0f..0000000000 --- a/doc/release-notes-13756.md +++ /dev/null @@ -1,41 +0,0 @@ -Coin selection --------------- - -### Reuse Avoidance - -A new wallet flag `avoid_reuse` has been added (default off). When enabled, -a wallet will distinguish between used and unused addresses, and default to not -use the former in coin selection. - -Rescanning the blockchain is required, to correctly mark previously -used destinations. - -Together with "avoid partial spends" (present as of Bitcoin v0.17), this -addresses a serious privacy issue where a malicious user can track spends by -peppering a previously paid to address with near-dust outputs, which would then -be inadvertently included in future payments. - -New RPCs --------- - -- A new `setwalletflag` RPC sets/unsets flags for an existing wallet. - - -Updated RPCs ------------- - -Several RPCs have been updated to include an "avoid_reuse" flag, used to control -whether already used addresses should be left out or included in the operation. -These include: - -- createwallet -- getbalance -- getbalances -- sendtoaddress - -In addition, `sendtoaddress` has been changed to avoid partial spends when `avoid_reuse` -is enabled (if not already enabled via the `-avoidpartialspends` command line flag), -as it would otherwise risk using up the "wrong" UTXO for an address reuse case. - -The listunspent RPC has also been updated to now include a "reused" bool, for nodes -with "avoid_reuse" enabled. diff --git a/doc/release-notes-14054.md b/doc/release-notes-14054.md deleted file mode 100644 index d8cad369c5..0000000000 --- a/doc/release-notes-14054.md +++ /dev/null @@ -1,7 +0,0 @@ -P2P changes ------------ - -BIP 61 reject messages were deprecated in v0.18. They are now disabled by -default, but can be enabled by setting the `-enablebip61` command line option. -BIP 61 reject messages will be removed entirely in a future version of -Bitcoin Core. diff --git a/doc/release-notes-14802.md b/doc/release-notes-14802.md deleted file mode 100644 index 1fcc38866a..0000000000 --- a/doc/release-notes-14802.md +++ /dev/null @@ -1,3 +0,0 @@ -RPC changes ------------ -The `getblockstats` RPC is faster for fee calculation by using BlockUndo data. Also, `-txindex` is no longer required and `getblockstats` works for all non-pruned blocks. diff --git a/doc/release-notes-14954.md b/doc/release-notes-14954.md deleted file mode 100644 index 4bb0fcca74..0000000000 --- a/doc/release-notes-14954.md +++ /dev/null @@ -1,3 +0,0 @@ -Build system changes --------------------- -Python >=3.5 is now required by all aspects of the project. This includes the build systems, test framework and linters. The previously supported minimum (3.4), was EOL in March 2019. See #14954 for more details.
\ No newline at end of file diff --git a/doc/release-notes-15006.md b/doc/release-notes-15006.md deleted file mode 100644 index 76ed3247a6..0000000000 --- a/doc/release-notes-15006.md +++ /dev/null @@ -1,4 +0,0 @@ -Miscellaneous RPC changes ------------- - -- `createwallet` can now create encrypted wallets if a non-empty passphrase is specified. diff --git a/doc/release-notes-15427.md b/doc/release-notes-15427.md deleted file mode 100644 index 25edfd4402..0000000000 --- a/doc/release-notes-15427.md +++ /dev/null @@ -1,9 +0,0 @@ -Updated RPCs ------------- - -The `utxoupdatepsbt` RPC method has been updated to take a `descriptors` -argument. When provided, input and output scripts and keys will be filled in -when known, and P2SH-witness inputs will be filled in from the UTXO set when a -descriptor is provided that shows they're spending segwit outputs. - -See the RPC help text for full details. diff --git a/doc/release-notes-15566.md b/doc/release-notes-15566.md deleted file mode 100644 index 49964d7550..0000000000 --- a/doc/release-notes-15566.md +++ /dev/null @@ -1,3 +0,0 @@ -Miscellaneous CLI Changes -------------------------- -- The `testnet` field in `bitcoin-cli -getinfo` has been renamed to `chain` and now returns the current network name as defined in BIP70 (main, test, regtest).
\ No newline at end of file diff --git a/doc/release-notes-15620.md b/doc/release-notes-15620.md deleted file mode 100644 index bf89a70a4e..0000000000 --- a/doc/release-notes-15620.md +++ /dev/null @@ -1,13 +0,0 @@ -Updated RPCs ------------- - -* The -maxtxfee setting no longer has any effect on non-wallet RPCs. - - The `sendrawtransaction` and `testmempoolaccept` RPC methods previously - accepted an `allowhighfees` parameter to fail the mempool acceptance in case - the transaction's fee would exceed the value of the command line argument - `-maxtxfee`. To uncouple the RPCs from the global option, they now have a - hardcoded default for the maximum transaction fee, that can be changed for - both RPCs on a per-call basis with the `maxfeerate` parameter. The - `allowhighfees` boolean option has been removed and replaced by the - `maxfeerate` numeric option. diff --git a/doc/release-notes-15637.md b/doc/release-notes-15637.md deleted file mode 100644 index 048d5e7218..0000000000 --- a/doc/release-notes-15637.md +++ /dev/null @@ -1,3 +0,0 @@ -RPC changes ------------ -In getmempoolancestors, getmempooldescendants, getmempoolentry and getrawmempool RPCs, to be consistent with the returned value and other RPCs such as getrawtransaction, vsize has been added and size is now deprecated. size will only be returned if bitcoind is started with `-deprecatedrpc=size`.
\ No newline at end of file diff --git a/doc/release-notes-15730.md b/doc/release-notes-15730.md deleted file mode 100644 index 7a4a60b1ee..0000000000 --- a/doc/release-notes-15730.md +++ /dev/null @@ -1,5 +0,0 @@ -RPC changes ------------ -The RPC `getwalletinfo` response now includes the `scanning` key with an object -if there is a scanning in progress or `false` otherwise. Currently the object -has the scanning duration and progress. diff --git a/doc/release-notes-15849.md b/doc/release-notes-15849.md deleted file mode 100644 index a1df31f250..0000000000 --- a/doc/release-notes-15849.md +++ /dev/null @@ -1,6 +0,0 @@ -Thread names in logs --------------------- - -On platforms supporting `thread_local`, log lines can be prefixed with the name -of the thread that caused the log. To enable this behavior, use -`-logthreadnames=1`. diff --git a/doc/release-notes-15993.md b/doc/release-notes-15993.md deleted file mode 100644 index 493c7126ee..0000000000 --- a/doc/release-notes-15993.md +++ /dev/null @@ -1,3 +0,0 @@ -Build system changes --------------------- -The minimum supported miniUPnPc API version is set to 10. This keeps compatibility with Ubuntu 16.04 LTS and Debian 8 `libminiupnpc-dev` packages. Please note, on Debian this package is still vulnerable to [CVE-2017-8798](https://security-tracker.debian.org/tracker/CVE-2017-8798) (in jessie only) and [CVE-2017-1000494](https://security-tracker.debian.org/tracker/CVE-2017-1000494) (both in jessie and in stretch). diff --git a/doc/release-notes-16060.md b/doc/release-notes-16060.md deleted file mode 100644 index 7e150d10e7..0000000000 --- a/doc/release-notes-16060.md +++ /dev/null @@ -1,15 +0,0 @@ -Low-level RPC changes ----------------------- - -- Soft fork reporting in the `getblockchaininfo` return object has been - updated. For full details, see the RPC help text. In summary: - - The `bip9_softforks` sub-object is no longer returned - - The `softforks` sub-object now returns an object keyed by soft fork name, - rather than an array - - Each softfork object in the `softforks` object contains a `type` value which - is either `buried` (for soft fork deployments where the activation height is - hard-coded into the client implementation), or `bip9` (for soft fork deployments - where activation is controlled by BIP 9 signaling). - -- `getblocktemplate` no longer returns a `rules` array containing `CSV` - and `segwit` (the BIP 9 deployments that are currently in active state). diff --git a/doc/release-notes-16383.md b/doc/release-notes-16383.md deleted file mode 100644 index 8015715167..0000000000 --- a/doc/release-notes-16383.md +++ /dev/null @@ -1,8 +0,0 @@ -RPC changes ------------ - -RPCs which have an `include_watchonly` argument or `includeWatching` -option now default to `true` for watch-only wallets. Affected RPCs -are: `getbalance`, `listreceivedbyaddress`, `listreceivedbylabel`, -`listtransactions`, `listsinceblock`, `gettransaction`, -`walletcreatefundedpsbt`, and `fundrawtransaction`. diff --git a/doc/release-notes-16394.md b/doc/release-notes-16394.md deleted file mode 100644 index f09cba4b6d..0000000000 --- a/doc/release-notes-16394.md +++ /dev/null @@ -1,4 +0,0 @@ -RPC changes ------------ -`createwallet` now returns a warning if an empty string is used as an encryption password, and does not encrypt the wallet, instead of raising an error. -This makes it easier to disable encryption but also specify other options when using the `bitcoin-cli` tool. diff --git a/doc/release-notes-16647.md b/doc/release-notes-16647.md deleted file mode 100644 index 7e5539cb0d..0000000000 --- a/doc/release-notes-16647.md +++ /dev/null @@ -1,3 +0,0 @@ -RPC changes ------------ -`getmempoolentry` now provides a `weight` field containing the transaction weight as defined in BIP 141. diff --git a/doc/release-notes.md b/doc/release-notes.md index e0673ae7ee..04aab56a72 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -64,14 +64,51 @@ platform. Notable changes =============== +New user documentation +---------------------- + +- [Reduce memory](https://github.com/bitcoin/bitcoin/blob/master/doc/reduce-memory.md) + suggests configuration tweaks for running Bitcoin Core on systems with + limited memory. (#16339) + New RPCs -------- - `getbalances` returns an object with all balances (`mine`, `untrusted_pending` and `immature`). Please refer to the RPC help of `getbalances` for details. The new RPC is intended to replace - `getunconfirmedbalance` and the balance fields in `getwalletinfo`, as well as - `getbalance`. The old calls may be removed in a future version. + `getbalance`, `getunconfirmedbalance`, and the balance fields in + `getwalletinfo`. These old calls and fields may be removed in a + future version. (#15930, #16239) + +- `setwalletflag` sets and unsets wallet flags that enable or disable + features specific to that existing wallet, such as the new + `avoid_reuse` feature documented elsewhere in these release notes. + (#13756) + +- `getblockfilter` gets the BIP158 filter for the specified block. This + RPC is only enabled if block filters have been created using the + `-blockfilterindex` configuration option. (#14121) + +New settings +------------ + +- `-blockfilterindex` enables the creation of BIP158 block filters for + the entire blockchain. Filters will be created in the background and + currently use about 4 GiB of space. Note: this version of Bitcoin + Core does not serve block filters over the P2P network, although the + local user may obtain block filters using the `getblockfilter` RPC. + (#14121) + +Updated settings +---------------- + +- `whitebind` and `whitelist` now accept a list of permissions to + provide peers connecting using the indicated interfaces or IP + addresses. If no permissions are specified with an address or CIDR + network, the implicit default permissions are the same as previous + releases. See the `bitcoind -help` output for these two options for + details about the available permissions. (#16248) Updated RPCs ------------ @@ -79,21 +116,128 @@ Updated RPCs Note: some low-level RPC changes mainly useful for testing are described in the Low-level Changes section below. -- The `sendmany` RPC had an argument `minconf` that was not well specified and - would lead to RPC errors even when the wallet's coin selection would succeed. - The `sendtoaddress` RPC never had this check, so to normalize the behavior, - `minconf` is now ignored in `sendmany`. If the coin selection does not - succeed due to missing coins, it will still throw an RPC error. Be reminded - that coin selection is influenced by the `-spendzeroconfchange`, - `-limitancestorcount`, `-limitdescendantcount` and `-walletrejectlongchains` - command line arguments. +- `sendmany` no longer has a `minconf` argument. This argument was not + well specified and would lead to RPC errors even when the wallet's + coin selection succeeded. Users who want to influence coin selection + can use the existing `-spendzeroconfchange`, `-limitancestorcount`, + `-limitdescendantcount` and `-walletrejectlongchains` configuration + arguments. (#15596) + +- `getbalance` and `sendtoaddress`, plus the new RPCs `getbalances` and + `createwallet`, now accept an "avoid_reuse" parameter that controls + whether already used addresses should be included in the operation. + Additionally, `sendtoaddress` will avoid partial spends when + `avoid_reuse` is enabled even if this feature is not already enabled + via the `-avoidpartialspends` command line flag because not doing so + would risk using up the "wrong" UTXO for an address reuse case. + (#13756) + +- `listunspent` now returns a "reused" bool for each output if the + wallet flag "avoid_reuse" is enabled. (#13756) + +- `getblockstats` now uses BlockUndo data instead of the transaction + index, making it much faster, no longer dependent on the `-txindex` + configuration option, and functional for all non-pruned blocks. + (#14802) + +- `utxoupdatepsbt` now accepts a `descriptors` parameter that will fill + out input and output scripts and keys when known. P2SH-witness inputs + will be filled in from the UTXO set when a descriptor is provided that + shows they're spending segwit outputs. See the RPC help text for full + details. (#15427) + +- `sendrawtransaction` and `testmempoolaccept` no longer accept a + `allowhighfees` parameter to fail mempool acceptance if the + transaction fee exceedes the value of the configuration option + `-maxtxfee`. Now there is a hardcoded default maximum feerate that + can be changed when calling either RPC using a `maxfeerate` parameter. + (#15620) + +- `getmempoolancestors`, `getmempooldescendants`, `getmempoolentry`, and + `getrawmempool` no longer return a `size` field unless the + configuration option `-deprecatedrpc=size` is used. Instead a new + `vsize` field is returned with the transaction's virtual size + (consistent with other RPCs such as `getrawtransaction`). (#15637) + +- `getwalletinfo` now includes a `scanning` field that is either `false` + (no scanning) or an object with information about the duration and + progress of the wallet's scanning historical blocks for transactions + affecting its balances. (#15730) + +- `createwallet` accepts a new `passphrase` parameter. If set, this + will create the new wallet encrypted with the given passphrase. If + unset (the default) or set to an empty string, no encryption will be + used. (#16394) + +- `getmempoolentry` now provides a `weight` field containing the + transaction weight as defined in BIP141. (#16647) + +- `getdescriptorinfo` now returns an additional `checksum` field + containing the checksum for the unmodified descriptor provided by the + user (that is, before the descriptor is normalized for the + `descriptor` field). (#15986) + +- `walletcreatefundedpsbt` now signals BIP125 Replace-by-Fee if the + `-walletrbf` configuration option is set to true. (#15911) + +GUI changes +----------- + +- Provides bech32 addresses by default. The user may change the address + during invoice generation using a GUI toggle, or the default address + type may be changed by the `-addresstype` configuration option. + (#15711, #16497) + +Deprecated or removed configuration options +------------------------------------------- + +- `-mempoolreplacement` is removed, although default node behavior + remains the same. This option previously allowed the user to prevent + the node from accepting or relaying BIP125 transaction replacements. + This is different from the remaining configuration option + `-walletrbf`. (#16171) Deprecated or removed RPCs -------------------------- -- The `totalFee` option of the `bumpfee` RPC has been deprecated and will be - removed in 0.20. To continue using this option start with - `-deprecatedrpc=totalFee`. See the `bumpfee` RPC help text for more details. +- `bumpfee` no longer accepts a `totalFee` option unless the + configuration parameter `deprecatedrpc=totalFee` is specified. This + parameter will be fully removed in a subsequent release. (#15996) + +- `generate` is now removed after being deprecated in Bitcoin Core 0.18. + Use the `generatetoaddress` RPC instead. (#15492) + +P2P changes +----------- + +- BIP 61 reject messages were deprecated in v0.18. They are now disabled + by default, but can be enabled by setting the `-enablebip61` command + line option. BIP 61 reject messages will be removed entirely in a + future version of Bitcoin Core. (#14054) + +- To eliminate well-known denial-of-service vectors in Bitcoin Core, + especially for nodes with spinning disks, the default value for the + `-peerbloomfilters` configuration option has been changed to false. + This prevents Bitcoin Core from sending the BIP111 NODE_BLOOM service + flag, accepting BIP37 bloom filters, or serving merkle blocks or + transactions matching a bloom filter. Users who still want to provide + bloom filter support may either set the configuration option to true + to re-enable both BIP111 and BIP37 support or enable just BIP37 + support for specific peers using the updated `-whitelist` and + `-whitebind` configuration options described elsewhere in these + release notes. For the near future, lightweight clients using public + BIP111/BIP37 nodes should still be able to connect to older versions + of Bitcoin Core and nodes that have manually enabled BIP37 support, + but developers of such software should consider migrating to either + using specific BIP37 nodes or an alternative transaction filtering + system. (#16152) + +Miscellaneous CLI Changes +------------------------- + +- The `testnet` field in `bitcoin-cli -getinfo` has been renamed to + `chain` and now returns the current network name as defined in BIP70 + (main, test, regtest). (#15566) Low-level changes ================= @@ -101,24 +245,42 @@ Low-level changes RPC --- +- `getblockchaininfo` no longer returns a `bip9_softforks` object. + Instead, information has been moved into the `softforks` object and + an additional `type` field describes how Bitcoin Core determines + whether that soft fork is active (e.g. BIP9 or BIP90). See the RPC + help for details. (#16060) + +- `getblocktemplate` no longer returns a `rules` array containing `CSV` + and `segwit` (the BIP9 deployments that are currently in active + state). (#16060) + +- `getrpcinfo` now returns a `logpath` field with the path to + `debug.log`. (#15483) Tests ----- -- The regression test chain, that can be enabled by the `-regtest` command line - flag, now requires transactions to not violate standard policy by default. - Making the default the same as for mainnet, makes it easier to test mainnet - behavior on regtest. Be reminded that the testnet still allows non-standard - txs by default and that the policy can be locally adjusted with the - `-acceptnonstdtxn` command line flag for both test chains. +- The regression test chain enabled by the `-regtest` command line flag + now requires transactions to not violate standard policy by default. + This is the same default used for mainnet and makes it easier to test + mainnet behavior on regtest. Note that the testnet still allows + non-standard txs by default and that the policy can be locally + adjusted with the `-acceptnonstdtxn` command line flag for both test + chains. (#15891) Configuration ------------ -- An error is issued where previously a warning was issued when a setting in - the config file was specified in the default section, but not overridden for - the selected network. This change takes only effect if the selected network - is not mainnet. +- A setting specified in the default section but not also specified in a + network-specific section (e.g. testnet) will now produce a error + preventing startup instead of just a warning unless the network is + mainnet. This prevents settings intended for mainnet from being + applied to testnet or regtest. (#15629) + +- On platforms supporting `thread_local`, log lines can be prefixed with + the name of the thread that caused the log. To enable this behavior, + use `-logthreadnames=1`. (#15849) Network ------- @@ -129,17 +291,81 @@ Network peers' announcements were received. In this release, the download logic has changed to randomize the fetch order across peers and to prefer sending download requests to outbound peers over inbound peers. This fixes an issue - where inbound peers can prevent a node from getting a transaction. + where inbound peers could prevent a node from getting a transaction. + (#14897, #15834) + +- If a Tor hidden service is being used, Bitcoin Core will be bound to + the standard port 8333 even if a different port is configured for + clearnet connections. This prevents leaking node identity through use + of identical non-default port numbers. (#15651) + +Mempool and transaction relay +----------------------------- + +- Allows one extra single-ancestor transaction per package. Previously, + if a transaction in the mempool had 25 descendants, or it and all of + its descendants were over 101,000 vbytes, any newly-received + transaction that was also a descendant would be ignored. Now, one + extra descendant will be allowed provided it is an immediate + descendant (child) and the child's size is 10,000 vbytes or less. + This makes it possible for two-party contract protocols such as + Lightning Network to give each participant an output they can spend + immediately for Child-Pays-For-Parent (CPFP) fee bumping without + allowing one malicious participant to fill the entire package and thus + prevent the other participant from spending their output. (#15681) + +- Transactions with outputs paying v1 to v16 witness versions (future + segwit versions) are now accepted into the mempool, relayed, and + mined. Attempting to spend those outputs remains forbidden by policy + ("non-standard"). When this change has been widely deployed, wallets + and services can accept any valid bech32 Bitcoin address without + concern that transactions paying future segwit versions will become + stuck in an unconfirmed state. (#15846) + +- Legacy transactions (transactions with no segwit inputs) must now be + sent using the legacy encoding format, enforcing the rule specified in + BIP144. (#14039) Wallet ------ - When in pruned mode, a rescan that was triggered by an `importwallet`, - `importpubkey`, `importaddress`, or `importprivkey` RPC will only fail when - blocks have been pruned. Previously it would fail when `-prune` has been set. - This change allows to set `-prune` to a high value (e.g. the disk size) and - the calls to any of the import RPCs would fail when the first block is - pruned. + `importpubkey`, `importaddress`, or `importprivkey` RPC will only fail + when blocks have been pruned. Previously it would fail when `-prune` + has been set. This change allows setting `-prune` to a high value + (e.g. the disk size) without the calls to any of the import RPCs + failing until the first block is pruned. (#15870) + +- When creating a transaction with a fee above `-maxtxfee` (default 0.1 + BTC), the RPC commands `walletcreatefundedpsbt` and + `fundrawtransaction` will now fail instead of rounding down the fee. + Be aware that the `feeRate` argument is specified in BTC per 1,000 + vbytes, not satoshi per vbyte. (#16257) + +- A new wallet flag `avoid_reuse` has been added (default off). When + enabled, a wallet will distinguish between used and unused addresses, + and default to not use the former in coin selection. When setting + this flag on an existing wallet, rescanning the blockchain is required + to correctly mark previously used destinations. Together with "avoid + partial spends" (added in Bitcoin Core v0.17.0), this can eliminate a + serious privacy issue where a malicious user can track spends by + sending small payments to a previously-paid address that would then + be included with unrelated inputs in future payments. (#13756) + +Build system changes +-------------------- + +- Python >=3.5 is now required by all aspects of the project. This + includes the build systems, test framework and linters. The previously + supported minimum (3.4), was EOL in March 2019. (#14954) + +- The minimum supported miniUPnPc API version is set to 10. This keeps + compatibility with Ubuntu 16.04 LTS and Debian 8 `libminiupnpc-dev` + packages. Please note, on Debian this package is still vulnerable to + [CVE-2017-8798](https://security-tracker.debian.org/tracker/CVE-2017-8798) + (in jessie only) and + [CVE-2017-1000494](https://security-tracker.debian.org/tracker/CVE-2017-1000494) + (both in jessie and in stretch). (#15993) Credits ======= diff --git a/doc/release-notes/release-notes-16152.md b/doc/release-notes/release-notes-16152.md deleted file mode 100644 index 9c77cb9ae5..0000000000 --- a/doc/release-notes/release-notes-16152.md +++ /dev/null @@ -1,7 +0,0 @@ -P2P Changes ------------ -- The default value for the -peerbloomfilters configuration option (and, thus, NODE_BLOOM support) has been changed to false. - This resolves well-known DoS vectors in Bitcoin Core, especially for nodes with spinning disks. It is not anticipated that - this will result in a significant lack of availability of NODE_BLOOM-enabled nodes in the coming years, however, clients - which rely on the availability of NODE_BLOOM-supporting nodes on the P2P network should consider the process of migrating - to a more modern (and less trustful and privacy-violating) alternative over the coming years. diff --git a/doc/translation_process.md b/doc/translation_process.md index b9a10b6527..0e9245250f 100644 --- a/doc/translation_process.md +++ b/doc/translation_process.md @@ -65,13 +65,13 @@ username = USERNAME The Transifex Bitcoin project config file is included as part of the repo. It can be found at `.tx/config`, however you shouldn’t need to change anything. ### Synchronising translations -To assist in updating translations, we have created a script to help. +To assist in updating translations, a helper script is available in the [maintainer-tools repo](https://github.com/bitcoin-core/bitcoin-maintainer-tools). -1. `python contrib/devtools/update-translations.py` +1. `python3 ../bitcoin-maintainer-tools/update-translations.py` 2. `git add` new translations from `src/qt/locale/` 3. Update `src/qt/bitcoin_locale.qrc` manually or via ```bash -git ls-files src/qt/locale/*ts|xargs -n1 basename|sed 's/\(bitcoin_\(.*\)\).ts/<file alias="\2">locale\/\1.qm<\/file>/' +git ls-files src/qt/locale/*ts|xargs -n1 basename|sed 's/\(bitcoin_\(.*\)\).ts/ <file alias="\2">locale\/\1.qm<\/file>/' ``` 4. Update `src/Makefile.qt.include` manually or via ```bash diff --git a/doc/zmq.md b/doc/zmq.md index 7ffc5623b6..a309abd0cc 100644 --- a/doc/zmq.md +++ b/doc/zmq.md @@ -111,7 +111,9 @@ using other means such as firewalling. Note that when the block chain tip changes, a reorganisation may occur and just the tip will be notified. It is up to the subscriber to -retrieve the chain from the last known block to the new tip. +retrieve the chain from the last known block to the new tip. Also note +that no notification occurs if the tip was in the active chain - this +is the case after calling invalidateblock RPC. There are several possibilities that ZMQ notification can get lost during transmission depending on the communication type you are |