aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/bips.md4
-rw-r--r--doc/build-openbsd.md1
-rw-r--r--doc/build-osx.md6
-rw-r--r--doc/build-unix.md13
-rw-r--r--doc/dependencies.md12
-rw-r--r--doc/descriptors.md2
-rw-r--r--doc/developer-notes.md27
-rw-r--r--doc/files.md60
-rw-r--r--doc/man/bitcoin-cli.1116
-rw-r--r--doc/man/bitcoin-qt.1611
-rw-r--r--doc/man/bitcoin-tx.1117
-rw-r--r--doc/man/bitcoin-wallet.164
-rw-r--r--doc/man/bitcoind.1584
-rw-r--r--doc/release-notes-14582.md14
-rw-r--r--doc/release-notes-15367.md6
-rw-r--r--doc/release-notes-15454.md6
-rw-r--r--doc/release-notes-15937.md15
-rw-r--r--doc/release-notes-16378.md5
-rw-r--r--doc/release-notes-16525.md9
-rw-r--r--doc/release-notes-18244.md7
-rw-r--r--doc/release-notes-19405.md12
-rw-r--r--doc/release-notes-19671.md6
-rw-r--r--doc/release-notes-19731.md6
-rw-r--r--doc/release-notes.md264
-rw-r--r--doc/release-process.md18
-rw-r--r--doc/shared-libraries.md3
-rw-r--r--doc/tor.md9
-rw-r--r--doc/zmq.md2
28 files changed, 132 insertions, 1867 deletions
diff --git a/doc/bips.md b/doc/bips.md
index 2d099b9626..8c20533c9b 100644
--- a/doc/bips.md
+++ b/doc/bips.md
@@ -37,10 +37,12 @@ BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.21.0**):
* [`BIP 145`](https://github.com/bitcoin/bips/blob/master/bip-0145.mediawiki): getblocktemplate updates for Segregated Witness as of **v0.13.0** ([PR 8149](https://github.com/bitcoin/bitcoin/pull/8149)).
* [`BIP 147`](https://github.com/bitcoin/bips/blob/master/bip-0147.mediawiki): NULLDUMMY softfork as of **v0.13.1** ([PR 8636](https://github.com/bitcoin/bitcoin/pull/8636) and [PR 8937](https://github.com/bitcoin/bitcoin/pull/8937)), *buried* since **v0.19.0** ([PR #16060](https://github.com/bitcoin/bitcoin/pull/16060)).
* [`BIP 152`](https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki): Compact block transfer and related optimizations are used as of **v0.13.0** ([PR 8068](https://github.com/bitcoin/bitcoin/pull/8068)).
-- [`BIP 158`](https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki): Compact Block Filters for Light Clients can be indexed as of **v0.19.0** ([PR #14121](https://github.com/bitcoin/bitcoin/pull/14121)).
+* [`BIP 155`](https://github.com/bitcoin/bips/blob/master/bip-0155.mediawiki): The 'addrv2' and 'sendaddrv2' messages which enable relay of Tor V3 addresses (and other networks) are supported as of **v0.21.0** ([PR 19954](https://github.com/bitcoin/bitcoin/pull/19954)).
+* [`BIP 158`](https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki): Compact Block Filters for Light Clients can be indexed as of **v0.19.0** ([PR #14121](https://github.com/bitcoin/bitcoin/pull/14121)).
* [`BIP 159`](https://github.com/bitcoin/bips/blob/master/bip-0159.mediawiki): The `NODE_NETWORK_LIMITED` service bit is signalled as of **v0.16.0** ([PR 11740](https://github.com/bitcoin/bitcoin/pull/11740)), and such nodes are connected to as of **v0.17.0** ([PR 10387](https://github.com/bitcoin/bitcoin/pull/10387)).
* [`BIP 173`](https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki): Bech32 addresses for native Segregated Witness outputs are supported as of **v0.16.0** ([PR 11167](https://github.com/bitcoin/bitcoin/pull/11167)). Bech32 addresses are generated by default as of **v0.20.0** ([PR 16884](https://github.com/bitcoin/bitcoin/pull/16884)).
* [`BIP 174`](https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki): RPCs to operate on Partially Signed Bitcoin Transactions (PSBT) are present as of **v0.17.0** ([PR 13557](https://github.com/bitcoin/bitcoin/pull/13557)).
* [`BIP 176`](https://github.com/bitcoin/bips/blob/master/bip-0176.mediawiki): Bits Denomination [QT only] is supported as of **v0.16.0** ([PR 12035](https://github.com/bitcoin/bitcoin/pull/12035)).
* [`BIP 325`](https://github.com/bitcoin/bips/blob/master/bip-0325.mediawiki): Signet test network is supported as of **v0.21.0** ([PR 18267](https://github.com/bitcoin/bitcoin/pull/18267)).
* [`BIP 339`](https://github.com/bitcoin/bips/blob/master/bip-0339.mediawiki): Relay of transactions by wtxid is supported as of **v0.21.0** ([PR 18044](https://github.com/bitcoin/bitcoin/pull/18044)).
+* [`BIP 340`](https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki) [`341`](https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki) [`342`](https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki): Validation rules for Taproot (including Schnorr signatures and Tapscript leaves) are implemented as of **v0.21.0** ([PR 19953](https://github.com/bitcoin/bitcoin/pull/19953)), without mainnet activation.
diff --git a/doc/build-openbsd.md b/doc/build-openbsd.md
index 2b051c078c..dccd7b1335 100644
--- a/doc/build-openbsd.md
+++ b/doc/build-openbsd.md
@@ -15,6 +15,7 @@ pkg_add qt5 # (optional for enabling the GUI)
pkg_add autoconf # (select highest version, e.g. 2.69)
pkg_add automake # (select highest version, e.g. 1.16)
pkg_add python # (select highest version, e.g. 3.8)
+pkg_add bash
git clone https://github.com/bitcoin/bitcoin.git
```
diff --git a/doc/build-osx.md b/doc/build-osx.md
index 7b76117c8b..0a091f6afd 100644
--- a/doc/build-osx.md
+++ b/doc/build-osx.md
@@ -19,7 +19,7 @@ Then install [Homebrew](https://brew.sh).
## Dependencies
```shell
-brew install automake berkeley-db4 libtool boost miniupnpc pkg-config python qt libevent qrencode
+brew install automake berkeley-db4 libtool boost miniupnpc pkg-config python qt libevent qrencode sqlite
```
If you run into issues, check [Homebrew's troubleshooting page](https://docs.brew.sh/Troubleshooting).
@@ -79,7 +79,7 @@ compiled in `disable-wallet` mode with:
./configure --disable-wallet
```
-In this case there is no dependency on Berkeley DB 4.8.
+In this case there is no dependency on Berkeley DB 4.8 and SQLite.
Mining is also possible in disable-wallet mode using the `getblocktemplate` RPC call.
@@ -111,6 +111,6 @@ tail -f $HOME/Library/Application\ Support/Bitcoin/debug.log
```
## Notes
-* Tested on OS X 10.12 Sierra through macOS 10.15 Catalina on 64-bit Intel
+* Tested on OS X 10.14 Mojave through macOS 11 Big Sur on 64-bit Intel
processors only.
* Building with downloaded Qt binaries is not officially supported. See the notes in [#7714](https://github.com/bitcoin/bitcoin/issues/7714).
diff --git a/doc/build-unix.md b/doc/build-unix.md
index 6b51db5f55..cfe3328b45 100644
--- a/doc/build-unix.md
+++ b/doc/build-unix.md
@@ -41,11 +41,12 @@ Optional dependencies:
Library | Purpose | Description
------------|------------------|----------------------
miniupnpc | UPnP Support | Firewall-jumping support
- libdb4.8 | Berkeley DB | Wallet storage (only needed when wallet enabled)
+ libdb4.8 | Berkeley DB | Optional, wallet storage (only needed when wallet enabled)
qt | GUI | GUI toolkit (only needed when GUI enabled)
libqrencode | QR codes in GUI | Optional for generating QR codes (only needed when GUI enabled)
univalue | Utility | JSON parsing and encoding (bundled version will be used unless --with-system-univalue passed to configure)
libzmq3 | ZMQ notification | Optional, allows generating ZMQ notifications (requires ZMQ version >= 4.0.0)
+ sqlite3 | SQLite DB | Optional, wallet storage (only needed when wallet enabled)
For the versions used, see [dependencies.md](dependencies.md)
@@ -91,6 +92,10 @@ pass `--with-incompatible-bdb` to configure.
Otherwise, you can build from self-compiled `depends` (see above).
+SQLite is required for the wallet:
+
+ sudo apt install libsqlite3-dev
+
To build Bitcoin Core without wallet, see [*Disable-wallet mode*](/doc/build-unix.md#disable-wallet-mode)
@@ -144,6 +149,10 @@ libqrencode (optional) can be installed with:
sudo dnf install qrencode-devel
+SQLite can be installed with:
+
+ sudo dnf install sqlite-devel
+
Notes
-----
The release is built with GCC and then "strip bitcoind" to strip the debug
@@ -238,7 +247,7 @@ disable-wallet mode with:
./configure --disable-wallet
-In this case there is no dependency on Berkeley DB 4.8.
+In this case there is no dependency on Berkeley DB 4.8 and SQLite.
Mining is also possible in disable-wallet mode using the `getblocktemplate` RPC call.
diff --git a/doc/dependencies.md b/doc/dependencies.md
index 92dea65309..76e8910871 100644
--- a/doc/dependencies.md
+++ b/doc/dependencies.md
@@ -6,21 +6,22 @@ These are the dependencies currently used by Bitcoin Core. You can find instruct
| Dependency | Version used | Minimum required | CVEs | Shared | [Bundled Qt library](https://doc.qt.io/qt-5/configure-options.html#third-party-libraries) |
| --- | --- | --- | --- | --- | --- |
| Berkeley DB | [4.8.30](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) | 4.8.x | No | | |
-| Boost | [1.70.0](https://www.boost.org/users/download/) | [1.58.0](https://github.com/bitcoin/bitcoin/pull/19667) | No | | |
-| Clang | | [3.3+](https://releases.llvm.org/download.html) (C++11 support) | | | |
+| Boost | [1.71.0](https://www.boost.org/users/download/) | [1.58.0](https://github.com/bitcoin/bitcoin/pull/19667) | No | | |
+| Clang | | [5.0+](https://releases.llvm.org/download.html) (C++17 support) | | | |
| Expat | [2.2.7](https://libexpat.github.io/) | | No | Yes | |
| fontconfig | [2.12.1](https://www.freedesktop.org/software/fontconfig/release/) | | No | Yes | |
| FreeType | [2.7.1](https://download.savannah.gnu.org/releases/freetype) | | No | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) (Android only) |
-| GCC | | [4.8+](https://gcc.gnu.org/) (C++11 support) | | | |
+| GCC | | [7+](https://gcc.gnu.org/) (C++17 support) | | | |
| HarfBuzz-NG | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) |
| libevent | [2.1.11-stable](https://github.com/libevent/libevent/releases) | [2.0.21](https://github.com/bitcoin/bitcoin/pull/18676) | No | | |
| libpng | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) |
| librsvg | | | | | |
| MiniUPnPc | [2.0.20180203](https://miniupnp.tuxfamily.org/files) | | No | | |
| PCRE | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) |
-| Python (tests) | | [3.5](https://www.python.org/downloads) | | | |
+| Python (tests) | | [3.6](https://www.python.org/downloads) | | | |
| qrencode | [3.4.4](https://fukuchi.org/works/qrencode) | | No | | |
| Qt | [5.9.8](https://download.qt.io/official_releases/qt/) | [5.5.1](https://github.com/bitcoin/bitcoin/issues/13478) | No | | |
+| SQLite | [3.32.1](https://sqlite.org/download.html) | [3.7.17](https://github.com/bitcoin/bitcoin/pull/19077) | | | |
| XCB | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) (Linux only) |
| xkbcommon | | | | | [Yes](https://github.com/bitcoin/bitcoin/blob/master/depends/packages/qt.mk) (Linux only) |
| ZeroMQ | [4.3.1](https://github.com/zeromq/libzmq/releases) | 4.0.0 | No | | |
@@ -32,7 +33,8 @@ Some dependencies are not needed in all configurations. The following are some f
#### Options passed to `./configure`
* MiniUPnPc is not needed with `--with-miniupnpc=no`.
-* Berkeley DB is not needed with `--disable-wallet`.
+* Berkeley DB is not needed with `--disable-wallet` or `--without-bdb`.
+* SQLite is not needed with `--disable-wallet` or `--without-sqlite`.
* Qt is not needed with `--without-gui`.
* If the qrencode dependency is absent, QR support won't be added. To force an error when that happens, pass `--with-qrencode`.
* ZeroMQ is needed only with the `--with-zmq` option.
diff --git a/doc/descriptors.md b/doc/descriptors.md
index 181ff77e50..63acb9167f 100644
--- a/doc/descriptors.md
+++ b/doc/descriptors.md
@@ -50,7 +50,7 @@ Output descriptors currently support:
- `wsh(multi(2,03a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7,03774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb,03d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a))` describes a P2WSH *2-of-3* multisig output with keys in the specified order.
- `sh(wsh(multi(1,03f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8,03499fdf9e895e719cfd64e67f07d38e3226aa7b63678949e6e49b241a60e823e4,02d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e)))` describes a P2SH-P2WSH *1-of-3* multisig output with keys in the specified order.
- `pk(xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8)` describes a P2PK output with the public key of the specified xpub.
-- `pkh(xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw/1'/2)` describes a P2PKH output with child key *1'/2* of the specified xpub.
+- `pkh(xpub68Gmy5EdvgibQVfPdqkBBCHxA5htiqg55crXYuXoQRKfDBFA1WEjWgP6LHhwBZeNK1VTsfTFUHCdrfp1bgwQ9xv5ski8PX9rL2dZXvgGDnw/1/2)` describes a P2PKH output with child key *1/2* of the specified xpub.
- `pkh([d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/1/*)` describes a set of P2PKH outputs, but additionally specifies that the specified xpub is a child of a master with fingerprint `d34db33f`, and derived using path `44'/0'/0'`.
- `wsh(multi(1,xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB/1/0/*,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/0/0/*))` describes a set of *1-of-2* P2WSH multisig outputs where the first multisig key is the *1/0/`i`* child of the first specified xpub and the second multisig key is the *0/0/`i`* child of the second specified xpub, and `i` is any number in a configurable range (`0-1000` by default).
- `wsh(sortedmulti(1,xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB/1/0/*,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/0/0/*))` describes a set of *1-of-2* P2WSH multisig outputs where one multisig key is the *1/0/`i`* child of the first specified xpub and the other multisig key is the *0/0/`i`* child of the second specified xpub, and `i` is any number in a configurable range (`0-1000` by default). The order of public keys in the resulting witnessScripts is determined by the lexicographic order of the public keys at that index.
diff --git a/doc/developer-notes.md b/doc/developer-notes.md
index fa188dbcd6..9cb416bb30 100644
--- a/doc/developer-notes.md
+++ b/doc/developer-notes.md
@@ -276,6 +276,33 @@ configure option adds `-DDEBUG_LOCKORDER` to the compiler flags. This inserts
run-time checks to keep track of which locks are held and adds warnings to the
`debug.log` file if inconsistencies are detected.
+### Assertions and Checks
+
+The util file `src/util/check.h` offers helpers to protect against coding and
+internal logic bugs. They must never be used to validate user, network or any
+other input.
+
+* `assert` or `Assert` should be used to document assumptions when any
+ violation would mean that it is not safe to continue program execution. The
+ code is always compiled with assertions enabled.
+ - For example, a nullptr dereference or any other logic bug in validation
+ code means the program code is faulty and must terminate immediately.
+* `CHECK_NONFATAL` should be used for recoverable internal logic bugs. On
+ failure, it will throw an exception, which can be caught to recover from the
+ error.
+ - For example, a nullptr dereference or any other logic bug in RPC code
+ means that the RPC code is faulty and can not be executed. However, the
+ logic bug can be shown to the user and the program can continue to run.
+* `Assume` should be used to document assumptions when program execution can
+ safely continue even if the assumption is violated. In debug builds it
+ behaves like `Assert`/`assert` to notify developers and testers about
+ nonfatal errors. In production it doesn't warn or log anything, though the
+ expression is always evaluated.
+ - For example it can be assumed that a variable is only initialized once,
+ but a failed assumption does not result in a fatal bug. A failed
+ assumption may or may not result in a slightly degraded user experience,
+ but it is safe to continue program execution.
+
### Valgrind suppressions file
Valgrind is a programming tool for memory debugging, memory leak detection, and
diff --git a/doc/files.md b/doc/files.md
index 52e094a60b..545e8fc92c 100644
--- a/doc/files.md
+++ b/doc/files.md
@@ -8,6 +8,10 @@
- [Multi-wallet environment](#multi-wallet-environment)
+ - [Berkeley DB database based wallets](#berkeley-db-database-based-wallets)
+
+ - [SQLite database based wallets](#sqlite-database-based-wallets)
+
- [GUI settings](#gui-settings)
- [Legacy subdirectories and files](#legacy-subdirectories-and-files)
@@ -26,15 +30,16 @@ Linux | `$HOME/.bitcoin/`
macOS | `$HOME/Library/Application Support/Bitcoin/`
Windows | `%APPDATA%\Bitcoin\` <sup>[\[1\]](#note1)</sup>
-2. The non-default data directory path can be specified by `-datadir` option.
+2. A custom data directory path can be specified with the `-datadir` option.
3. All content of the data directory, except for `bitcoin.conf` file, is chain-specific. This means the actual data directory paths for non-mainnet cases differ:
-Chain option | Data directory path
---------------------|--------------------
-no option (mainnet) | *path_to_datadir*`/`
-`-testnet` | *path_to_datadir*`/testnet3/`
-`-regtest` | *path_to_datadir*`/regtest/`
+Chain option | Data directory path
+-------------------------------|------------------------------
+`-chain=main` (default) | *path_to_datadir*`/`
+`-chain=test` or `-testnet` | *path_to_datadir*`/testnet3/`
+`-chain=signet` or `-signet` | *path_to_datadir*`/signet/`
+`-chain=regtest` or `-regtest` | *path_to_datadir*`/regtest/`
## Data directory layout
@@ -44,19 +49,21 @@ Subdirectory | File(s) | Description
`blocks/index/` | LevelDB database | Block index; `-blocksdir` option does not affect this path
`blocks/` | `blkNNNNN.dat`<sup>[\[2\]](#note2)</sup> | Actual Bitcoin blocks (in network format, dumped in raw on disk, 128 MiB per file)
`blocks/` | `revNNNNN.dat`<sup>[\[2\]](#note2)</sup> | Block undo data (custom format)
-`chainstate/` | LevelDB database | Blockchain state (a compact representation of all currently unspent transaction outputs and some metadata about the transactions they are from)
+`chainstate/` | LevelDB database | Blockchain state (a compact representation of all currently unspent transaction outputs (UTXOs) and metadata about the transactions they are from)
`indexes/txindex/` | LevelDB database | Transaction index; *optional*, used if `-txindex=1`
`indexes/blockfilter/basic/db/` | LevelDB database | Blockfilter index LevelDB database for the basic filtertype; *optional*, used if `-blockfilterindex=basic`
`indexes/blockfilter/basic/` | `fltrNNNNN.dat`<sup>[\[2\]](#note2)</sup> | Blockfilter index filters for the basic filtertype; *optional*, used if `-blockfilterindex=basic`
-`wallets/` | | [Contains wallets](#multi-wallet-environment); can be specified by `-walletdir` option; if `wallets/` subdirectory does not exist, a wallet resides in the data directory
+`wallets/` | | [Contains wallets](#multi-wallet-environment); can be specified by `-walletdir` option; if `wallets/` subdirectory does not exist, wallets reside in the [data directory](#data-directory-location)
+`./` | `anchors.dat` | Anchor IP address database, created on shutdown and deleted at startup. Anchors are last known outgoing block-relay-only peers that are tried to re-connect to on startup
`./` | `banlist.dat` | Stores the IPs/subnets of banned nodes
`./` | `bitcoin.conf` | User-defined [configuration settings](bitcoin-conf.md) for `bitcoind` or `bitcoin-qt`. File is not written to by the software and must be created manually. Path can be specified by `-conf` option
`./` | `bitcoind.pid` | Stores the process ID (PID) of `bitcoind` or `bitcoin-qt` while running; created at start and deleted on shutdown; can be specified by `-pid` option
`./` | `debug.log` | Contains debug information and general logging generated by `bitcoind` or `bitcoin-qt`; can be specified by `-debuglogfile` option
`./` | `fee_estimates.dat` | Stores statistics used to estimate minimum transaction fees and priorities required for confirmation
`./` | `guisettings.ini.bak` | Backup of former [GUI settings](#gui-settings) after `-resetguisettings` option is used
+`./` | `ip_asn.map` | IP addresses to Autonomous System Numbers (ASNs) mapping used for bucketing of the peers; path can be specified with the `-asmap` option
`./` | `mempool.dat` | Dump of the mempool's transactions
-`./` | `onion_private_key` | Cached Tor onion service private key for `-listenonion` option
+`./` | `onion_v3_private_key` | Cached Tor onion service private key for `-listenonion` option
`./` | `peers.dat` | Peer IP address database (custom format)
`./` | `settings.json` | Read-write settings set through GUI or RPC interfaces, augmenting manual settings from [bitcoin.conf](bitcoin-conf.md). File is created automatically if read-write settings storage is not disabled with `-nosettings` option. Path can be specified with `-settings` option
`./` | `.cookie` | Session RPC authentication cookie; if used, created at start and deleted on shutdown; can be specified by `-rpccookiefile` option
@@ -64,25 +71,36 @@ Subdirectory | File(s) | Description
## Multi-wallet environment
-Wallets are Berkeley DB (BDB) databases:
-
-Subdirectory | File(s) | Description
--------------|-------------------|------------
-`database/` | BDB logging files | Part of BDB environment; created at start and deleted on shutdown; a user *must keep it as safe* as personal wallet `wallet.dat`
-`./` | `db.log` | BDB error file
-`./` | `wallet.dat` | Personal wallet (BDB) with keys and transactions
-`./` | `.walletlock` | Wallet lock file
+Wallets are Berkeley DB (BDB) or SQLite databases.
-1. Each user-defined wallet named "wallet_name" resides in `wallets/wallet_name/` subdirectory.
+1. Each user-defined wallet named "wallet_name" resides in the `wallets/wallet_name/` subdirectory.
2. The default (unnamed) wallet resides in `wallets/` subdirectory; if the latter does not exist, the wallet resides in the data directory.
-3. A wallet database path can be specified by `-wallet` option.
+3. A wallet database path can be specified with the `-wallet` option.
4. `wallet.dat` files must not be shared across different node instances, as that can result in key-reuse and double-spends due the lack of synchronization between instances.
5. Any copy or backup of the wallet should be done through a `backupwallet` call in order to update and lock the wallet, preventing any file corruption caused by updates during the copy.
+
+### Berkeley DB database based wallets
+
+Subdirectory | File(s) | Description
+-------------|-------------------|-------------
+`database/` | BDB logging files | Part of BDB environment; created at start and deleted on shutdown; a user *must keep it as safe* as personal wallet `wallet.dat`
+`./` | `db.log` | BDB error file
+`./` | `wallet.dat` | Personal wallet (a BDB database) with keys and transactions
+`./` | `.walletlock` | BDB wallet lock file
+
+### SQLite database based wallets
+
+Subdirectory | File | Description
+-------------|----------------------|-------------
+`./` | `wallet.dat` | Personal wallet (a SQLite database) with keys and transactions
+`./` | `wallet.dat-journal` | SQLite Rollback Journal file for `wallet.dat`. Usually created at start and deleted on shutdown. A user *must keep it as safe* as the `wallet.dat` file.
+
+
## GUI settings
`bitcoin-qt` uses [`QSettings`](https://doc.qt.io/qt-5/qsettings.html) class; this implies platform-specific [locations where application settings are stored](https://doc.qt.io/qt-5/qsettings.html#locations-where-application-settings-are-stored).
@@ -98,10 +116,10 @@ Path | Description | Repository notes
`blkindex.dat` | Blockchain index BDB database; replaced by {`chainstate/`, `blocks/index/`, `blocks/revNNNNN.dat`<sup>[\[2\]](#note2)</sup>} in 0.8.0 | [PR #1677](https://github.com/bitcoin/bitcoin/pull/1677)
`blk000?.dat` | Block data (custom format, 2 GiB per file); replaced by `blocks/blkNNNNN.dat`<sup>[\[2\]](#note2)</sup> in 0.8.0 | [PR #1677](https://github.com/bitcoin/bitcoin/pull/1677)
`addr.dat` | Peer IP address BDB database; replaced by `peers.dat` in [0.7.0](https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.7.0.md) | [PR #1198](https://github.com/bitcoin/bitcoin/pull/1198), [`928d3a01`](https://github.com/bitcoin/bitcoin/commit/928d3a011cc66c7f907c4d053f674ea77dc611cc)
+`onion_private_key` | Cached Tor onion service private key for `-listenonion` option. Was used for Tor v2 services; replaced by `onion_v3_private_key` in [0.21.0](https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.21.0.md) | [PR #19954](https://github.com/bitcoin/bitcoin/pull/19954)
## Notes
-<a name="note1">1</a>. The `/` (slash, U+002F) is used as the platform-independent path component separator in this paper.
+<a name="note1">1</a>. The `/` (slash, U+002F) is used as the platform-independent path component separator in this document.
<a name="note2">2</a>. `NNNNN` matches `[0-9]{5}` regex.
-
diff --git a/doc/man/bitcoin-cli.1 b/doc/man/bitcoin-cli.1
index 129651d8e9..588ae81fce 100644
--- a/doc/man/bitcoin-cli.1
+++ b/doc/man/bitcoin-cli.1
@@ -1,115 +1,5 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
-.TH BITCOIN-CLI "1" "February 2019" "bitcoin-cli v0.17.99.0" "User Commands"
+.TH BITCOIN-CLI "1"
.SH NAME
-bitcoin-cli \- manual page for bitcoin-cli v0.17.99.0
-.SH SYNOPSIS
-.B bitcoin-cli
-[\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR] \fI\,Send command to Bitcoin Core\/\fR
-.br
-.B bitcoin-cli
-[\fI\,options\/\fR] \fI\,-named <command> \/\fR[\fI\,name=value\/\fR]... \fI\,Send command to Bitcoin Core (with named arguments)\/\fR
-.br
-.B bitcoin-cli
-[\fI\,options\/\fR] \fI\,help List commands\/\fR
-.br
-.B bitcoin-cli
-[\fI\,options\/\fR] \fI\,help <command> Get help for a command\/\fR
-.SH DESCRIPTION
-Bitcoin Core RPC client version v0.17.99.0
-.SH OPTIONS
-.HP
-\-?
-.IP
-Print this help message and exit
-.HP
-\fB\-conf=\fR<file>
-.IP
-Specify configuration file. Relative paths will be prefixed by datadir
-location. (default: bitcoin.conf)
-.HP
-\fB\-datadir=\fR<dir>
-.IP
-Specify data directory
-.HP
-\fB\-getinfo\fR
-.IP
-Get general information from the remote server. Note that unlike
-server\-side RPC calls, the results of \fB\-getinfo\fR is the result of
-multiple non\-atomic requests. Some entries in the result may
-represent results from different states (e.g. wallet balance may
-be as of a different block from the chain state reported)
-.HP
-\fB\-named\fR
-.IP
-Pass named instead of positional arguments (default: false)
-.HP
-\fB\-rpcclienttimeout=\fR<n>
-.IP
-Timeout in seconds during HTTP requests, or 0 for no timeout. (default:
-900)
-.HP
-\fB\-rpcconnect=\fR<ip>
-.IP
-Send commands to node running on <ip> (default: 127.0.0.1)
-.HP
-\fB\-rpccookiefile=\fR<loc>
-.IP
-Location of the auth cookie. Relative paths will be prefixed by a
-net\-specific datadir location. (default: data dir)
-.HP
-\fB\-rpcpassword=\fR<pw>
-.IP
-Password for JSON\-RPC connections
-.HP
-\fB\-rpcport=\fR<port>
-.IP
-Connect to JSON\-RPC on <port> (default: 8332, testnet: 18332, regtest:
-18443)
-.HP
-\fB\-rpcuser=\fR<user>
-.IP
-Username for JSON\-RPC connections
-.HP
-\fB\-rpcwait\fR
-.IP
-Wait for RPC server to start
-.HP
-\fB\-rpcwallet=\fR<walletname>
-.IP
-Send RPC for non\-default wallet on RPC server (needs to exactly match
-corresponding \fB\-wallet\fR option passed to bitcoind). This changes
-the RPC endpoint used, e.g.
-http://127.0.0.1:8332/wallet/<walletname>
-.HP
-\fB\-stdin\fR
-.IP
-Read extra arguments from standard input, one per line until EOF/Ctrl\-D
-(recommended for sensitive information such as passphrases). When
-combined with \fB\-stdinrpcpass\fR, the first line from standard input
-is used for the RPC password.
-.HP
-\fB\-stdinrpcpass\fR
-.IP
-Read RPC password from standard input as a single line. When combined
-with \fB\-stdin\fR, the first line from standard input is used for the
-RPC password.
-.HP
-\fB\-version\fR
-.IP
-Print version and exit
-.PP
-Chain selection options:
-.HP
-\fB\-testnet\fR
-.IP
-Use the test chain
-.SH COPYRIGHT
-Copyright (C) 2009-2019 The Bitcoin Core developers
+bitcoin-cli \- manual page for bitcoin-cli
-Please contribute if you find Bitcoin Core useful. Visit
-<https://bitcoincore.org> for further information about the software.
-The source code is available from <https://github.com/bitcoin/bitcoin>.
-
-This is experimental software.
-Distributed under the MIT software license, see the accompanying file COPYING
-or <https://opensource.org/licenses/MIT>
+This is a placefolder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release.
diff --git a/doc/man/bitcoin-qt.1 b/doc/man/bitcoin-qt.1
index f68be21e8d..9c75e9fe54 100644
--- a/doc/man/bitcoin-qt.1
+++ b/doc/man/bitcoin-qt.1
@@ -1,610 +1,5 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
-.TH BITCOIN-QT "1" "February 2019" "bitcoin-qt v0.17.99.0" "User Commands"
+.TH BITCOIN-QT "1"
.SH NAME
-bitcoin-qt \- manual page for bitcoin-qt v0.17.99.0
-.SH SYNOPSIS
-.B bitcoin-qt
-[\fI\,command-line options\/\fR]
-.SH DESCRIPTION
-Bitcoin Core version v0.17.99.0 (64\-bit)
-.SH OPTIONS
-.HP
-\-?
-.IP
-Print this help message and exit
-.HP
-\fB\-alertnotify=\fR<cmd>
-.IP
-Execute command when a relevant alert is received or we see a really
-long fork (%s in cmd is replaced by message)
-.HP
-\fB\-assumevalid=\fR<hex>
-.IP
-If this block is in the chain assume that it and its ancestors are valid
-and potentially skip their script verification (0 to verify all,
-default:
-0000000000000000002e63058c023a9a1de233554f28c7b21380b6c9003f36a8,
-testnet:
-0000000000000037a8cd3e06cd5edbfe9dd1dbcc5dacab279376ef7cfc2b4c75)
-.HP
-\fB\-blocknotify=\fR<cmd>
-.IP
-Execute command when the best block changes (%s in cmd is replaced by
-block hash)
-.HP
-\fB\-blockreconstructionextratxn=\fR<n>
-.IP
-Extra transactions to keep in memory for compact block reconstructions
-(default: 100)
-.HP
-\fB\-blocksdir=\fR<dir>
-.IP
-Specify blocks directory (default: <datadir>/blocks)
-.HP
-\fB\-conf=\fR<file>
-.IP
-Specify configuration file. Relative paths will be prefixed by datadir
-location. (default: bitcoin.conf)
-.HP
-\fB\-daemon\fR
-.IP
-Run in the background as a daemon and accept commands
-.HP
-\fB\-datadir=\fR<dir>
-.IP
-Specify data directory
-.HP
-\fB\-dbcache=\fR<n>
-.IP
-Set database cache size in MiB (4 to 16384, default: 450)
-.HP
-\fB\-debuglogfile=\fR<file>
-.IP
-Specify location of debug log file. Relative paths will be prefixed by a
-net\-specific datadir location. (\fB\-nodebuglogfile\fR to disable;
-default: debug.log)
-.HP
-\fB\-includeconf=\fR<file>
-.IP
-Specify additional configuration file, relative to the \fB\-datadir\fR path
-(only useable from configuration file, not command line)
-.HP
-\fB\-loadblock=\fR<file>
-.IP
-Imports blocks from external blk000??.dat file on startup
-.HP
-\fB\-maxmempool=\fR<n>
-.IP
-Keep the transaction memory pool below <n> megabytes (default: 300)
-.HP
-\fB\-maxorphantx=\fR<n>
-.IP
-Keep at most <n> unconnectable transactions in memory (default: 100)
-.HP
-\fB\-mempoolexpiry=\fR<n>
-.IP
-Do not keep transactions in the mempool longer than <n> hours (default:
-336)
-.HP
-\fB\-par=\fR<n>
-.IP
-Set the number of script verification threads (\fB\-8\fR to 16, 0 = auto, <0 =
-leave that many cores free, default: 0)
-.HP
-\fB\-persistmempool\fR
-.IP
-Whether to save the mempool on shutdown and load on restart (default: 1)
-.HP
-\fB\-pid=\fR<file>
-.IP
-Specify pid file. Relative paths will be prefixed by a net\-specific
-datadir location. (default: bitcoind.pid)
-.HP
-\fB\-prune=\fR<n>
-.IP
-Reduce storage requirements by enabling pruning (deleting) of old
-blocks. This allows the pruneblockchain RPC to be called to
-delete specific blocks, and enables automatic pruning of old
-blocks if a target size in MiB is provided. This mode is
-incompatible with \fB\-txindex\fR and \fB\-rescan\fR. Warning: Reverting this
-setting requires re\-downloading the entire blockchain. (default:
-0 = disable pruning blocks, 1 = allow manual pruning via RPC,
->=550 = automatically prune block files to stay under the
-specified target size in MiB)
-.HP
-\fB\-reindex\fR
-.IP
-Rebuild chain state and block index from the blk*.dat files on disk
-.HP
-\fB\-reindex\-chainstate\fR
-.IP
-Rebuild chain state from the currently indexed blocks. When in pruning
-mode or if blocks on disk might be corrupted, use full \fB\-reindex\fR
-instead.
-.HP
-\fB\-sysperms\fR
-.IP
-Create new files with system default permissions, instead of umask 077
-(only effective with disabled wallet functionality)
-.HP
-\fB\-txindex\fR
-.IP
-Maintain a full transaction index, used by the getrawtransaction rpc
-call (default: 0)
-.HP
-\fB\-version\fR
-.IP
-Print version and exit
-.PP
-Connection options:
-.HP
-\fB\-addnode=\fR<ip>
-.IP
-Add a node to connect to and attempt to keep the connection open (see
-the `addnode` RPC command help for more info). This option can be
-specified multiple times to add multiple nodes.
-.HP
-\fB\-banscore=\fR<n>
-.IP
-Threshold for disconnecting misbehaving peers (default: 100)
-.HP
-\fB\-bantime=\fR<n>
-.IP
-Number of seconds to keep misbehaving peers from reconnecting (default:
-86400)
-.HP
-\fB\-bind=\fR<addr>
-.IP
-Bind to given address and always listen on it. Use [host]:port notation
-for IPv6
-.HP
-\fB\-connect=\fR<ip>
-.IP
-Connect only to the specified node; \fB\-noconnect\fR disables automatic
-connections (the rules for this peer are the same as for
-\fB\-addnode\fR). This option can be specified multiple times to connect
-to multiple nodes.
-.HP
-\fB\-discover\fR
-.IP
-Discover own IP addresses (default: 1 when listening and no \fB\-externalip\fR
-or \fB\-proxy\fR)
-.HP
-\fB\-dns\fR
-.IP
-Allow DNS lookups for \fB\-addnode\fR, \fB\-seednode\fR and \fB\-connect\fR (default: 1)
-.HP
-\fB\-dnsseed\fR
-.IP
-Query for peer addresses via DNS lookup, if low on addresses (default: 1
-unless \fB\-connect\fR used)
-.HP
-\fB\-externalip=\fR<ip>
-.IP
-Specify your own public address
-.HP
-\fB\-forcednsseed\fR
-.IP
-Always query for peer addresses via DNS lookup (default: 0)
-.HP
-\fB\-listen\fR
-.IP
-Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\fR)
-.HP
-\fB\-listenonion\fR
-.IP
-Automatically create Tor hidden service (default: 1)
-.HP
-\fB\-maxconnections=\fR<n>
-.IP
-Maintain at most <n> connections to peers (default: 125)
-.HP
-\fB\-maxreceivebuffer=\fR<n>
-.IP
-Maximum per\-connection receive buffer, <n>*1000 bytes (default: 5000)
-.HP
-\fB\-maxsendbuffer=\fR<n>
-.IP
-Maximum per\-connection send buffer, <n>*1000 bytes (default: 1000)
-.HP
-\fB\-maxtimeadjustment\fR
-.IP
-Maximum allowed median peer time offset adjustment. Local perspective of
-time may be influenced by peers forward or backward by this
-amount. (default: 4200 seconds)
-.HP
-\fB\-maxuploadtarget=\fR<n>
-.IP
-Tries to keep outbound traffic under the given target (in MiB per 24h),
-0 = no limit (default: 0)
-.HP
-\fB\-onion=\fR<ip:port>
-.IP
-Use separate SOCKS5 proxy to reach peers via Tor hidden services, set
-\fB\-noonion\fR to disable (default: \fB\-proxy\fR)
-.HP
-\fB\-onlynet=\fR<net>
-.IP
-Make outgoing connections only through network <net> (ipv4, ipv6 or
-onion). Incoming connections are not affected by this option.
-This option can be specified multiple times to allow multiple
-networks.
-.HP
-\fB\-peerbloomfilters\fR
-.IP
-Support filtering of blocks and transaction with bloom filters (default:
-1)
-.HP
-\fB\-permitbaremultisig\fR
-.IP
-Relay non\-P2SH multisig (default: 1)
-.HP
-\fB\-port=\fR<port>
-.IP
-Listen for connections on <port> (default: 8333, testnet: 18333,
-regtest: 18444)
-.HP
-\fB\-proxy=\fR<ip:port>
-.IP
-Connect through SOCKS5 proxy, set \fB\-noproxy\fR to disable (default:
-disabled)
-.HP
-\fB\-proxyrandomize\fR
-.IP
-Randomize credentials for every proxy connection. This enables Tor
-stream isolation (default: 1)
-.HP
-\fB\-seednode=\fR<ip>
-.IP
-Connect to a node to retrieve peer addresses, and disconnect. This
-option can be specified multiple times to connect to multiple
-nodes.
-.HP
-\fB\-timeout=\fR<n>
-.IP
-Specify connection timeout in milliseconds (minimum: 1, default: 5000)
-.HP
-\fB\-torcontrol=\fR<ip>:<port>
-.IP
-Tor control port to use if onion listening enabled (default:
-127.0.0.1:9051)
-.HP
-\fB\-torpassword=\fR<pass>
-.IP
-Tor control port password (default: empty)
-.HP
-\fB\-upnp\fR
-.IP
-Use UPnP to map the listening port (default: 0)
-.HP
-\fB\-whitebind=\fR<addr>
-.IP
-Bind to given address and whitelist peers connecting to it. Use
-[host]:port notation for IPv6
-.HP
-\fB\-whitelist=\fR<IP address or network>
-.IP
-Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or
-CIDR notated network (e.g. 1.2.3.0/24). Can be specified multiple
-times. Whitelisted peers cannot be DoS banned and their
-transactions are always relayed, even if they are already in the
-mempool, useful e.g. for a gateway
-.PP
-Wallet options:
-.HP
-\fB\-addresstype\fR
-.IP
-What type of addresses to use ("legacy", "p2sh\-segwit", or "bech32",
-default: "p2sh\-segwit")
-.HP
-\fB\-avoidpartialspends\fR
-.IP
-Group outputs by address, selecting all or none, instead of selecting on
-a per\-output basis. Privacy is improved as an address is only
-used once (unless someone sends to it after spending from it),
-but may result in slightly higher fees as suboptimal coin
-selection may result due to the added limitation (default: 0)
-.HP
-\fB\-changetype\fR
-.IP
-What type of change to use ("legacy", "p2sh\-segwit", or "bech32").
-Default is same as \fB\-addresstype\fR, except when
-\fB\-addresstype\fR=\fI\,p2sh\-segwit\/\fR a native segwit output is used when
-sending to a native segwit address)
-.HP
-\fB\-disablewallet\fR
-.IP
-Do not load the wallet and disable wallet RPC calls
-.HP
-\fB\-discardfee=\fR<amt>
-.IP
-The fee rate (in BTC/kB) that indicates your tolerance for discarding
-change by adding it to the fee (default: 0.0001). Note: An output
-is discarded if it is dust at this rate, but we will always
-discard up to the dust relay fee and a discard fee above that is
-limited by the fee estimate for the longest target
-.HP
-\fB\-fallbackfee=\fR<amt>
-.IP
-A fee rate (in BTC/kB) that will be used when fee estimation has
-insufficient data (default: 0.0002)
-.HP
-\fB\-keypool=\fR<n>
-.IP
-Set key pool size to <n> (default: 1000)
-.HP
-\fB\-mintxfee=\fR<amt>
-.IP
-Fees (in BTC/kB) smaller than this are considered zero fee for
-transaction creation (default: 0.00001)
-.HP
-\fB\-paytxfee=\fR<amt>
-.IP
-Fee (in BTC/kB) to add to transactions you send (default: 0.00)
-.HP
-\fB\-rescan\fR
-.IP
-Rescan the block chain for missing wallet transactions on startup
-.HP
-\fB\-salvagewallet\fR
-.IP
-Attempt to recover private keys from a corrupt wallet on startup
-.HP
-\fB\-spendzeroconfchange\fR
-.IP
-Spend unconfirmed change when sending transactions (default: 1)
-.HP
-\fB\-txconfirmtarget=\fR<n>
-.IP
-If paytxfee is not set, include enough fee so transactions begin
-confirmation on average within n blocks (default: 6)
-.HP
-\fB\-upgradewallet\fR
-.IP
-Upgrade wallet to latest format on startup
-.HP
-\fB\-wallet=\fR<path>
-.IP
-Specify wallet database path. Can be specified multiple times to load
-multiple wallets. Path is interpreted relative to <walletdir> if
-it is not absolute, and will be created if it does not exist (as
-a directory containing a wallet.dat file and log files). For
-backwards compatibility this will also accept names of existing
-data files in <walletdir>.)
-.HP
-\fB\-walletbroadcast\fR
-.IP
-Make the wallet broadcast transactions (default: 1)
-.HP
-\fB\-walletdir=\fR<dir>
-.IP
-Specify directory to hold wallets (default: <datadir>/wallets if it
-exists, otherwise <datadir>)
-.HP
-\fB\-walletnotify=\fR<cmd>
-.IP
-Execute command when a wallet transaction changes (%s in cmd is replaced
-by TxID)
-.HP
-\fB\-walletrbf\fR
-.IP
-Send transactions with full\-RBF opt\-in enabled (RPC only, default: 0)
-.HP
-\fB\-zapwallettxes=\fR<mode>
-.IP
-Delete all wallet transactions and only recover those parts of the
-blockchain through \fB\-rescan\fR on startup (1 = keep tx meta data e.g.
-payment request information, 2 = drop tx meta data)
-.PP
-ZeroMQ notification options:
-.HP
-\fB\-zmqpubhashblock=\fR<address>
-.IP
-Enable publish hash block in <address>
-.HP
-\fB\-zmqpubhashtx=\fR<address>
-.IP
-Enable publish hash transaction in <address>
-.HP
-\fB\-zmqpubrawblock=\fR<address>
-.IP
-Enable publish raw block in <address>
-.HP
-\fB\-zmqpubrawtx=\fR<address>
-.IP
-Enable publish raw transaction in <address>
-.PP
-Debugging/Testing options:
-.HP
-\fB\-debug=\fR<category>
-.IP
-Output debugging information (default: \fB\-nodebug\fR, supplying <category> is
-optional). If <category> is not supplied or if <category> = 1,
-output all debugging information. <category> can be: net, tor,
-mempool, http, bench, zmq, db, rpc, estimatefee, addrman,
-selectcoins, reindex, cmpctblock, rand, prune, proxy, mempoolrej,
-libevent, coindb, qt, leveldb.
-.HP
-\fB\-debugexclude=\fR<category>
-.IP
-Exclude debugging information for a category. Can be used in conjunction
-with \fB\-debug\fR=\fI\,1\/\fR to output debug logs for all categories except one
-or more specified categories.
-.HP
-\fB\-help\-debug\fR
-.IP
-Print help message with debugging options and exit
-.HP
-\fB\-logips\fR
-.IP
-Include IP addresses in debug output (default: 0)
-.HP
-\fB\-logtimestamps\fR
-.IP
-Prepend debug output with timestamp (default: 1)
-.HP
-\fB\-maxtxfee=\fR<amt>
-.IP
-Maximum total fees (in BTC) to use in a single wallet transaction or raw
-transaction; setting this too low may abort large transactions
-(default: 0.10)
-.HP
-\fB\-printtoconsole\fR
-.IP
-Send trace/debug info to console (default: 1 when no \fB\-daemon\fR. To disable
-logging to file, set \fB\-nodebuglogfile\fR)
-.HP
-\fB\-shrinkdebugfile\fR
-.IP
-Shrink debug.log file on client startup (default: 1 when no \fB\-debug\fR)
-.HP
-\fB\-uacomment=\fR<cmt>
-.IP
-Append comment to the user agent string
-.PP
-Chain selection options:
-.HP
-\fB\-testnet\fR
-.IP
-Use the test chain
-.PP
-Node relay options:
-.HP
-\fB\-bytespersigop\fR
-.IP
-Equivalent bytes per sigop in transactions for relay and mining
-(default: 20)
-.HP
-\fB\-datacarrier\fR
-.IP
-Relay and mine data carrier transactions (default: 1)
-.HP
-\fB\-datacarriersize\fR
-.IP
-Maximum size of data in data carrier transactions we relay and mine
-(default: 83)
-.HP
-.HP
-\fB\-minrelaytxfee=\fR<amt>
-.IP
-Fees (in BTC/kB) smaller than this are considered zero fee for relaying,
-mining and transaction creation (default: 0.00001)
-.HP
-\fB\-whitelistforcerelay\fR
-.IP
-Force relay of transactions from whitelisted peers even if they violate
-local relay policy (default: 0)
-.HP
-\fB\-whitelistrelay\fR
-.IP
-Accept relayed transactions received from whitelisted peers even when
-not relaying transactions (default: 1)
-.PP
-Block creation options:
-.HP
-\fB\-blockmaxweight=\fR<n>
-.IP
-Set maximum BIP141 block weight (default: 3996000)
-.HP
-\fB\-blockmintxfee=\fR<amt>
-.IP
-Set lowest fee rate (in BTC/kB) for transactions to be included in block
-creation. (default: 0.00001)
-.PP
-RPC server options:
-.HP
-\fB\-rest\fR
-.IP
-Accept public REST requests (default: 0)
-.HP
-\fB\-rpcallowip=\fR<ip>
-.IP
-Allow JSON\-RPC connections from specified source. Valid for <ip> are a
-single IP (e.g. 1.2.3.4), a network/netmask (e.g.
-1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This
-option can be specified multiple times
-.HP
-\fB\-rpcauth=\fR<userpw>
-.IP
-Username and HMAC\-SHA\-256 hashed password for JSON\-RPC connections. The
-field <userpw> comes in the format: <USERNAME>:<SALT>$<HASH>. A
-canonical python script is included in share/rpcauth. The client
-then connects normally using the
-rpcuser=<USERNAME>/rpcpassword=<PASSWORD> pair of arguments. This
-option can be specified multiple times
-.HP
-\fB\-rpcbind=\fR<addr>[:port]
-.IP
-Bind to given address to listen for JSON\-RPC connections. Do not expose
-the RPC server to untrusted networks such as the public internet!
-This option is ignored unless \fB\-rpcallowip\fR is also passed. Port is
-optional and overrides \fB\-rpcport\fR. Use [host]:port notation for
-IPv6. This option can be specified multiple times (default:
-127.0.0.1 and ::1 i.e., localhost)
-.HP
-\fB\-rpccookiefile=\fR<loc>
-.IP
-Location of the auth cookie. Relative paths will be prefixed by a
-net\-specific datadir location. (default: data dir)
-.HP
-\fB\-rpcpassword=\fR<pw>
-.IP
-Password for JSON\-RPC connections
-.HP
-\fB\-rpcport=\fR<port>
-.IP
-Listen for JSON\-RPC connections on <port> (default: 8332, testnet:
-18332, regtest: 18443)
-.HP
-\fB\-rpcserialversion\fR
-.IP
-Sets the serialization of raw transaction or block hex returned in
-non\-verbose mode, non\-segwit(0) or segwit(1) (default: 1)
-.HP
-\fB\-rpcthreads=\fR<n>
-.IP
-Set the number of threads to service RPC calls (default: 4)
-.HP
-\fB\-rpcuser=\fR<user>
-.IP
-Username for JSON\-RPC connections
-.HP
-\fB\-server\fR
-.IP
-Accept command line and JSON\-RPC commands
-.PP
-UI Options:
-.HP
-\fB\-choosedatadir\fR
-.IP
-Choose data directory on startup (default: 0)
-.HP
-\fB\-lang=\fR<lang>
-.IP
-Set language, for example "de_DE" (default: system locale)
-.HP
-\fB\-min\fR
-.IP
-Start minimized
-.HP
-\fB\-resetguisettings\fR
-.IP
-Reset all settings changed in the GUI
-.HP
-\fB\-rootcertificates=\fR<file>
-.IP
-Set SSL root certificates for payment request (default: \fB\-system\-\fR)
-.HP
-\fB\-splash\fR
-.IP
-Show splash screen on startup (default: 1)
-.SH COPYRIGHT
-Copyright (C) 2009-2019 The Bitcoin Core developers
+bitcoin-qt \- manual page for bitcoin-qt
-Please contribute if you find Bitcoin Core useful. Visit
-<https://bitcoincore.org> for further information about the software.
-The source code is available from <https://github.com/bitcoin/bitcoin>.
-
-This is experimental software.
-Distributed under the MIT software license, see the accompanying file COPYING
-or <https://opensource.org/licenses/MIT>
+This is a placefolder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release.
diff --git a/doc/man/bitcoin-tx.1 b/doc/man/bitcoin-tx.1
index b4c7698896..148a5890b0 100644
--- a/doc/man/bitcoin-tx.1
+++ b/doc/man/bitcoin-tx.1
@@ -1,116 +1,5 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
-.TH BITCOIN-TX "1" "February 2019" "bitcoin-tx v0.17.99.0" "User Commands"
+.TH BITCOIN-TX "1"
.SH NAME
-bitcoin-tx \- manual page for bitcoin-tx v0.17.99.0
-.SH SYNOPSIS
-.B bitcoin-tx
-[\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR] \fI\,Update hex-encoded bitcoin transaction\/\fR
-.br
-.B bitcoin-tx
-[\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR] \fI\,Create hex-encoded bitcoin transaction\/\fR
-.SH DESCRIPTION
-Bitcoin Core bitcoin\-tx utility version v0.17.99.0
-.SH OPTIONS
-.HP
-\-?
-.IP
-Print this help message and exit
-.HP
-\fB\-create\fR
-.IP
-Create new, empty TX.
-.HP
-\fB\-json\fR
-.IP
-Select JSON output
-.HP
-\fB\-txid\fR
-.IP
-Output only the hex\-encoded transaction id of the resultant transaction.
-.PP
-Chain selection options:
-.HP
-\fB\-testnet\fR
-.IP
-Use the test chain
-.PP
-Commands:
-.IP
-delin=N
-.IP
-Delete input N from TX
-.IP
-delout=N
-.IP
-Delete output N from TX
-.IP
-in=TXID:VOUT(:SEQUENCE_NUMBER)
-.IP
-Add input to TX
-.IP
-locktime=N
-.IP
-Set TX lock time to N
-.IP
-nversion=N
-.IP
-Set TX version to N
-.IP
-outaddr=VALUE:ADDRESS
-.IP
-Add address\-based output to TX
-.IP
-outdata=[VALUE:]DATA
-.IP
-Add data\-based output to TX
-.IP
-outmultisig=VALUE:REQUIRED:PUBKEYS:PUBKEY1:PUBKEY2:....[:FLAGS]
-.IP
-Add Pay To n\-of\-m Multi\-sig output to TX. n = REQUIRED, m = PUBKEYS.
-Optionally add the "W" flag to produce a
-pay\-to\-witness\-script\-hash output. Optionally add the "S" flag to
-wrap the output in a pay\-to\-script\-hash.
-.IP
-outpubkey=VALUE:PUBKEY[:FLAGS]
-.IP
-Add pay\-to\-pubkey output to TX. Optionally add the "W" flag to produce a
-pay\-to\-witness\-pubkey\-hash output. Optionally add the "S" flag to
-wrap the output in a pay\-to\-script\-hash.
-.IP
-outscript=VALUE:SCRIPT[:FLAGS]
-.IP
-Add raw script output to TX. Optionally add the "W" flag to produce a
-pay\-to\-witness\-script\-hash output. Optionally add the "S" flag to
-wrap the output in a pay\-to\-script\-hash.
-.IP
-replaceable(=N)
-.IP
-Set RBF opt\-in sequence number for input N (if not provided, opt\-in all
-available inputs)
-.IP
-sign=SIGHASH\-FLAGS
-.IP
-Add zero or more signatures to transaction. This command requires JSON
-registers:prevtxs=JSON object, privatekeys=JSON object. See
-signrawtransactionwithkey docs for format of sighash flags, JSON
-objects.
-.PP
-Register Commands:
-.IP
-load=NAME:FILENAME
-.IP
-Load JSON file FILENAME into register NAME
-.IP
-set=NAME:JSON\-STRING
-.IP
-Set register NAME to given JSON\-STRING
-.SH COPYRIGHT
-Copyright (C) 2009-2019 The Bitcoin Core developers
+bitcoin-tx \- manual page for bitcoin-tx
-Please contribute if you find Bitcoin Core useful. Visit
-<https://bitcoincore.org> for further information about the software.
-The source code is available from <https://github.com/bitcoin/bitcoin>.
-
-This is experimental software.
-Distributed under the MIT software license, see the accompanying file COPYING
-or <https://opensource.org/licenses/MIT>
+This is a placefolder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release.
diff --git a/doc/man/bitcoin-wallet.1 b/doc/man/bitcoin-wallet.1
index aadea09a2b..69133b33f7 100644
--- a/doc/man/bitcoin-wallet.1
+++ b/doc/man/bitcoin-wallet.1
@@ -1,63 +1,5 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
-.TH BITCOIN-WALLET "1" "February 2019" "bitcoin-wallet v0.17.99.0" "User Commands"
+.TH BITCOIN-WALLET "1"
.SH NAME
-bitcoin-wallet \- manual page for bitcoin-wallet v0.17.99.0
-.SH DESCRIPTION
-Bitcoin Core bitcoin\-wallet version v0.17.99.0
-.PP
-wallet\-tool is an offline tool for creating and interacting with Bitcoin Core wallet files.
-By default wallet\-tool will act on wallets in the default mainnet wallet directory in the datadir.
-To change the target wallet, use the \fB\-datadir\fR, \fB\-wallet\fR and \fB\-testnet\fR/\-regtest arguments.
-.SS "Usage:"
-.IP
-bitcoin\-wallet [options] <command>
-.SH OPTIONS
-.HP
-\-?
-.IP
-Print this help message and exit
-.HP
-\fB\-datadir=\fR<dir>
-.IP
-Specify data directory
-.HP
-\fB\-wallet=\fR<wallet\-name>
-.IP
-Specify wallet name
-.PP
-Debugging/Testing options:
-.HP
-\fB\-debug=\fR<category>
-.IP
-Output debugging information (default: 0).
-.HP
-\fB\-printtoconsole\fR
-.IP
-Send trace/debug info to console (default: 1 when no \fB\-debug\fR is true, 0
-otherwise.
-.PP
-Chain selection options:
-.HP
-\fB\-testnet\fR
-.IP
-Use the test chain
-.PP
-Commands:
-.IP
-create
-.IP
-Create new wallet file
-.IP
-info
-.IP
-Get wallet info
-.SH COPYRIGHT
-Copyright (C) 2009-2019 The Bitcoin Core developers
+bitcoin-wallet \- manual page for bitcoin-wallet
-Please contribute if you find Bitcoin Core useful. Visit
-<https://bitcoincore.org> for further information about the software.
-The source code is available from <https://github.com/bitcoin/bitcoin>.
-
-This is experimental software.
-Distributed under the MIT software license, see the accompanying file COPYING
-or <https://opensource.org/licenses/MIT>
+This is a placefolder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release.
diff --git a/doc/man/bitcoind.1 b/doc/man/bitcoind.1
index 211ba10285..de338182ff 100644
--- a/doc/man/bitcoind.1
+++ b/doc/man/bitcoind.1
@@ -1,583 +1,5 @@
-.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6.
-.TH BITCOIND "1" "February 2019" "bitcoind v0.17.99.0" "User Commands"
+.TH BITCOIND "1"
.SH NAME
-bitcoind \- manual page for bitcoind v0.17.99.0
-.SH SYNOPSIS
-.B bitcoind
-[\fI\,options\/\fR] \fI\,Start Bitcoin Core Daemon\/\fR
-.SH DESCRIPTION
-Bitcoin Core Daemon version v0.17.99.0
-.SH OPTIONS
-.HP
-\-?
-.IP
-Print this help message and exit
-.HP
-\fB\-alertnotify=\fR<cmd>
-.IP
-Execute command when a relevant alert is received or we see a really
-long fork (%s in cmd is replaced by message)
-.HP
-\fB\-assumevalid=\fR<hex>
-.IP
-If this block is in the chain assume that it and its ancestors are valid
-and potentially skip their script verification (0 to verify all,
-default:
-0000000000000000002e63058c023a9a1de233554f28c7b21380b6c9003f36a8,
-testnet:
-0000000000000037a8cd3e06cd5edbfe9dd1dbcc5dacab279376ef7cfc2b4c75)
-.HP
-\fB\-blocknotify=\fR<cmd>
-.IP
-Execute command when the best block changes (%s in cmd is replaced by
-block hash)
-.HP
-\fB\-blockreconstructionextratxn=\fR<n>
-.IP
-Extra transactions to keep in memory for compact block reconstructions
-(default: 100)
-.HP
-\fB\-blocksdir=\fR<dir>
-.IP
-Specify blocks directory (default: <datadir>/blocks)
-.HP
-\fB\-conf=\fR<file>
-.IP
-Specify configuration file. Relative paths will be prefixed by datadir
-location. (default: bitcoin.conf)
-.HP
-\fB\-daemon\fR
-.IP
-Run in the background as a daemon and accept commands
-.HP
-\fB\-datadir=\fR<dir>
-.IP
-Specify data directory
-.HP
-\fB\-dbcache=\fR<n>
-.IP
-Set database cache size in MiB (4 to 16384, default: 450)
-.HP
-\fB\-debuglogfile=\fR<file>
-.IP
-Specify location of debug log file. Relative paths will be prefixed by a
-net\-specific datadir location. (\fB\-nodebuglogfile\fR to disable;
-default: debug.log)
-.HP
-\fB\-includeconf=\fR<file>
-.IP
-Specify additional configuration file, relative to the \fB\-datadir\fR path
-(only useable from configuration file, not command line)
-.HP
-\fB\-loadblock=\fR<file>
-.IP
-Imports blocks from external blk000??.dat file on startup
-.HP
-\fB\-maxmempool=\fR<n>
-.IP
-Keep the transaction memory pool below <n> megabytes (default: 300)
-.HP
-\fB\-maxorphantx=\fR<n>
-.IP
-Keep at most <n> unconnectable transactions in memory (default: 100)
-.HP
-\fB\-mempoolexpiry=\fR<n>
-.IP
-Do not keep transactions in the mempool longer than <n> hours (default:
-336)
-.HP
-\fB\-par=\fR<n>
-.IP
-Set the number of script verification threads (\fB\-8\fR to 16, 0 = auto, <0 =
-leave that many cores free, default: 0)
-.HP
-\fB\-persistmempool\fR
-.IP
-Whether to save the mempool on shutdown and load on restart (default: 1)
-.HP
-\fB\-pid=\fR<file>
-.IP
-Specify pid file. Relative paths will be prefixed by a net\-specific
-datadir location. (default: bitcoind.pid)
-.HP
-\fB\-prune=\fR<n>
-.IP
-Reduce storage requirements by enabling pruning (deleting) of old
-blocks. This allows the pruneblockchain RPC to be called to
-delete specific blocks, and enables automatic pruning of old
-blocks if a target size in MiB is provided. This mode is
-incompatible with \fB\-txindex\fR and \fB\-rescan\fR. Warning: Reverting this
-setting requires re\-downloading the entire blockchain. (default:
-0 = disable pruning blocks, 1 = allow manual pruning via RPC,
->=550 = automatically prune block files to stay under the
-specified target size in MiB)
-.HP
-\fB\-reindex\fR
-.IP
-Rebuild chain state and block index from the blk*.dat files on disk
-.HP
-\fB\-reindex\-chainstate\fR
-.IP
-Rebuild chain state from the currently indexed blocks. When in pruning
-mode or if blocks on disk might be corrupted, use full \fB\-reindex\fR
-instead.
-.HP
-\fB\-sysperms\fR
-.IP
-Create new files with system default permissions, instead of umask 077
-(only effective with disabled wallet functionality)
-.HP
-\fB\-txindex\fR
-.IP
-Maintain a full transaction index, used by the getrawtransaction rpc
-call (default: 0)
-.HP
-\fB\-version\fR
-.IP
-Print version and exit
-.PP
-Connection options:
-.HP
-\fB\-addnode=\fR<ip>
-.IP
-Add a node to connect to and attempt to keep the connection open (see
-the `addnode` RPC command help for more info). This option can be
-specified multiple times to add multiple nodes.
-.HP
-\fB\-banscore=\fR<n>
-.IP
-Threshold for disconnecting misbehaving peers (default: 100)
-.HP
-\fB\-bantime=\fR<n>
-.IP
-Number of seconds to keep misbehaving peers from reconnecting (default:
-86400)
-.HP
-\fB\-bind=\fR<addr>
-.IP
-Bind to given address and always listen on it. Use [host]:port notation
-for IPv6
-.HP
-\fB\-connect=\fR<ip>
-.IP
-Connect only to the specified node; \fB\-noconnect\fR disables automatic
-connections (the rules for this peer are the same as for
-\fB\-addnode\fR). This option can be specified multiple times to connect
-to multiple nodes.
-.HP
-\fB\-discover\fR
-.IP
-Discover own IP addresses (default: 1 when listening and no \fB\-externalip\fR
-or \fB\-proxy\fR)
-.HP
-\fB\-dns\fR
-.IP
-Allow DNS lookups for \fB\-addnode\fR, \fB\-seednode\fR and \fB\-connect\fR (default: 1)
-.HP
-\fB\-dnsseed\fR
-.IP
-Query for peer addresses via DNS lookup, if low on addresses (default: 1
-unless \fB\-connect\fR used)
-.HP
-\fB\-externalip=\fR<ip>
-.IP
-Specify your own public address
-.HP
-\fB\-forcednsseed\fR
-.IP
-Always query for peer addresses via DNS lookup (default: 0)
-.HP
-\fB\-listen\fR
-.IP
-Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\fR)
-.HP
-\fB\-listenonion\fR
-.IP
-Automatically create Tor hidden service (default: 1)
-.HP
-\fB\-maxconnections=\fR<n>
-.IP
-Maintain at most <n> connections to peers (default: 125)
-.HP
-\fB\-maxreceivebuffer=\fR<n>
-.IP
-Maximum per\-connection receive buffer, <n>*1000 bytes (default: 5000)
-.HP
-\fB\-maxsendbuffer=\fR<n>
-.IP
-Maximum per\-connection send buffer, <n>*1000 bytes (default: 1000)
-.HP
-\fB\-maxtimeadjustment\fR
-.IP
-Maximum allowed median peer time offset adjustment. Local perspective of
-time may be influenced by peers forward or backward by this
-amount. (default: 4200 seconds)
-.HP
-\fB\-maxuploadtarget=\fR<n>
-.IP
-Tries to keep outbound traffic under the given target (in MiB per 24h),
-0 = no limit (default: 0)
-.HP
-\fB\-onion=\fR<ip:port>
-.IP
-Use separate SOCKS5 proxy to reach peers via Tor hidden services, set
-\fB\-noonion\fR to disable (default: \fB\-proxy\fR)
-.HP
-\fB\-onlynet=\fR<net>
-.IP
-Make outgoing connections only through network <net> (ipv4, ipv6 or
-onion). Incoming connections are not affected by this option.
-This option can be specified multiple times to allow multiple
-networks.
-.HP
-\fB\-peerbloomfilters\fR
-.IP
-Support filtering of blocks and transaction with bloom filters (default:
-1)
-.HP
-\fB\-permitbaremultisig\fR
-.IP
-Relay non\-P2SH multisig (default: 1)
-.HP
-\fB\-port=\fR<port>
-.IP
-Listen for connections on <port> (default: 8333, testnet: 18333,
-regtest: 18444)
-.HP
-\fB\-proxy=\fR<ip:port>
-.IP
-Connect through SOCKS5 proxy, set \fB\-noproxy\fR to disable (default:
-disabled)
-.HP
-\fB\-proxyrandomize\fR
-.IP
-Randomize credentials for every proxy connection. This enables Tor
-stream isolation (default: 1)
-.HP
-\fB\-seednode=\fR<ip>
-.IP
-Connect to a node to retrieve peer addresses, and disconnect. This
-option can be specified multiple times to connect to multiple
-nodes.
-.HP
-\fB\-timeout=\fR<n>
-.IP
-Specify connection timeout in milliseconds (minimum: 1, default: 5000)
-.HP
-\fB\-torcontrol=\fR<ip>:<port>
-.IP
-Tor control port to use if onion listening enabled (default:
-127.0.0.1:9051)
-.HP
-\fB\-torpassword=\fR<pass>
-.IP
-Tor control port password (default: empty)
-.HP
-\fB\-upnp\fR
-.IP
-Use UPnP to map the listening port (default: 0)
-.HP
-\fB\-whitebind=\fR<addr>
-.IP
-Bind to given address and whitelist peers connecting to it. Use
-[host]:port notation for IPv6
-.HP
-\fB\-whitelist=\fR<IP address or network>
-.IP
-Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or
-CIDR notated network (e.g. 1.2.3.0/24). Can be specified multiple
-times. Whitelisted peers cannot be DoS banned and their
-transactions are always relayed, even if they are already in the
-mempool, useful e.g. for a gateway
-.PP
-Wallet options:
-.HP
-\fB\-addresstype\fR
-.IP
-What type of addresses to use ("legacy", "p2sh\-segwit", or "bech32",
-default: "p2sh\-segwit")
-.HP
-\fB\-avoidpartialspends\fR
-.IP
-Group outputs by address, selecting all or none, instead of selecting on
-a per\-output basis. Privacy is improved as an address is only
-used once (unless someone sends to it after spending from it),
-but may result in slightly higher fees as suboptimal coin
-selection may result due to the added limitation (default: 0)
-.HP
-\fB\-changetype\fR
-.IP
-What type of change to use ("legacy", "p2sh\-segwit", or "bech32").
-Default is same as \fB\-addresstype\fR, except when
-\fB\-addresstype\fR=\fI\,p2sh\-segwit\/\fR a native segwit output is used when
-sending to a native segwit address)
-.HP
-\fB\-disablewallet\fR
-.IP
-Do not load the wallet and disable wallet RPC calls
-.HP
-\fB\-discardfee=\fR<amt>
-.IP
-The fee rate (in BTC/kB) that indicates your tolerance for discarding
-change by adding it to the fee (default: 0.0001). Note: An output
-is discarded if it is dust at this rate, but we will always
-discard up to the dust relay fee and a discard fee above that is
-limited by the fee estimate for the longest target
-.HP
-\fB\-fallbackfee=\fR<amt>
-.IP
-A fee rate (in BTC/kB) that will be used when fee estimation has
-insufficient data (default: 0.0002)
-.HP
-\fB\-keypool=\fR<n>
-.IP
-Set key pool size to <n> (default: 1000)
-.HP
-\fB\-mintxfee=\fR<amt>
-.IP
-Fees (in BTC/kB) smaller than this are considered zero fee for
-transaction creation (default: 0.00001)
-.HP
-\fB\-paytxfee=\fR<amt>
-.IP
-Fee (in BTC/kB) to add to transactions you send (default: 0.00)
-.HP
-\fB\-rescan\fR
-.IP
-Rescan the block chain for missing wallet transactions on startup
-.HP
-\fB\-salvagewallet\fR
-.IP
-Attempt to recover private keys from a corrupt wallet on startup
-.HP
-\fB\-spendzeroconfchange\fR
-.IP
-Spend unconfirmed change when sending transactions (default: 1)
-.HP
-\fB\-txconfirmtarget=\fR<n>
-.IP
-If paytxfee is not set, include enough fee so transactions begin
-confirmation on average within n blocks (default: 6)
-.HP
-\fB\-upgradewallet\fR
-.IP
-Upgrade wallet to latest format on startup
-.HP
-\fB\-wallet=\fR<path>
-.IP
-Specify wallet database path. Can be specified multiple times to load
-multiple wallets. Path is interpreted relative to <walletdir> if
-it is not absolute, and will be created if it does not exist (as
-a directory containing a wallet.dat file and log files). For
-backwards compatibility this will also accept names of existing
-data files in <walletdir>.)
-.HP
-\fB\-walletbroadcast\fR
-.IP
-Make the wallet broadcast transactions (default: 1)
-.HP
-\fB\-walletdir=\fR<dir>
-.IP
-Specify directory to hold wallets (default: <datadir>/wallets if it
-exists, otherwise <datadir>)
-.HP
-\fB\-walletnotify=\fR<cmd>
-.IP
-Execute command when a wallet transaction changes (%s in cmd is replaced
-by TxID)
-.HP
-\fB\-walletrbf\fR
-.IP
-Send transactions with full\-RBF opt\-in enabled (RPC only, default: 0)
-.HP
-\fB\-zapwallettxes=\fR<mode>
-.IP
-Delete all wallet transactions and only recover those parts of the
-blockchain through \fB\-rescan\fR on startup (1 = keep tx meta data e.g.
-payment request information, 2 = drop tx meta data)
-.PP
-ZeroMQ notification options:
-.HP
-\fB\-zmqpubhashblock=\fR<address>
-.IP
-Enable publish hash block in <address>
-.HP
-\fB\-zmqpubhashtx=\fR<address>
-.IP
-Enable publish hash transaction in <address>
-.HP
-\fB\-zmqpubrawblock=\fR<address>
-.IP
-Enable publish raw block in <address>
-.HP
-\fB\-zmqpubrawtx=\fR<address>
-.IP
-Enable publish raw transaction in <address>
-.PP
-Debugging/Testing options:
-.HP
-\fB\-debug=\fR<category>
-.IP
-Output debugging information (default: \fB\-nodebug\fR, supplying <category> is
-optional). If <category> is not supplied or if <category> = 1,
-output all debugging information. <category> can be: net, tor,
-mempool, http, bench, zmq, db, rpc, estimatefee, addrman,
-selectcoins, reindex, cmpctblock, rand, prune, proxy, mempoolrej,
-libevent, coindb, qt, leveldb.
-.HP
-\fB\-debugexclude=\fR<category>
-.IP
-Exclude debugging information for a category. Can be used in conjunction
-with \fB\-debug\fR=\fI\,1\/\fR to output debug logs for all categories except one
-or more specified categories.
-.HP
-\fB\-help\-debug\fR
-.IP
-Print help message with debugging options and exit
-.HP
-\fB\-logips\fR
-.IP
-Include IP addresses in debug output (default: 0)
-.HP
-\fB\-logtimestamps\fR
-.IP
-Prepend debug output with timestamp (default: 1)
-.HP
-\fB\-maxtxfee=\fR<amt>
-.IP
-Maximum total fees (in BTC) to use in a single wallet transaction or raw
-transaction; setting this too low may abort large transactions
-(default: 0.10)
-.HP
-\fB\-printtoconsole\fR
-.IP
-Send trace/debug info to console (default: 1 when no \fB\-daemon\fR. To disable
-logging to file, set \fB\-nodebuglogfile\fR)
-.HP
-\fB\-shrinkdebugfile\fR
-.IP
-Shrink debug.log file on client startup (default: 1 when no \fB\-debug\fR)
-.HP
-\fB\-uacomment=\fR<cmt>
-.IP
-Append comment to the user agent string
-.PP
-Chain selection options:
-.HP
-\fB\-testnet\fR
-.IP
-Use the test chain
-.PP
-Node relay options:
-.HP
-\fB\-bytespersigop\fR
-.IP
-Equivalent bytes per sigop in transactions for relay and mining
-(default: 20)
-.HP
-\fB\-datacarrier\fR
-.IP
-Relay and mine data carrier transactions (default: 1)
-.HP
-\fB\-datacarriersize\fR
-.IP
-Maximum size of data in data carrier transactions we relay and mine
-(default: 83)
-.HP
-\fB\-minrelaytxfee=\fR<amt>
-.IP
-Fees (in BTC/kB) smaller than this are considered zero fee for relaying,
-mining and transaction creation (default: 0.00001)
-.HP
-\fB\-whitelistforcerelay\fR
-.IP
-Force relay of transactions from whitelisted peers even if they violate
-local relay policy (default: 0)
-.HP
-\fB\-whitelistrelay\fR
-.IP
-Accept relayed transactions received from whitelisted peers even when
-not relaying transactions (default: 1)
-.PP
-Block creation options:
-.HP
-\fB\-blockmaxweight=\fR<n>
-.IP
-Set maximum BIP141 block weight (default: 3996000)
-.HP
-\fB\-blockmintxfee=\fR<amt>
-.IP
-Set lowest fee rate (in BTC/kB) for transactions to be included in block
-creation. (default: 0.00001)
-.PP
-RPC server options:
-.HP
-\fB\-rest\fR
-.IP
-Accept public REST requests (default: 0)
-.HP
-\fB\-rpcallowip=\fR<ip>
-.IP
-Allow JSON\-RPC connections from specified source. Valid for <ip> are a
-single IP (e.g. 1.2.3.4), a network/netmask (e.g.
-1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This
-option can be specified multiple times
-.HP
-\fB\-rpcauth=\fR<userpw>
-.IP
-Username and HMAC\-SHA\-256 hashed password for JSON\-RPC connections. The
-field <userpw> comes in the format: <USERNAME>:<SALT>$<HASH>. A
-canonical python script is included in share/rpcauth. The client
-then connects normally using the
-rpcuser=<USERNAME>/rpcpassword=<PASSWORD> pair of arguments. This
-option can be specified multiple times
-.HP
-\fB\-rpcbind=\fR<addr>[:port]
-.IP
-Bind to given address to listen for JSON\-RPC connections. Do not expose
-the RPC server to untrusted networks such as the public internet!
-This option is ignored unless \fB\-rpcallowip\fR is also passed. Port is
-optional and overrides \fB\-rpcport\fR. Use [host]:port notation for
-IPv6. This option can be specified multiple times (default:
-127.0.0.1 and ::1 i.e., localhost)
-.HP
-\fB\-rpccookiefile=\fR<loc>
-.IP
-Location of the auth cookie. Relative paths will be prefixed by a
-net\-specific datadir location. (default: data dir)
-.HP
-\fB\-rpcpassword=\fR<pw>
-.IP
-Password for JSON\-RPC connections
-.HP
-\fB\-rpcport=\fR<port>
-.IP
-Listen for JSON\-RPC connections on <port> (default: 8332, testnet:
-18332, regtest: 18443)
-.HP
-\fB\-rpcserialversion\fR
-.IP
-Sets the serialization of raw transaction or block hex returned in
-non\-verbose mode, non\-segwit(0) or segwit(1) (default: 1)
-.HP
-\fB\-rpcthreads=\fR<n>
-.IP
-Set the number of threads to service RPC calls (default: 4)
-.HP
-\fB\-rpcuser=\fR<user>
-.IP
-Username for JSON\-RPC connections
-.HP
-\fB\-server\fR
-.IP
-Accept command line and JSON\-RPC commands
-.SH COPYRIGHT
-Copyright (C) 2009-2019 The Bitcoin Core developers
+bitcoind \- manual page for bitcoind
-Please contribute if you find Bitcoin Core useful. Visit
-<https://bitcoincore.org> for further information about the software.
-The source code is available from <https://github.com/bitcoin/bitcoin>.
-
-This is experimental software.
-Distributed under the MIT software license, see the accompanying file COPYING
-or <https://opensource.org/licenses/MIT>
+This is a placefolder file. Please follow the instructions in \fIcontrib/devtools/README.md\fR to generate the manual pages after a release.
diff --git a/doc/release-notes-14582.md b/doc/release-notes-14582.md
deleted file mode 100644
index 28b0abecd7..0000000000
--- a/doc/release-notes-14582.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Configuration
--------------
-
-A new configuration flag `-maxapsfee` has been added, which sets the max allowed
-avoid partial spends (APS) fee. It defaults to 0 (i.e. fee is the same with
-and without APS). Setting it to -1 will disable APS, unless `-avoidpartialspends`
-is set. (#14582)
-
-Wallet
-------
-
-The wallet will now avoid partial spends (APS) by default, if this does not result
-in a difference in fees compared to the non-APS variant. The allowed fee threshold
-can be adjusted using the new `-maxapsfee` configuration option. (#14582)
diff --git a/doc/release-notes-15367.md b/doc/release-notes-15367.md
deleted file mode 100644
index 598e49dcae..0000000000
--- a/doc/release-notes-15367.md
+++ /dev/null
@@ -1,6 +0,0 @@
-Configuration option changes
-----------------------------
-
-- The `startupnotify` option is used to specify a command to
- execute when Bitcoin Core has finished with its startup
- sequence. (#15367) \ No newline at end of file
diff --git a/doc/release-notes-15454.md b/doc/release-notes-15454.md
deleted file mode 100644
index 00c847a8d2..0000000000
--- a/doc/release-notes-15454.md
+++ /dev/null
@@ -1,6 +0,0 @@
-Wallet
-------
-
-Bitcoin Core will no longer create an unnamed `""` wallet by default when no wallet is specified on the command line or in the configuration files.
-For backwards compatibility, if an unnamed `""` wallet already exists and would have been loaded previously, then it will still be loaded.
-Users without an unnamed `""` wallet and without any other wallets to be loaded on startup will be prompted to either choose a wallet to load, or to create a new wallet.
diff --git a/doc/release-notes-15937.md b/doc/release-notes-15937.md
deleted file mode 100644
index 1ab817b0e5..0000000000
--- a/doc/release-notes-15937.md
+++ /dev/null
@@ -1,15 +0,0 @@
-Configuration
--------------
-
-Wallets created or loaded in the GUI will now be automatically loaded on
-startup, so they don't need to be manually reloaded next time Bitcoin is
-started. The list of wallets to load on startup is stored in
-`\<datadir\>/settings.json` and augments any command line or `bitcoin.conf`
-`-wallet=` settings that specify more wallets to load. Wallets that are
-unloaded in the GUI get removed from the settings list so they won't load again
-automatically next startup. (#19754)
-
-The `createwallet`, `loadwallet`, and `unloadwallet` RPCs now accept
-`load_on_startup` options to modify the settings list. Unless these options are
-explicitly set to true or false, the list is not modified, so the RPC methods
-remain backwards compatible. (#15937)
diff --git a/doc/release-notes-16378.md b/doc/release-notes-16378.md
deleted file mode 100644
index b006ea1a56..0000000000
--- a/doc/release-notes-16378.md
+++ /dev/null
@@ -1,5 +0,0 @@
-RPC
----
-- A new `send` RPC with similar syntax to `walletcreatefundedpsbt`, including
- support for coin selection and a custom fee rate. Using the new `send` method
- is encouraged: `sendmany` and `sendtoaddress` may be deprecated in a future release.
diff --git a/doc/release-notes-16525.md b/doc/release-notes-16525.md
deleted file mode 100644
index 220cb78de4..0000000000
--- a/doc/release-notes-16525.md
+++ /dev/null
@@ -1,9 +0,0 @@
-RPC changes
------------
-
-Exposed transaction version numbers are now treated as unsigned 32-bit integers
-instead of signed 32-bit integers. This matches their treatment in consensus
-logic. Versions greater than 2 continue to be non-standard (matching previous
-behavior of smaller than 1 or greater than 2 being non-standard). Note that
-this includes the joinpsbt command, which combines partially-signed
-transactions by selecting the highest version number.
diff --git a/doc/release-notes-18244.md b/doc/release-notes-18244.md
deleted file mode 100644
index 625fbaf7a1..0000000000
--- a/doc/release-notes-18244.md
+++ /dev/null
@@ -1,7 +0,0 @@
-Updated RPCs
-------------
-
-- `fundrawtransaction` and `walletcreatefundedpsbt` when used with the `lockUnspents`
- argument now lock manually selected coins, in addition to automatically selected
- coins. Note that locked coins are never used in automatic coin selection, but
- can still be manually selected.
diff --git a/doc/release-notes-19405.md b/doc/release-notes-19405.md
deleted file mode 100644
index 14f2a81c7a..0000000000
--- a/doc/release-notes-19405.md
+++ /dev/null
@@ -1,12 +0,0 @@
-## Updated RPCs
-
-- `getnetworkinfo` now returns two new fields, `connections_in` and
- `connections_out`, that provide the number of inbound and outbound peer
- connections. These new fields are in addition to the existing `connections`
- field, which returns the total number of peer connections. (#19405)
-
-## CLI
-
-- The `connections` field of `bitcoin-cli -getinfo` is expanded to return a JSON
- object with `in`, `out` and `total` numbers of peer connections. It previously
- returned a single integer value for the total number of peer connections. (#19405)
diff --git a/doc/release-notes-19671.md b/doc/release-notes-19671.md
deleted file mode 100644
index fb2d56d9a5..0000000000
--- a/doc/release-notes-19671.md
+++ /dev/null
@@ -1,6 +0,0 @@
-Wallet
-------
-
-* The `-zapwallettxes` startup option has been removed and its functionality removed from the wallet.
- This option was originally intended to allow for the fee bumping of transactions that did not
- signal RBF. This functionality has been superseded with the abandon transaction feature.
diff --git a/doc/release-notes-19731.md b/doc/release-notes-19731.md
deleted file mode 100644
index abe38e06af..0000000000
--- a/doc/release-notes-19731.md
+++ /dev/null
@@ -1,6 +0,0 @@
-Updated RPCs
-------------
-
-- The `getpeerinfo` RPC now has additional `last_block` and `last_transaction`
- fields that return the UNIX epoch time of the last block and the last valid
- transaction received from each peer. (#19731)
diff --git a/doc/release-notes.md b/doc/release-notes.md
index 1580bbd9ae..f286a4493b 100644
--- a/doc/release-notes.md
+++ b/doc/release-notes.md
@@ -45,18 +45,13 @@ wallet versions of Bitcoin Core are generally supported.
Compatibility
==============
-During this release cycle, work has been done to ensure that the codebase is fully
-compatible with C++17. The intention is to begin using C++17 features starting
-with the 0.22.0 release. This means that a compiler that supports C++17 will be
-required to compile 0.22.0.
-
Bitcoin Core is supported and extensively tested on operating systems
-using the Linux kernel, macOS 10.12+, and Windows 7 and newer. Bitcoin
+using the Linux kernel, macOS 10.14+, 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
+From Bitcoin Core 0.22.0 onwards, macOS versions earlier than 10.14 are no
longer supported. Additionally, Bitcoin Core does not yet change appearance
when macOS "dark mode" is activated.
@@ -66,290 +61,45 @@ Notable changes
P2P and network changes
-----------------------
-- The mempool now tracks whether transactions submitted via the wallet or RPCs
- have been successfully broadcast. Every 10-15 minutes, the node will try to
- announce unbroadcast transactions until a peer requests it via a `getdata`
- message or the transaction is removed from the mempool for other reasons.
- The node will not track the broadcast status of transactions submitted to the
- node using P2P relay. This version reduces the initial broadcast guarantees
- for wallet transactions submitted via P2P to a node running the wallet. (#18038)
-
Updated RPCs
------------
-- `getmempoolinfo` now returns an additional `unbroadcastcount` field. The
- mempool tracks locally submitted transactions until their initial broadcast
- is acknowledged by a peer. This field returns the count of transactions
- waiting for acknowledgement.
-
-- Mempool RPCs such as `getmempoolentry` and `getrawmempool` with
- `verbose=true` now return an additional `unbroadcast` field. This indicates
- whether initial broadcast of the transaction has been acknowledged by a
- peer. `getmempoolancestors` and `getmempooldescendants` are also updated.
-
-- The `bumpfee`, `fundrawtransaction`, `sendmany`, `sendtoaddress`, and `walletcreatefundedpsbt`
-RPC commands have been updated to include two new fee estimation methods "BTC/kB" and "sat/B".
-The target is the fee expressed explicitly in the given form. Note that use of this feature
-will trigger BIP 125 (replace-by-fee) opt-in. (#11413)
-
-- In addition, the `estimate_mode` parameter is now case insensitive for all of
- the above RPC commands. (#11413)
-
-- The `bumpfee` command now uses `conf_target` rather than `confTarget` in the
- options. (#11413)
-
-- The `getpeerinfo` RPC no longer returns the `banscore` field unless the configuration
- option `-deprecatedrpc=banscore` is used. The `banscore` field will be fully
- removed in the next major release. (#19469)
-
-- The `testmempoolaccept` RPC returns `vsize` and a `fee` object with the `base` fee
- if the transaction passes validation. (#19940)
-
-- The `getpeerinfo` RPC now returns a `connection_type` field. This indicates
- the type of connection established with the peer. It will return one of six
- options. For more information, see the `getpeerinfo` help documentation.
- (#19725)
-
-- The `getpeerinfo` RPC no longer returns the `addnode` field by default. This
- field will be fully removed in the next major release. It can be accessed
- with the configuration option `-deprecatedrpc=getpeerinfo_addnode`. However,
- it is recommended to instead use the `connection_type` field (it will return
- `manual` when addnode is true). (#19725)
-
-- The `walletcreatefundedpsbt` RPC call will now fail with
- `Insufficient funds` when inputs are manually selected but are not enough to cover
- the outputs and fee. Additional inputs can automatically be added through the
- new `add_inputs` option. (#16377)
-
-- The `fundrawtransaction` RPC now supports `add_inputs` option that when `false`
- prevents adding more inputs if necessary and consequently the RPC fails.
-
Changes to Wallet or GUI related RPCs can be found in the GUI or Wallet section below.
New RPCs
--------
-- The `getindexinfo` RPC returns the actively running indices of the node,
- including their current sync status and height. It also accepts an `index_name`
- to specify returning only the status of that index. (#19550)
-
Build System
------------
+New settings
+------------
+
Updated settings
----------------
-- The `-banscore` configuration option, which modified the default threshold for
- disconnecting and discouraging misbehaving peers, has been removed as part of
- changes in 0.20.1 and in this release to the handling of misbehaving peers.
- Refer to "Changes regarding misbehaving peers" in the 0.20.1 release notes for
- details. (#19464)
-
-- The `-debug=db` logging category, which was deprecated in 0.20 and replaced by
- `-debug=walletdb` to distinguish it from `coindb`, has been removed. (#19202)
-
-- A `download` permission has been extracted from the `noban` permission. For
- compatibility, `noban` implies the `download` permission, but this may change
- in future releases. Refer to the help of the affected settings `-whitebind`
- and `-whitelist` for more details. (#19191)
+Changes to Wallet or GUI related settings can be found in the GUI or Wallet section below.
-- Netmasks that contain 1-bits after 0-bits (the 1-bits are not contiguous on
- the left side, e.g. 255.0.255.255) are no longer accepted. They are invalid
- according to RFC 4632.
-
-Changes to Wallet or GUI related settings can be found in the GUI or Wallet section below.
+- Passing an invalid `-rpcauth` argument now cause bitcoind to fail to start. (#20461)
Tools and Utilities
-------------------
-- A new `bitcoin-cli -generate` command, equivalent to RPC `generatenewaddress`
- followed by `generatetoaddress`, can generate blocks for command line testing
- purposes. This is a client-side version of the
- former `generate` RPC. See the help for details. (#19133)
-
-- The `bitcoin-cli -getinfo` command now displays the wallet name and balance for
- each of the loaded wallets when more than one is loaded (e.g. in multiwallet
- mode) and a wallet is not specified with `-rpcwallet`. (#18594)
-
-New settings
-------------
-
Wallet
------
-- Backwards compatibility has been dropped for two `getaddressinfo` RPC
- deprecations, as notified in the 0.20 release notes. The deprecated `label`
- field has been removed as well as the deprecated `labels` behavior of
- returning a JSON object containing `name` and `purpose` key-value pairs. Since
- 0.20, the `labels` field returns a JSON array of label names. (#19200)
-
-- To improve wallet privacy, the frequency of wallet rebroadcast attempts is
- reduced from approximately once every 15 minutes to once every 12-36 hours.
- To maintain a similar level of guarantee for initial broadcast of wallet
- transactions, the mempool tracks these transactions as a part of the newly
- introduced unbroadcast set. See the "P2P and network changes" section for
- more information on the unbroadcast set. (#18038)
-
-- The wallet can create a transaction without change even when the keypool is
- empty. Previously it failed. (#17219)
-
-- The `-salvagewallet` startup option has been removed. A new `salvage` command
- has been added to the `bitcoin-wallet` tool which performs the salvage
- operations that `-salvagewallet` did. (#18918)
-
-### Experimental Descriptor Wallets
-
-Please note that Descriptor Wallets are still experimental and not all expected functionality
-is available. Additionally there may be some bugs and current functions may change in the future.
-Bugs and missing functionality can be reported to the [issue tracker](https://github.com/bitcoin/bitcoin/issues).
-
-0.21 introduces a new type of wallet - Descriptor Wallets. Descriptor Wallets store
-scriptPubKey information using descriptors. This is in contrast to the Legacy Wallet
-structure where keys are used to generate scriptPubKeys and addresses. Because of this
-shift to being script based instead of key based, many of the confusing things that Legacy
-Wallets do are not possible with Descriptor Wallets. Descriptor Wallets use a definition
-of "mine" for scripts which is simpler and more intuitive than that used by Legacy Wallets.
-Descriptor Wallets also uses different semantics for watch-only things and imports.
-
-As Descriptor Wallets are a new type of wallet, their introduction does not affect existing wallets.
-Users who already have a Bitcoin Core wallet can continue to use it as they did before without
-any change in behavior. Newly created Legacy Wallets (which is the default type of wallet) will
-behave as they did in previous versions of Bitcoin Core.
-
-The differences between Descriptor Wallets and Legacy Wallets are largely limited to non user facing
-things. They are intended to behave similarly except for the import/export and watchonly functionality
-as described below.
-
-#### Creating Descriptor Wallets
-
-Descriptor Wallets are not created by default. They must be explicitly created using the
-`createwallet` RPC or via the GUI. A `descriptors` option has been added to `createwallet`.
-Setting `descriptors` to `true` will create a Descriptor Wallet instead of a Legacy Wallet.
-
-In the GUI, a checkbox has been added to the Create Wallet Dialog to indicate that a
-Descriptor Wallet should be created.
-
-Without those options being set, a Legacy Wallet will be created instead. Additionally the
-Default Wallet created upon first startup of Bitcoin Core will be a Legacy Wallet.
-
-#### `IsMine` Semantics
-
-`IsMine` refers to the function used to determine whether a script belongs to the wallet.
-This is used to determine whether an output belongs to the wallet. `IsMine` in Legacy Wallets
-returns true if the wallet would be able to sign an input that spends an output with that script.
-Since keys can be involved in a variety of different scripts, this definition for `IsMine` can
-lead to many unexpected scripts being considered part of the wallet.
-
-With Descriptor Wallets, descriptors explicitly specify the set of scripts that are owned by
-the wallet. Since descriptors are deterministic and easily enumerable, users will know exactly
-what scripts the wallet will consider to belong to it. Additionally the implementation of `IsMine`
-in Descriptor Wallets is far simpler than for Legacy Wallets. Notably, in Legacy Wallets, `IsMine`
-allowed for users to take one type of address (e.g. P2PKH), mutate it into another address type
-(e.g. P2WPKH), and the wallet would still detect outputs sending to the new address type
-even without that address being requested from the wallet. Descriptor Wallets does not
-allow for this and will only watch for the addresses that were explicitly requested from the wallet.
-
-These changes to `IsMine` will make it easier to reason about what scripts the wallet will
-actually be watching for in outputs. However for the vast majority of users, this change is
-largely transparent and will not have noticeable effect.
-
-#### Imports and Exports
-
-In Legacy Wallets, raw scripts and keys could be imported to the wallet. Those imported scripts
-and keys are treated separately from the keys generated by the wallet. This complicates the `IsMine`
-logic as it has to distinguish between spendable and watchonly.
-
-Descriptor Wallets handle importing scripts and keys differently. Only complete descriptors can be
-imported. These descriptors are then added to the wallet as if it were a descriptor generated by
-the wallet itself. This simplifies the `IsMine` logic so that it no longer has to distinguish
-between spendable and watchonly. As such, the watchonly model for Descriptor Wallets is also
-different and described in more detail in the next section.
-
-To import into a Descriptor Wallet, a new `importdescriptors` RPC has been added that uses a syntax
-similar to that of `importmulti`.
-
-As Legacy Wallets and Descriptor Wallets use different mechanisms for storing and importing scripts and keys
-the existing import RPCs have been disabled for descriptor wallets.
-New export RPCs for Descriptor Wallets have not yet been added.
-
-The following RPCs are disabled for Descriptor Wallets:
-
-* importprivkey
-* importpubkey
-* importaddress
-* importwallet
-* dumpprivkey
-* dumpwallet
-* importmulti
-* addmultisigaddress
-* sethdseed
-
-#### Watchonly Wallets
-
-A Legacy Wallet contains both private keys and scripts that were being watched.
-Those watched scripts would not contribute to your normal balance. In order to see the watchonly
-balance and to use watchonly things in transactions, an `include_watchonly` option was added
-to many RPCs that would allow users to do that. However it is easy to forget to include this option.
-
-Descriptor Wallets move to a per-wallet watchonly model. Instead an entire wallet is considered to be
-watchonly depending on whether it was created with private keys disabled. This eliminates the need
-to distinguish between things that are watchonly and things that are not within a wallet itself.
-
-This change does have a caveat. If a Descriptor Wallet with private keys *enabled* has
-a multiple key descriptor without all of the private keys (e.g. `multi(...)` with only one private key),
-then the wallet will fail to sign and broadcast transactions. Such wallets would need to use the PSBT
-workflow but the typical GUI Send, `sendtoaddress`, etc. workflows would still be available, just
-non-functional.
-
-This issue is worsened if the wallet contains both single key (e.g. `wpkh(...)`) descriptors and such
-multiple key descriptors as some transactions could be signed and broadast and others not. This is
-due to some transactions containing only single key inputs, while others would contain both single
-key and multiple key inputs, depending on which are available and how the coin selection algorithm
-selects inputs. However this is not considered to be a supported use case; multisigs
-should be in their own wallets which do not already have descriptors. Although users cannot export
-descriptors with private keys for now as explained earlier.
-
-#### BIP 44/49/84 Support
-
-The change to using descriptors changes the default derivation paths used by Bitcoin Core
-to adhere to BIP 44/49/84. Descriptors with different derivation paths can be imported without
-issue.
-
-### Wallet RPC changes
-
-- The `upgradewallet` RPC replaces the `-upgradewallet` command line option.
- (#15761)
-- The `settxfee` RPC will fail if the fee was set higher than the `-maxtxfee`
- command line setting. The wallet will already fail to create transactions
- with fees higher than `-maxtxfee`. (#18467)
-
GUI changes
-----------
-- The GUI Peers window no longer displays a "Ban Score" field. This is part of
- changes in 0.20.1 and in this release to the handling of misbehaving
- peers. Refer to "Changes regarding misbehaving peers" in the 0.20.1 release
- notes for details. (#19512)
-
Low-level changes
=================
RPC
---
-- To make RPC `sendtoaddress` more consistent with `sendmany` the following error
- `sendtoaddress` codes were changed from `-4` to `-6`:
- - Insufficient funds
- - Fee estimation failed
- - Transaction has too long of a mempool chain
-
Tests
-----
-- The BIP 325 default signet can be enabled by the `-chain=signet` or `-signet`
- setting. The settings `-signetchallenge` and `-signetseednode` allow
- enabling a custom signet.
-
Credits
=======
diff --git a/doc/release-process.md b/doc/release-process.md
index a61b67c35f..cedb36d51d 100644
--- a/doc/release-process.md
+++ b/doc/release-process.md
@@ -18,20 +18,20 @@ Release Process
### Before every major release
* On both the master branch and the new release branch:
- - update `CLIENT_VERSION_MINOR` in [`configure.ac`](../configure.ac)
- - update `CLIENT_VERSION_MINOR`, `PACKAGE_VERSION`, and `PACKAGE_STRING` in [`build_msvc/bitcoin_config.h`](/build_msvc/bitcoin_config.h)
+ - update `CLIENT_VERSION_MAJOR` in [`configure.ac`](../configure.ac)
+ - update `CLIENT_VERSION_MAJOR`, `PACKAGE_VERSION`, and `PACKAGE_STRING` in [`build_msvc/bitcoin_config.h`](/build_msvc/bitcoin_config.h)
* On the new release branch in [`configure.ac`](../configure.ac) and [`build_msvc/bitcoin_config.h`](/build_msvc/bitcoin_config.h) (see [this commit](https://github.com/bitcoin/bitcoin/commit/742f7dd)):
- - set `CLIENT_VERSION_REVISION` to `0`
+ - set `CLIENT_VERSION_MINOR` to `0`
+ - set `CLIENT_VERSION_BUILD` to `0`
- set `CLIENT_VERSION_IS_RELEASE` to `true`
#### Before branch-off
* Update hardcoded [seeds](/contrib/seeds/README.md), see [this pull request](https://github.com/bitcoin/bitcoin/pull/7415) for an example.
-* Update [`src/chainparams.cpp`](/src/chainparams.cpp) m_assumed_blockchain_size and m_assumed_chain_state_size with the current size plus some overhead (see [this](#how-to-calculate-m_assumed_blockchain_size-and-m_assumed_chain_state_size) for information on how to calculate them).
-* Update `src/chainparams.cpp` chainTxData with statistics about the transaction count and rate. Use the output of the RPC `getchaintxstats`, see
- [this pull request](https://github.com/bitcoin/bitcoin/pull/17002) for an example. Reviewers can verify the results by running `getchaintxstats <window_block_count> <window_last_block_hash>` with the `window_block_count` and `window_last_block_hash` from your output.
-* Update `src/chainparams.cpp` nMinimumChainWork with information from the getblockchaininfo rpc.
-* Update `src/chainparams.cpp` defaultAssumeValid with information from the getblockhash rpc.
+* Update [`src/chainparams.cpp`](/src/chainparams.cpp) m_assumed_blockchain_size and m_assumed_chain_state_size with the current size plus some overhead (see [this](#how-to-calculate-assumed-blockchain-and-chain-state-size) for information on how to calculate them).
+* Update [`src/chainparams.cpp`](/src/chainparams.cpp) chainTxData with statistics about the transaction count and rate. Use the output of the `getchaintxstats` RPC, see
+ [this pull request](https://github.com/bitcoin/bitcoin/pull/20263) for an example. Reviewers can verify the results by running `getchaintxstats <window_block_count> <window_final_block_hash>` with the `window_block_count` and `window_final_block_hash` from your output.
+* Update `src/chainparams.cpp` nMinimumChainWork and defaultAssumeValid (and the block height comment) with information from the `getblockheader` (and `getblockhash`) RPCs.
- The selected value must not be orphaned so it may be useful to set the value two blocks back from the tip.
- Testnet should be set some tens of thousands back from the tip due to reorgs there.
- This update should be reviewed with a reindex-chainstate with assumevalid=0 to catch any defect
@@ -371,7 +371,7 @@ bitcoin.org (see below for bitcoin.org update instructions).
### Additional information
-#### How to calculate `m_assumed_blockchain_size` and `m_assumed_chain_state_size`
+#### <a name="how-to-calculate-assumed-blockchain-and-chain-state-size"></a>How to calculate `m_assumed_blockchain_size` and `m_assumed_chain_state_size`
Both variables are used as a guideline for how much space the user needs on their drive in total, not just strictly for the blockchain.
Note that all values should be taken from a **fully synced** node and have an overhead of 5-10% added on top of its base value.
diff --git a/doc/shared-libraries.md b/doc/shared-libraries.md
index e960863a80..147e223711 100644
--- a/doc/shared-libraries.md
+++ b/doc/shared-libraries.md
@@ -41,9 +41,10 @@ The interface is defined in the C header `bitcoinconsensus.h` located in `src/sc
- `bitcoinconsensus_ERR_TX_SIZE_MISMATCH` - `txToLen` did not match with the size of `txTo`
- `bitcoinconsensus_ERR_DESERIALIZE` - An error deserializing `txTo`
- `bitcoinconsensus_ERR_AMOUNT_REQUIRED` - Input amount is required if WITNESS is used
+- `bitcoinconsensus_ERR_INVALID_FLAGS` - Script verification `flags` are invalid (i.e. not part of the libconsensus interface)
### Example Implementations
-- [NBitcoin](https://github.com/NicolasDorier/NBitcoin/blob/master/NBitcoin/Script.cs#L814) (.NET Bindings)
+- [NBitcoin](https://github.com/MetacoSA/NBitcoin/blob/5e1055cd7c4186dee4227c344af8892aea54faec/NBitcoin/Script.cs#L979-#L1031) (.NET Bindings)
- [node-libbitcoinconsensus](https://github.com/bitpay/node-libbitcoinconsensus) (Node.js Bindings)
- [java-libbitcoinconsensus](https://github.com/dexX7/java-libbitcoinconsensus) (Java Bindings)
- [bitcoinconsensus-php](https://github.com/Bit-Wasp/bitcoinconsensus-php) (PHP Bindings)
diff --git a/doc/tor.md b/doc/tor.md
index 17807856e5..12b5f70245 100644
--- a/doc/tor.md
+++ b/doc/tor.md
@@ -45,11 +45,12 @@ config file): *Needed for Tor version 0.2.7.0 and older versions of Tor only. Fo
versions of Tor see [Section 3](#3-automatically-listen-on-tor).*
HiddenServiceDir /var/lib/tor/bitcoin-service/
- HiddenServicePort 8333 127.0.0.1:8333
- HiddenServicePort 18333 127.0.0.1:18333
+ HiddenServicePort 8333 127.0.0.1:8334
+ HiddenServicePort 18333 127.0.0.1:18334
-The directory can be different of course, but (both) port numbers should be equal to
-your bitcoind's P2P listen port (8333 by default).
+The directory can be different of course, but virtual port numbers should be equal to
+your bitcoind's P2P listen port (8333 by default), and target addresses and ports
+should be equal to binding address and port for inbound Tor connections (127.0.0.1:8334 by default).
-externalip=X You can tell bitcoin about its publicly reachable address using
this option, and this can be a .onion address. Given the above
diff --git a/doc/zmq.md b/doc/zmq.md
index f003c90d3a..85f3370130 100644
--- a/doc/zmq.md
+++ b/doc/zmq.md
@@ -67,6 +67,7 @@ Currently, the following notifications are supported:
The socket type is PUB and the address must be a valid ZeroMQ socket
address. The same address can be used in more than one notification.
+The same notification can be specified more than once.
The option to set the PUB socket's outbound message high water mark
(SNDHWM) may be set individually for each notification:
@@ -82,6 +83,7 @@ The high water mark value must be an integer greater than or equal to 0.
For instance:
$ bitcoind -zmqpubhashtx=tcp://127.0.0.1:28332 \
+ -zmqpubhashtx=tcp://192.168.1.2:28332 \
-zmqpubrawtx=ipc:///tmp/bitcoind.tx.raw \
-zmqpubhashtxhwm=10000