From 81c4f2d80fbd33d127ff9b31bf588e4925599d79 Mon Sep 17 00:00:00 2001 From: Adrian Gallagher Date: Sun, 1 Sep 2019 19:05:24 -0700 Subject: [PATCH] Litecoin: 0.18.1 release notes --- doc/release-notes-litecoin.md | 2011 +++++++++++++++++---------------- 1 file changed, 1045 insertions(+), 966 deletions(-) diff --git a/doc/release-notes-litecoin.md b/doc/release-notes-litecoin.md index bb19bb0add..584522cf39 100644 --- a/doc/release-notes-litecoin.md +++ b/doc/release-notes-litecoin.md @@ -1,9 +1,9 @@ -Litecoin Core version 0.17.1 is now available from: +Litecoin Core version 0.18.1 is now available from: - + -This is a new major version release, including new features, various bugfixes -and performance improvements, as well as updated translations. +This is a major version release, including new features, various bug +fixes and performance improvements, as well as updated translations. Please report bugs using the issue tracker at GitHub: @@ -16,1008 +16,1091 @@ To receive security and update notifications, please subscribe to: How to Upgrade ============== -If you are running an older version, shut it down. Wait until it has completely -shut down (which might take a few minutes for older versions), then run the -installer (on Windows) or just copy over `/Applications/Litecoin-Qt` (on Mac) -or `litecoind`/`litecoin-qt` (on Linux). +If you are running an older version, shut it down. Wait until it has +completely shut down (which might take a few minutes for older +versions), then run the installer (on Windows) or just copy over +`/Applications/Litecoin-Qt` (on Mac) or `litecoind`/`litecoin-qt` (on +Linux). -If your node has a txindex, the txindex db will be migrated the first time you run 0.17.0 or newer, which may take up to a few hours. Your node will not be functional until this migration completes. +The first time you run version 0.15.0 or newer, your chainstate database +will be converted to a new format, which will take anywhere from a few +minutes to half an hour, depending on the speed of your machine. -The first time you run version 0.15.0 or newer, your chainstate database will be converted to a -new format, which will take anywhere from a few minutes to half an hour, -depending on the speed of your machine. - -Note that the block database format also changed in version 0.8.0 and there is no -automatic upgrade code from before version 0.8 to version 0.15.0. Upgrading -directly from 0.7.x and earlier without redownloading the blockchain is not supported. -However, as usual, old wallet versions are still supported. - -Downgrading warning -------------------- - -The chainstate database for this release is not compatible with previous -releases, so if you run 0.15 and then decide to switch back to any -older version, you will need to run the old release with the `-reindex-chainstate` -option to rebuild the chainstate data structures in the old format. - -If your node has pruning enabled, this will entail re-downloading and -processing the entire blockchain. +Note that the block database format also changed in version 0.8.0 and +there is no automatic upgrade code from before version 0.8 to version +0.15.0 or later. Upgrading directly from 0.7.x and earlier without +redownloading the blockchain is not supported. However, as usual, old +wallet versions are still supported. Compatibility ============== -Litecoin Core is extensively tested on multiple operating systems using -the Linux kernel, macOS 10.10+, and Windows 7 and newer (Windows XP is not supported). +Litecoin Core is supported and extensively tested on operating systems +using the Linux kernel, macOS 10.10+, and Windows 7 and newer. It is not +recommended to use Litecoin Core on unsupported systems. Litecoin Core should also work on most other Unix-like systems but is not -frequently tested on them. +as frequently tested on them. -From 0.17.0 onwards macOS <10.10 is no longer supported. 0.17.0 is built using Qt 5.9.x, which doesn't -support versions of macOS older than 10.10. +From 0.17.0 onwards, macOS <10.10 is no longer supported. 0.17.0 is +built using Qt 5.9.x, which doesn't support versions of macOS older than +10.10. Additionally, Litecoin Core does not yet change appearance when +macOS "dark mode" is activated. + +In addition to previously-supported CPU platforms, this release's +pre-compiled distribution also provides binaries for the RISC-V +platform. Known issues ============ -- Upgrading from 0.13.0 or older currently results in memory blow-up during the roll-back of blocks to the SegWit activation point. In these cases, a full `-reindex` is necessary. +Wallet GUI +---------- -- The GUI suffers from visual glitches in the new MacOS dark mode. This has to do with our Qt theme handling and is not a new problem in 0.17.0, but is expected to be resolved in 0.17.1. +For advanced users who have both (1) enabled coin control features, and +(2) are using multiple wallets loaded at the same time: The coin control +input selection dialog can erroneously retain wrong-wallet state when +switching wallets using the dropdown menu. For now, it is recommended +not to use coin control features with multiple wallets loaded. Notable changes =============== -`listtransactions` label support --------------------------------- - -The `listtransactions` RPC `account` parameter which was deprecated in 0.17.0 -and renamed to `dummy` has been un-deprecated and renamed again to `label`. - -When litecoin is configured with the `-deprecatedrpc=accounts` setting, specifying -a label/account/dummy argument will return both outgoing and incoming -transactions. Without the `-deprecatedrpc=accounts` setting, it will only return -incoming transactions (because it used to be possible to create transactions -spending from specific accounts, but this is no longer possible with labels). - -When `-deprecatedrpc=accounts` is set, it's possible to pass the empty string "" -to list transactions that don't have any label. Without -`-deprecatedrpc=accounts`, passing the empty string is an error because returning -only non-labeled transactions is not generally useful behavior and can cause -confusion. - -Changed configuration options ------------------------------ - -- `-includeconf=` can be used to include additional configuration files. - Only works inside the `litecoin.conf` file, not inside included files or from - command-line. Multiple files may be included. Can be disabled from command- - line via `-noincludeconf`. Note that multi-argument commands like - `-includeconf` will override preceding `-noincludeconf`, i.e. - ``` - noincludeconf=1 - includeconf=relative.conf - ``` - - as litecoin.conf will still include `relative.conf`. - -GUI changes ------------ - -- Block storage can be limited under Preferences, in the Main tab. Undoing this setting requires downloading the full blockchain again. This mode is incompatible with -txindex and -rescan. - -External wallet files ---------------------- - -The `-wallet=` option now accepts full paths instead of requiring wallets -to be located in the -walletdir directory. - -Newly created wallet format ---------------------------- - -If `-wallet=` is specified with a path that does not exist, it will now -create a wallet directory at the specified location (containing a wallet.dat -data file, a db.log file, and database/log.?????????? files) instead of just -creating a data file at the path and storing log files in the parent -directory. This should make backing up wallets more straightforward than -before because the specified wallet path can just be directly archived without -having to look in the parent directory for transaction log files. - -For backwards compatibility, wallet paths that are names of existing data files -in the `-walletdir` directory will continue to be accepted and interpreted the -same as before. - -Dynamic loading and creation of wallets ---------------------------------------- - -Previously, wallets could only be loaded or created at startup, by specifying `-wallet` parameters on the command line or in the litecoin.conf file. It is now possible to load, create and unload wallets dynamically at runtime: - -- Existing wallets can be loaded by calling the `loadwallet` RPC. The wallet can be specified as file/directory basename (which must be located in the `walletdir` directory), or as an absolute path to a file/directory. -- New wallets can be created (and loaded) by calling the `createwallet` RPC. The provided name must not match a wallet file in the `walletdir` directory or the name of a wallet that is currently loaded. -- Loaded wallets can be unloaded by calling the `unloadwallet` RPC. - -This feature is currently only available through the RPC interface. - -Coin selection +Mining +------ + +- Calls to `getblocktemplate` will fail if the segwit rule is not + specified. Calling `getblocktemplate` without segwit specified is + almost certainly a misconfiguration since doing so results in lower + rewards for the miner. Failed calls will produce an error message + describing how to enable the segwit rule. + +Configuration option changes +---------------------------- + +- A warning is printed if an unrecognized section name is used in the + configuration file. Recognized sections are `[test]`, `[main]`, and + `[regtest]`. + +- Four new options are available for configuring the maximum number of + messages that ZMQ will queue in memory (the "high water mark") before + dropping additional messages. The default value is 1,000, the same as + was used for previous releases. See the [ZMQ + documentation](https://github.com/litecoin-project/litecoin/blob/master/doc/zmq.md#usage) + for details. + +- The `rpcallowip` option can no longer be used to automatically listen + on all network interfaces. Instead, the `rpcbind` parameter must be + used to specify the IP addresses to listen on. Listening for RPC + commands over a public network connection is insecure and should be + disabled, so a warning is now printed if a user selects such a + configuration. If you need to expose RPC in order to use a tool like + Docker, ensure you only bind RPC to your localhost, e.g. `docker run + [...] -p 127.0.0.1:9332:9332` (this is an extra `:9332` over the + normal Docker port specification). + +- The `rpcpassword` option now causes a startup error if the password + set in the configuration file contains a hash character (#), as it's + ambiguous whether the hash character is meant for the password or as a + comment. + +- The `whitelistforcerelay` option is used to relay transactions from + whitelisted peers even when not accepted to the mempool. This option + now defaults to being off, so that changes in policy and + disconnect/ban behavior will not cause a node that is whitelisting + another to be dropped by peers. Users can still explicitly enable + this behavior with the command line option (and may want to consider + [contacting](mailto:contact@litecoin.org) the Litecoin Core + project to let us know about their use-case, as this feature could be + deprecated in the future). + +Wallet changes -------------- +When creating a transaction with a fee above `-maxtxfee` (default 0.1 LTC), +the RPC commands `walletcreatefundedpsbt` and `fundrawtransaction` will now fail +instead of rounding down the fee. Beware that the `feeRate` argument is specified +in LTC per kilobyte, not litoshi per byte. + +Documentation +------------- + +- A new short [document](https://github.com/litecoin-project/litecoin/blob/master/doc/JSON-RPC-interface.md) + about the JSON-RPC interface describes cases where the results of an + RPC might contain inconsistencies between data sourced from different + subsystems, such as wallet state and mempool state. A note is added + to the [REST interface documentation](https://github.com/litecoin-project/litecoin/blob/master/doc/REST-interface.md) + indicating that the same rules apply. + +- Further information is added to the [JSON-RPC + documentation](https://github.com/litecoin-project/litecoin/blob/master/doc/JSON-RPC-interface.md) + about how to secure this interface. + +- A new [document](https://github.com/litecoin-project/litecoin/blob/master/doc/litecoin-conf.md) + about the `litecoin.conf` file describes how to use it to configure + Litecoin Core. + +- A new document introduces Litecoin Core's BIP174 [Partially-Signed + Litecoin Transactions + (PSBT)](https://github.com/litecoin-project/litecoin/blob/master/doc/psbt.md) + interface, which is used to allow multiple programs to collaboratively + work to create, sign, and broadcast new transactions. This is useful + for offline (cold storage) wallets, multisig wallets, coinjoin + implementations, and many other cases where two or more programs need + to interact to generate a complete transaction. + +- The [output script + descriptor](https://github.com/litecoin-project/litecoin/blob/master/doc/descriptors.md) + documentation has been updated with information about new features in + this still-developing language for describing the output scripts that + a wallet or other program wants to receive notifications for, such as + which addresses it wants to know received payments. The language is + currently used in multiple new and updated RPCs described in these + release notes and is expected to be adapted to other RPCs and to the + underlying wallet structure. + +Build system changes +-------------------- + +- A new `--disable-bip70` option may be passed to `./configure` to + prevent Litecoin-Qt from being built with support for the BIP70 payment + protocol or from linking libssl. As the payment protocol has exposed + Litecoin Core to libssl vulnerabilities in the past, builders who don't + need BIP70 support are encouraged to use this option to reduce their + exposure to future vulnerabilities. + +- The minimum required version of Qt (when building the GUI) has been + increased from 5.2 to 5.5.1 (the [depends + system](https://github.com/litecoin-project/litecoin/blob/master/depends/README.md) + provides 5.9.7) + +New RPCs +-------- + +- `getnodeaddresses` returns peer addresses known to this node. It may + be used to find nodes to connect to without using a DNS seeder. + +- `listwalletdir` returns a list of wallets in the wallet directory + (either the default wallet directory or the directory configured by + the `-walletdir` parameter). + +- `getrpcinfo` returns runtime details of the RPC server. At the moment, + it returns an array of the currently active commands and how long + they've been running. + +- `deriveaddresses` returns one or more addresses corresponding to an + [output descriptor](https://github.com/litecoin-project/litecoin/blob/master/doc/descriptors.md). + +- `getdescriptorinfo` accepts a descriptor and returns information about + it, including its computed checksum. + +- `joinpsbts` merges multiple distinct PSBTs into a single PSBT. The + multiple PSBTs must have different inputs. The resulting PSBT will + contain every input and output from all of the PSBTs. Any signatures + provided in any of the PSBTs will be dropped. + +- `analyzepsbt` examines a PSBT and provides information about what + the PSBT contains and the next steps that need to be taken in order + to complete the transaction. For each input of a PSBT, `analyzepsbt` + provides information about what information is missing for that + input, including whether a UTXO needs to be provided, what pubkeys + still need to be provided, which scripts need to be provided, and + what signatures are still needed. Every input will also list which + role is needed to complete that input, and `analyzepsbt` will also + list the next role in general needed to complete the PSBT. + `analyzepsbt` will also provide the estimated fee rate and estimated + virtual size of the completed transaction if it has enough + information to do so. + +- `utxoupdatepsbt` searches the set of Unspent Transaction Outputs + (UTXOs) to find the outputs being spent by the partial transaction. + PSBTs need to have the UTXOs being spent to be provided because + the signing algorithm requires information from the UTXO being spent. + For segwit inputs, only the UTXO itself is necessary. For + non-segwit outputs, the entire previous transaction is needed so + that signers can be sure that they are signing the correct thing. + Unfortunately, because the UTXO set only contains UTXOs and not full + transactions, `utxoupdatepsbt` will only add the UTXO for segwit + inputs. + +Updated RPCs +------------ + +Note: some low-level RPC changes mainly useful for testing are described +in the Low-level Changes section below. + +- `getpeerinfo` now returns an additional `minfeefilter` field set to + the peer's BIP133 fee filter. You can use this to detect that you + have peers that are willing to accept transactions below the default + minimum relay fee. + +- The mempool RPCs, such as `getrawmempool` with `verbose=true`, now + return an additional "bip125-replaceable" value indicating whether the + transaction (or its unconfirmed ancestors) opts-in to asking nodes and + miners to replace it with a higher-feerate transaction spending any of + the same inputs. + +- `settxfee` previously silently ignored attempts to set the fee below + the allowed minimums. It now prints a warning. The special value of + "0" may still be used to request the minimum value. + +- `getaddressinfo` now provides an `ischange` field indicating whether + the wallet used the address in a change output. + +- `importmulti` has been updated to support P2WSH, P2WPKH, P2SH-P2WPKH, + and P2SH-P2WSH. Requests for P2WSH and P2SH-P2WSH accept an additional + `witnessscript` parameter. + +- `importmulti` now returns an additional `warnings` field for each + request with an array of strings explaining when fields are being + ignored or are inconsistent, if there are any. + +- `getaddressinfo` now returns an additional `solvable` boolean field + when Litecoin Core knows enough about the address's scriptPubKey, + optional redeemScript, and optional witnessScript in order for the + wallet to be able to generate an unsigned input spending funds sent to + that address. + +- The `getaddressinfo`, `listunspent`, and `scantxoutset` RPCs now + return an additional `desc` field that contains an output descriptor + containing all key paths and signing information for the address + (except for the private key). The `desc` field is only returned for + `getaddressinfo` and `listunspent` when the address is solvable. + +- `importprivkey` will preserve previously-set labels for addresses or + public keys corresponding to the private key being imported. For + example, if you imported a watch-only address with the label "cold + wallet" in earlier releases of Litecoin Core, subsequently importing + the private key would default to resetting the address's label to the + default empty-string label (""). In this release, the previous label + of "cold wallet" will be retained. If you optionally specify any + label besides the default when calling `importprivkey`, the new label + will be applied to the address. + +- See the [Mining](#mining) section for changes to `getblocktemplate`. + +- `getmininginfo` now omits `currentblockweight` and `currentblocktx` + when a block was never assembled via RPC on this node. + +- The `getrawtransaction` RPC & REST endpoints no longer check the + unspent UTXO set for a transaction. The remaining behaviors are as + follows: 1. If a blockhash is provided, check the corresponding block. + 2. If no blockhash is provided, check the mempool. 3. If no blockhash + is provided but txindex is enabled, also check txindex. + +- `unloadwallet` is now synchronous, meaning it will not return until + the wallet is fully unloaded. + +- `importmulti` now supports importing of addresses from descriptors. A + "desc" parameter can be provided instead of the "scriptPubKey" in a + request, as well as an optional range for ranged descriptors to + specify the start and end of the range to import. Descriptors with key + origin information imported through `importmulti` will have their key + origin information stored in the wallet for use with creating PSBTs. + More information about descriptors can be found + [here](https://github.com/litecoin-project/litecoin/blob/master/doc/descriptors.md). + +- `listunspent` has been modified so that it also returns + `witnessScript`, the witness script in the case of a P2WSH or + P2SH-P2WSH output. + +- `createwallet` now has an optional `blank` argument that can be used + to create a blank wallet. Blank wallets do not have any keys or HD + seed. They cannot be opened in software older than 0.18. Once a blank + wallet has a HD seed set (by using `sethdseed`) or private keys, + scripts, addresses, and other watch only things have been imported, + the wallet is no longer blank and can be opened in 0.17.x. Encrypting + a blank wallet will also set a HD seed for it. + +Deprecated or removed RPCs +-------------------------- + +- `signrawtransaction` is removed after being deprecated and hidden + behind a special configuration option in version 0.17.0. + +- The 'account' API is removed after being deprecated in v0.17. The + 'label' API was introduced in v0.17 as a replacement for accounts. + See the [release notes from + v0.17](https://github.com/litecoin-project/litecoin/blob/master/doc/release-notes/release-notes-0.17.0.md#label-and-account-apis-for-wallet) + for a full description of the changes from the 'account' API to the + 'label' API. + +- `addwitnessaddress` is removed after being deprecated in version + 0.16.0. + +- `generate` is deprecated and will be fully removed in a subsequent + major version. This RPC is only used for testing, but its + implementation reached across multiple subsystems (wallet and mining), + so it is being deprecated to simplify the wallet-node interface. + Projects that are using `generate` for testing purposes should + transition to using the `generatetoaddress` RPC, which does not + require or use the wallet component. Calling `generatetoaddress` with + an address returned by the `getnewaddress` RPC gives the same + functionality as the old `generate` RPC. To continue using `generate` + in this version, restart litecoind with the `-deprecatedrpc=generate` + configuration option. + +- Be reminded that parts of the `validateaddress` command have been + deprecated and moved to `getaddressinfo`. The following deprecated + fields have moved to `getaddressinfo`: `ismine`, `iswatchonly`, + `script`, `hex`, `pubkeys`, `sigsrequired`, `pubkey`, `embedded`, + `iscompressed`, `label`, `timestamp`, `hdkeypath`, `hdmasterkeyid`. + +- The `addresses` field has been removed from the `validateaddress` + and `getaddressinfo` RPC methods. This field was confusing since + it referred to public keys using their P2PKH address. Clients + should use the `embedded.address` field for P2SH or P2WSH wrapped + addresses, and `pubkeys` for inspecting multisig participants. + +REST changes +------------ + +- A new `/rest/blockhashbyheight/` endpoint is added for fetching the + hash of the block in the current best blockchain based on its height + (how many blocks it is after the Genesis Block). + +Graphical User Interface (GUI) +------------------------------ + +- A new Window menu is added alongside the existing File, Settings, and + Help menus. Several items from the other menus that opened new + windows have been moved to this new Window menu. + +- In the Send tab, the checkbox for "pay only the required fee" has been + removed. Instead, the user can simply decrease the value in the + Custom Feerate field all the way down to the node's configured minimum + relay fee. + +- In the Overview tab, the watch-only balance will be the only balance + shown if the wallet was created using the `createwallet` RPC and the + `disable_private_keys` parameter was set to true. + +- The launch-on-startup option is no longer available on macOS if + compiled with macosx min version greater than 10.11 (use + CXXFLAGS="-mmacosx-version-min=10.11" + CFLAGS="-mmacosx-version-min=10.11" for setting the deployment sdk + version) + +Tools +----- + +- A new `litecoin-wallet` tool is now distributed alongside Litecoin + Core's other executables. Without needing to use any RPCs, this tool + can currently create a new wallet file or display some basic + information about an existing wallet, such as whether the wallet is + encrypted, whether it uses an HD seed, how many transactions it + contains, and how many address book entries it has. + +Planned changes +=============== -### Partial spend avoidance - -When an address is paid multiple times the coins from those separate payments can be spent separately which hurts privacy due to linking otherwise separate addresses. A new `-avoidpartialspends` flag has been added (default=false). If enabled, the wallet will always spend existing UTXO to the same address together even if it results in higher fees. If someone were to send coins to an address after it was used, those coins will still be included in future coin selections. - -Fee policy changes ------------------- - -The default minimum transaction fee `-mintxfee` has been lowered to 0.0001 LTC/kB after relaxing the minimum relay and dust relay fee rates in prior releases. - -Configuration sections for testnet and regtest ----------------------------------------------- - -It is now possible for a single configuration file to set different -options for different networks. This is done by using sections or by -prefixing the option with the network, such as: - - main.uacomment=litecoin - test.uacomment=litecoin-testnet - regtest.uacomment=regtest - [main] - mempoolsize=300 - [test] - mempoolsize=100 - [regtest] - mempoolsize=20 - -If the following options are not in a section, they will only apply to mainnet: -`addnode=`, `connect=`, `port=`, `bind=`, `rpcport=`, `rpcbind=` and `wallet=`. -The options to choose a network (`regtest=` and `testnet=`) must be specified -outside of sections. - -'label' and 'account' APIs for wallet -------------------------------------- - -A new 'label' API has been introduced for the wallet. This is intended as a -replacement for the deprecated 'account' API. The 'account' can continue to -be used in V0.17 by starting litecoind with the '-deprecatedrpc=accounts' -argument, and will be fully removed in V0.18. - -The label RPC methods mirror the account functionality, with the following functional differences: - -- Labels can be set on any address, not just receiving addresses. This functionality was previously only available through the GUI. -- Labels can be deleted by reassigning all addresses using the `setlabel` RPC method. -- There isn't support for sending transactions _from_ a label, or for determining which label a transaction was sent from. -- Labels do not have a balance. - -Here are the changes to RPC methods: - -| Deprecated Method | New Method | Notes | -| :---------------------- | :-------------------- | :-----------| -| `getaccount` | `getaddressinfo` | `getaddressinfo` returns a json object with address information instead of just the name of the account as a string. | -| `getaccountaddress` | n/a | There is no replacement for `getaccountaddress` since labels do not have an associated receive address. | -| `getaddressesbyaccount` | `getaddressesbylabel` | `getaddressesbylabel` returns a json object with the addresses as keys, instead of a list of strings. | -| `getreceivedbyaccount` | `getreceivedbylabel` | _no change in behavior_ | -| `listaccounts` | `listlabels` | `listlabels` does not return a balance or accept `minconf` and `watchonly` arguments. | -| `listreceivedbyaccount` | `listreceivedbylabel` | Both methods return new `label` fields, along with `account` fields for backward compatibility. | -| `move` | n/a | _no replacement_ | -| `sendfrom` | n/a | _no replacement_ | -| `setaccount` | `setlabel` | Both methods now:
  • allow assigning labels to any address, instead of raising an error if the address is not receiving address.
  • delete the previous label associated with an address when the final address using that label is reassigned to a different label, instead of making an implicit `getaccountaddress` call to ensure the previous label still has a receiving address. | - -| Changed Method | Notes | -| :--------------------- | :------ | -| `addmultisigaddress` | Renamed `account` named parameter to `label`. Still accepts `account` for backward compatibility if running with '-deprecatedrpc=accounts'. | -| `getnewaddress` | Renamed `account` named parameter to `label`. Still accepts `account` for backward compatibility. if running with '-deprecatedrpc=accounts' | -| `listunspent` | Returns new `label` fields. `account` field will be returned for backward compatibility if running with '-deprecatedrpc=accounts' | -| `sendmany` | The `account` named parameter has been renamed to `dummy`. If provided, the `dummy` parameter must be set to the empty string, unless running with the `-deprecatedrpc=accounts` argument (in which case functionality is unchanged). | -| `listtransactions` | The `account` named parameter has been renamed to `dummy`. If provided, the `dummy` parameter must be set to the string `*`, unless running with the `-deprecatedrpc=accounts` argument (in which case functionality is unchanged). | -| `getbalance` | `account`, `minconf` and `include_watchonly` parameters are deprecated, and can only be used if running with '-deprecatedrpc=accounts' | - -BIP 174 Partially Signed Litecoin Transactions support ------------------------------------------------------ - -[BIP 174 PSBT](https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki) is an interchange format for Litecoin transactions that are not fully signed -yet, together with relevant metadata to help entities work towards signing it. -It is intended to simplify workflows where multiple parties need to cooperate to -produce a transaction. Examples include hardware wallets, multisig setups, and -[CoinJoin](https://bitcointalk.org/?topic=279249) transactions. - -For backend RPC convenience, the Litecoin devs have supported to keep the acronym `PSBT` -instead of `PSLT` to make crosschain application support easier. - -### Overall workflow - -Overall, the construction of a fully signed Litecoin transaction goes through the -following steps: - -- A **Creator** proposes a particular transaction to be created. He constructs - a PSBT that contains certain inputs and outputs, but no additional metadata. -- For each input, an **Updater** adds information about the UTXOs being spent by - the transaction to the PSBT. -- A potentially other Updater adds information about the scripts and public keys - involved in each of the inputs (and possibly outputs) of the PSBT. -- **Signers** inspect the transaction and its metadata to decide whether they - agree with the transaction. They can use amount information from the UTXOs - to assess the values and fees involved. If they agree, they produce a - partial signature for the inputs for which they have relevant key(s). -- A **Finalizer** is run for each input to convert the partial signatures and - possibly script information into a final `scriptSig` and/or `scriptWitness`. -- An **Extractor** produces a valid Litecoin transaction (in network format) - from a PSBT for which all inputs are finalized. - -Generally, each of the above (excluding Creator and Extractor) will simply -add more and more data to a particular PSBT. In a naive workflow, they all have -to operate sequentially, passing the PSBT from one to the next, until the -Extractor can convert it to a real transaction. In order to permit parallel -operation, **Combiners** can be employed which merge metadata from different -PSBTs for the same unsigned transaction. - -The names above in bold are the names of the roles defined in BIP174. They're -useful in understanding the underlying steps, but in practice, software and -hardware implementations will typically implement multiple roles simultaneously. - -### RPCs - -- **`converttopsbt` (Creator)** is a utility RPC that converts an - unsigned raw transaction to PSBT format. It ignores existing signatures. -- **`createpsbt` (Creator)** is a utility RPC that takes a list of inputs and - outputs and converts them to a PSBT with no additional information. It is - equivalent to calling `createrawtransaction` followed by `converttopsbt`. -- **`walletcreatefundedpsbt` (Creator, Updater)** is a wallet RPC that creates a - PSBT with the specified inputs and outputs, adds additional inputs and change - to it to balance it out, and adds relevant metadata. In particular, for inputs - that the wallet knows about (counting towards its normal or watch-only - balance), UTXO information will be added. For outputs and inputs with UTXO - information present, key and script information will be added which the wallet - knows about. It is equivalent to running `createrawtransaction`, followed by - `fundrawtransaction`, and `converttopsbt`. -- **`walletprocesspsbt` (Updater, Signer, Finalizer)** is a wallet RPC that takes as - input a PSBT, adds UTXO, key, and script data to inputs and outputs that miss - it, and optionally signs inputs. Where possible it also finalizes the partial - signatures. -- **`finalizepsbt` (Finalizer, Extractor)** is a utility RPC that finalizes any - partial signatures, and if all inputs are finalized, converts the result to a - fully signed transaction which can be broadcast with `sendrawtransaction`. -- **`combinepsbt` (Combiner)** is a utility RPC that implements a Combiner. It - can be used at any point in the workflow to merge information added to - different versions of the same PSBT. In particular it is useful to combine the - output of multiple Updaters or Signers. -- **`decodepsbt`** is a diagnostic utility RPC which will show all information in - a PSBT in human-readable form, as well as compute its eventual fee if known. - -Upgrading non-HD wallets to HD wallets --------------------------------------- - -Since Litecoin Core 0.13.0, creating new BIP 32 Hierarchical Deterministic wallets has been supported by Litecoin Core but old non-HD wallets could not be upgraded to HD. Now non-HD wallets can be upgraded to HD using the `-upgradewallet` command line option. This upgrade will result in the all keys in the keypool being marked as used and a new keypool generated. **A new backup must be made when this upgrade is performed.** - -Additionally, `-upgradewallet` can be used to upgraded from a non-split HD chain (all keys generated with `m/0'/0'/i'`) to a split HD chain (receiving keys generated with `'m/0'/0'/i'` and change keys generated with `m'/0'/1'/i'`). When this upgrade occurs, all keys already in the keypool will remain in the keypool to be used until all keys from before the upgrade are exhausted. This is to avoid issues with backups and downgrades when some keys may come from the change key keypool. Users can begin using the new split HD chain keypools by using the `newkeypool` RPC to mark all keys in the keypool as used and begin using a new keypool generated from the split HD chain. - -HD Master key rotation ----------------------- - -A new RPC, `sethdseed`, has been introduced which allows users to set a new HD seed or set their own HD seed. This allows for a new HD seed to be used. **A new backup must be made when a new HD seed is set.** - -Low-level RPC changes ---------------------- - -- The new RPC `scantxoutset` can be used to scan the UTXO set for entries - that match certain output descriptors. Refer to the [output descriptors - reference documentation](descriptors.md) for more details. This call - is similar to `listunspent` but does not use a wallet, meaning that the - wallet can be disabled at compile or run time. This call is experimental, - as such, is subject to changes or removal in future releases. - -- The `createrawtransaction` RPC will now accept an array or dictionary (kept for compatibility) for the `outputs` parameter. This means the order of transaction outputs can be specified by the client. -- The `fundrawtransaction` RPC will reject the previously deprecated `reserveChangeKey` option. -- `sendmany` now shuffles outputs to improve privacy, so any previously expected behavior with regards to output ordering can no longer be relied upon. -- The new RPC `testmempoolaccept` can be used to test acceptance of a transaction to the mempool without adding it. -- JSON transaction decomposition now includes a `weight` field which provides - the transaction's exact weight. This is included in REST /rest/tx/ and - /rest/block/ endpoints when in json mode. This is also included in `getblock` - (with verbosity=2), `listsinceblock`, `listtransactions`, and - `getrawtransaction` RPC commands. -- New `fees` field introduced in `getrawmempool`, `getmempoolancestors`, `getmempooldescendants` and - `getmempoolentry` when verbosity is set to `true` with sub-fields `ancestor`, `base`, `modified` - and `descendant` denominated in LTC. This new field deprecates previous fee fields, such as - `fee`, `modifiedfee`, `ancestorfee` and `descendantfee`. -- The new RPC `getzmqnotifications` returns information about active ZMQ - notifications. -- When litecoin is not started with any `-wallet=` options, the name of - the default wallet returned by `getwalletinfo` and `listwallets` RPCs is - now the empty string `""` instead of `"wallet.dat"`. If litecoin is started - with any `-wallet=` options, there is no change in behavior, and the - name of any wallet is just its `` string. -- Passing an empty string (`""`) as the `address_type` parameter to - `getnewaddress`, `getrawchangeaddress`, `addmultisigaddress`, - `fundrawtransaction` RPCs is now an error. Previously, this would fall back - to using the default address type. It is still possible to pass null or leave - the parameter unset to use the default address type. - -- Bare multisig outputs to our keys are no longer automatically treated as - incoming payments. As this feature was only available for multisig outputs for - which you had all private keys in your wallet, there was generally no use for - them compared to single-key schemes. Furthermore, no address format for such - outputs is defined, and wallet software can't easily send to it. These outputs - will no longer show up in `listtransactions`, `listunspent`, or contribute to - your balance, unless they are explicitly watched (using `importaddress` or - `importmulti` with hex script argument). `signrawtransaction*` also still - works for them. - -- The `getwalletinfo` RPC method now returns an `hdseedid` value, which is always the same as the incorrectly-named `hdmasterkeyid` value. `hdmasterkeyid` will be removed in V0.18. -- The `getaddressinfo` RPC method now returns an `hdseedid` value, which is always the same as the incorrectly-named `hdmasterkeyid` value. `hdmasterkeyid` will be removed in V0.18. - -- Parts of the `validateaddress` RPC method have been deprecated and moved to - `getaddressinfo`. Clients must transition to using `getaddressinfo` to access - this information before upgrading to v0.18. The following deprecated fields - have moved to `getaddressinfo` and will only be shown with - `-deprecatedrpc=validateaddress`: `ismine`, `iswatchonly`, `script`, `hex`, - `pubkeys`, `sigsrequired`, `pubkey`, `addresses`, `embedded`, `iscompressed`, - `account`, `timestamp`, `hdkeypath`, `hdmasterkeyid`. -- `signrawtransaction` is deprecated and will be fully removed in v0.18. To use - `signrawtransaction` in v0.17, restart litecoind with - `-deprecatedrpc=signrawtransaction`. Projects should transition to using - `signrawtransactionwithkey` and `signrawtransactionwithwallet` before - upgrading to v0.18. - -Other API changes ------------------ - -- The `inactivehdmaster` property in the `dumpwallet` output has been corrected to `inactivehdseed` - -### Logging - -- The log timestamp format is now ISO 8601 (e.g. "2018-02-28T12:34:56Z"). - -- When running litecoind with `-debug` but without `-daemon`, logging to stdout - is now the default behavior. Setting `-printtoconsole=1` no longer implicitly - disables logging to debug.log. Instead, logging to file can be explicitly disabled - by setting `-debuglogfile=0`. - -Transaction index changes -------------------------- - -The transaction index is now built separately from the main node procedure, -meaning the `-txindex` flag can be toggled without a full reindex. If litecoind -is run with `-txindex` on a node that is already partially or fully synced -without one, the transaction index will be built in the background and become -available once caught up. When switching from running `-txindex` to running -without the flag, the transaction index database will *not* be deleted -automatically, meaning it could be turned back on at a later time without a full -resync. - -Miner block size removed ------------------------- - -The `-blockmaxsize` option for miners to limit their blocks' sizes was -deprecated in V0.15.1, and has now been removed. Miners should use the -`-blockmaxweight` option if they want to limit the weight of their blocks. - -Python Support --------------- +This section describes planned changes to Litecoin Core that may affect +other Litecoin software and services. + +- Since version 0.16.0, Litecoin Core’s built-in wallet has defaulted to + generating P2SH-wrapped segwit addresses when users want to receive + payments. These addresses are backwards compatible with all + widely-used software. Starting with Litecoin Core 0.20 (expected about + a year after 0.18), Litecoin Core will default to native segwit + addresses (bech32) that provide additional fee savings and other + benefits. Currently, many wallets and services already support sending + to bech32 addresses, and if the Litecoin Core project sees enough + additional adoption, it will instead default to bech32 receiving + addresses in Litecoin Core 0.20. + P2SH-wrapped segwit addresses will continue to be provided if the user + requests them in the GUI or by RPC, and anyone who doesn’t want the + update will be able to configure their default address type. + (Similarly, pioneering users who want to change their default now may + set the `addresstype=bech32` configuration option in any Litecoin Core + release from 0.16.0 up.) + +Deprecated P2P messages +----------------------- + +- BIP 61 reject messages are now deprecated. Reject messages have no use + case on the P2P network and are only logged for debugging by most + network nodes. Furthermore, they increase bandwidth and can be harmful + for privacy and security. It has been possible to disable BIP 61 + messages since v0.17 with the `-enablebip61=0` option. BIP 61 messages + will be disabled by default in a future version, before being removed + entirely. + +Low-level changes +================= + +This section describes RPC changes mainly useful for testing, mostly not +relevant in production. The changes are mentioned for completeness. + +RPC +--- + +- The `submitblock` RPC previously returned the reason a rejected block + was invalid the first time it processed that block, but returned a + generic "duplicate" rejection message on subsequent occasions it + processed the same block. It now always returns the fundamental + reason for rejecting an invalid block and only returns "duplicate" for + valid blocks it has already accepted. + +- A new `submitheader` RPC allows submitting block headers independently + from their block. This is likely only useful for testing. + +- The `signrawtransactionwithkey` and `signrawtransactionwithwallet` + RPCs have been modified so that they also optionally accept a + `witnessScript`, the witness script in the case of a P2WSH or + P2SH-P2WSH output. This is compatible with the change to + `listunspent`. + +- For the `walletprocesspsbt` and `walletcreatefundedpsbt` RPCs, if the + `bip32derivs` parameter is set to true but the key metadata for a + public key has not been updated yet, then that key will have a + derivation path as if it were just an independent key (i.e. no + derivation path and its master fingerprint is itself). + +Configuration +------------- + +- The `-usehd` configuration option was removed in version 0.16. From + that version onwards, all new wallets created are hierarchical + deterministic wallets. This release makes specifying `-usehd` an + invalid configuration option. + +Network +------- + +- This release allows peers that your node automatically disconnected + for misbehavior (e.g. sending invalid data) to reconnect to your node + if you have unused incoming connection slots. If your slots fill up, + a misbehaving node will be disconnected to make room for nodes without + a history of problems (unless the misbehaving node helps your node in + some other way, such as by connecting to a part of the Internet from + which you don't have many other peers). Previously, Litecoin Core + banned the IP addresses of misbehaving peers for a period of time + (default of 1 day); this was easily circumvented by attackers with + multiple IP addresses. If you manually ban a peer, such as by using + the `setban` RPC, all connections from that peer will still be + rejected. + +Wallet +------- + +- The key metadata will need to be upgraded the first time that the HD + seed is available. For unencrypted wallets this will occur on wallet + loading. For encrypted wallets this will occur the first time the + wallet is unlocked. + +- Newly encrypted wallets will no longer require restarting the + software. Instead such wallets will be completely unloaded and + reloaded to achieve the same effect. + +- A sub-project of Litecoin Core now provides Hardware Wallet Interaction + (HWI) scripts that allow command-line users to use several popular + hardware key management devices with Litecoin Core. See their [project + page](https://github.com/bitcoin-core/HWI#readme) for details. + +Security +-------- + +- This release changes the Random Number Generator (RNG) used from + OpenSSL to Litecoin Core's own implementation, although entropy + gathered by Litecoin Core is fed out to OpenSSL and then read back in + when the program needs strong randomness. This moves Litecoin Core a + little closer to no longer needing to depend on OpenSSL, a dependency + that has caused security issues in the past. The new implementation + gathers entropy from multiple sources, including from hardware + supporting the rdseed CPU instruction. + +Changes for particular platforms +-------------------------------- -Support for Python 2 has been discontinued for all test files and tools. +- On macOS, Litecoin Core now opts out of application CPU throttling + ("app nap") during initial blockchain download, when catching up from + over 100 blocks behind the current chain tip, or when reindexing chain + data. This helps prevent these operations from taking an excessively + long time because the operating system is attempting to conserve + power. -0.17.1 change log +0.18.1 change log ================= ### Consensus -- #12204 `3fa24bb` Fix overly eager BIP30 bypass (morcos) - -### Policy -- #12568 `ed6ae80` Allow dustrelayfee to be set to zero (luke-jr) -- #13120 `ca2a233` Treat segwit as always active (MarcoFalke) -- #13096 `062738c` Fix `MAX_STANDARD_TX_WEIGHT` check (jl2012) +- #14247 Fix crash bug with duplicate inputs within a transaction (TheBlueMatt) ### Mining -- #12693 `df529dc` Remove unused variable in SortForBlock (drewx2) -- #12448 `84efa9a` Interrupt block generation on shutdown request (promag) +- #14811 Mining: Enforce that segwit option must be set in GBT (jnewbery) ### Block and transaction handling -- #12225 `67447ba` Mempool cleanups (sdaftuar) -- #12356 `fd65937` Fix 'mempool min fee not met' debug output (Empact) -- #12287 `bf3353d` Optimise lock behaviour for GuessVerificationProgress() (jonasschnelli) -- #11889 `47a7666` Drop extra script variable in ProduceSignature (ryanofsky) -- #11880 `d59b8d6` Stop special-casing phashBlock handling in validation for TBV (TheBlueMatt) -- #12431 `947c25e` Only call NotifyBlockTip when chainActive changes (jamesob) -- #12653 `534b8fa` Allow to optional specify the directory for the blocks storage (jonasschnelli) -- #12172 `3b62a91` Bugfix: RPC: savemempool: Don't save until LoadMempool() is finished (jtimon) -- #12167 `88430cb` Make segwit failure due to `CLEANSTACK` violation return a `SCRIPT_ERR_CLEANSTACK` error code (maaku) -- #12561 `24133b1` Check for block corruption in ConnectBlock() (sdaftuar) -- #11617 `1b5723e` Avoid lock: Call FlushStateToDisk(…) regardless of fCheckForPruning (practicalswift) -- #11739 `0a8b7b4` Enforce `SCRIPT_VERIFY_P2SH` and `SCRIPT_VERIFY_WITNESS` from genesis (sdaftuar) -- #12885 `a49381d` Reduce implementation code inside CScript (sipa) -- #13032 `34dd1a6` Output values for "min relay fee not met" error (kristapsk) -- #13033 `a07e8ca` Build txindex in parallel with validation (jimpo) -- #13080 `66cc47b` Add compile time checking for ::mempool.cs runtime locking assertions (practicalswift) -- #13185 `08c1caf` Bugfix: the end of a reorged chain is invalid when connect fails (sipa) -- #11689 `0264836` Fix missing locking in CTxMemPool::check(…) and CTxMemPool::setSanityCheck(…) (practicalswift) -- #13011 `3c2a41a` Cache witness hash in CTransaction (MarcoFalke) -- #13191 `0de7cc8` Specialized double-SHA256 with 64 byte inputs with SSE4.1 and AVX2 (sipa) -- #13243 `ea263e1` Make reusable base class for auxiliary indices (jimpo) -- #13393 `a607d23` Enable double-SHA256-for-64-byte code on 32-bit x86 (sipa) -- #13428 `caabdea` validation: check the specified number of blocks (off-by-one) (kallewoof) -- #13438 `450055b` Improve coverage of SHA256 SelfTest code (sipa) -- #13431 `954f4a9` validation: count blocks correctly for check level < 3 (kallewoof) -- #13386 `3a3eabe` SHA256 implementations based on Intel SHA Extensions (sipa) -- #11658 `9a1ad2c` During IBD, when doing pruning, prune 10% extra to avoid pruning again soon after (luke-jr) -- #13794 `8ce55df` chainparams: Update with data from assumed valid chain (MarcoFalke) -- #13527 `e7ea858` Remove promiscuousmempoolflags (MarcoFalke) +- #13310 Report progress in ReplayBlocks while rolling forward (promag) +- #13783 validation: Pass tx pool reference into CheckSequenceLocks (MarcoFalke) +- #14834 validation: Assert that pindexPrev is non-null when required (kallewoof) +- #14085 index: Fix for indexers skipping genesis block (jimpo) +- #14963 mempool, validation: Explain `cs_main` locking semantics (MarcoFalke) +- #15193 Default `-whitelistforcerelay` to off (sdaftuar) +- #15429 Update `assumevalid`, `minimumchainwork`, and `getchaintxstats` to height 563378 (gmaxwell) +- #15552 Granular invalidateblock and RewindBlockIndex (MarcoFalke) +- #14841 Move CheckBlock() call to critical section (hebasto) ### P2P protocol and network code -- #12342 `eaeaa2d` Extend #11583 ("Do not make it trivial for inbound peers to generate log entries") to include "version handshake timeout" message (clemtaylor) -- #12218 `9a32114` Move misbehaving logging to net logging category (laanwj) -- #10387 `5c2aff8` Eventually connect to `NODE_NETWORK_LIMITED` peers (jonasschnelli) -- #9037 `a36834f` Add test-before-evict discipline to addrman (EthanHeilman) -- #12622 `e1d6e2a` Correct addrman logging (laanwj) -- #11962 `0a01843` add seed.bitcoin.sprovoost.nl to DNS seeds (Sjors) -- #12569 `23e7fe8` Increase signal-to-noise ratio in debug.log by adjusting log level when logging failed non-manual connect():s (practicalswift) -- #12855 `c199869` Minor accumulated cleanups (tjps) -- #13153 `ef46c99` Add missing newlines to debug logging (laanwj) -- #13162 `a174702` Don't incorrectly log that REJECT messages are unknown (jnewbery) -- #13151 `7f4db9a` Serve blocks directly from disk when possible (laanwj) -- #13134 `70d3541` Add option `-enablebip61` to configure sending of BIP61 notifications (laanwj) -- #13532 `7209fec` Log warning when deprecated network name 'tor' is used (wodry) -- #13615 `172f984` Remove unused interrupt from SendMessages (fanquake) -- #13417 `1e90862` Tighten scope in `net_processing` (skeees) -- #13298 `f8d470e` Bucketing INV delays (1 bucket) for incoming connections to hide tx time (naumenkogs) -- #13672 `0d8d6be` Modified `in_addr6` cast in CConman class to work with msvc (sipsorcery) -- #11637 `c575260` Remove dead service bits code (MarcoFalke) -- #13212 `a6f00ce` Fixed a race condition when disabling the network (lmanners) -- #13656 `1211b15` Remove the boost/algorithm/string/predicate.hpp dependency (251Labs) -- #13423 `f58674a` Thread safety annotations in `net_processing` (skeees) -- #13776 `7d36237` Add missing verification of IPv6 address in CNetAddr::GetIn6Addr(…) (practicalswift) -- #13907 `48bf8ff` Introduce a maximum size for locators (gmaxwell) -- #13951 `8a9ffec` Hardcoded seeds update pre-0.17 branch (laanwj) -- #14685 `9406502` Fix a deserialization overflow edge case (kazcw) -- #14728 `b901578` Fix uninitialized read when stringifying an addrLocal (kazcw) +- #14025 Remove dead code for nVersion=10300 (MarcoFalke) +- #12254 BIP 158: Compact Block Filters for Light Clients (jimpo) +- #14073 blockfilter: Avoid out-of-bounds script access (jimpo) +- #14140 Switch nPrevNodeCount to vNodesSize (pstratem) +- #14027 Skip stale tip checking if outbound connections are off or if reindexing (gmaxwell) +- #14532 Never bind `INADDR_ANY` by default, and warn when doing so explicitly (luke-jr) +- #14733 Make peer timeout configurable, speed up very slow test and ensure correct code path tested (zallarak) +- #14336 Implement poll (pstratem) +- #15051 IsReachable is the inverse of IsLimited (DRY). Includes unit tests (mmachicao) +- #15138 Drop IsLimited in favor of IsReachable (Empact) +- #14605 Return of the Banman (dongcarl) +- #14970 Add dnsseed.emzy.de to DNS seeds (Emzy) +- #14929 Allow connections from misbehavior banned peers (gmaxwell) +- #15345 Correct comparison of addr count (dongcarl) +- #15201 Add missing locking annotation for vNodes. vNodes is guarded by cs_vNodes (practicalswift) +- #14626 Select orphan transaction uniformly for eviction (sipa) +- #15486 Ensure tried collisions resolve, and allow feeler connections to existing outbound netgroups (sdaftuar) +- #15990 Add tests and documentation for blocksonly (MarcoFalke) +- #16021 Avoid logging transaction decode errors to stderr (MarcoFalke) +- #16405 fix: tor: Call `event_base_loopbreak` from the event's callback (promag) +- #16412 Make poll in InterruptibleRecv only filter for POLLIN events (tecnovert) ### Wallet -- #12330 `2a30e67` Reduce scope of `cs_main` and `cs_wallet` locks in listtransactions (promag) -- #12298 `a1ffddb` Refactor HaveKeys to early return on false result (promag) -- #12282 `663911e` Disallow abandon of conflicted txes (MarcoFalke) -- #12333 `d405bee` Make CWallet::ListCoins atomic (promag) -- #12296 `8e6f9f4` Only fee-bump non-conflicted/non-confirmed txes (MarcoFalke) -- #11866 `6bb9c13` Do not un-mark fInMempool on wallet txn if ATMP fails (TheBlueMatt) -- #11882 `987a809` Disable default fallbackfee on mainnet (jonasschnelli) -- #9991 `4ca7c1e` listreceivedbyaddress Filter Address (NicolasDorier) -- #11687 `98bc27f` External wallet files (ryanofsky) -- #12658 `af88094` Sanitize some wallet serialization (sipa) -- #9680 `6acd870` Unify CWalletTx construction (ryanofsky) -- #10637 `e057589` Coin Selection with Murch's algorithm (achow101, Xekyo) -- #12408 `c39dd2e` Change output type globals to members (MarcoFalke) -- #12694 `9552dfb` Actually disable BnB when there are preset inputs (achow101) -- #11536 `cead84b` Rename account to label where appropriate (ryanofsky) -- #12709 `02b7e83` shuffle sendmany recipients ordering (instagibbs) -- #12699 `c948dc8` Shuffle transaction inputs before signing (instagibbs) -- #10762 `6d53663` Remove Wallet dependencies from init.cpp (jnewbery) -- #12857 `821980c` Avoid travis lint-include-guards error (ken2812221) -- #12702 `dab0d68` importprivkey: hint about importmulti (kallewoof) -- #12836 `9abdb7c` Make WalletInitInterface and DummyWalletInit private, fix nullptr deref (promag) -- #12785 `215158a` Initialize `m_last_block_processed` to nullptr (practicalswift) -- #12932 `8d651ae` Remove redundant lambda function arg in handleTransactionChanged (laanwj) -- #12749 `a84b056` feebumper: discard change outputs below discard rate (instagibbs) -- #12892 `9b3370d` introduce 'label' API for wallet (jnewbery) -- #12925 `6d3de17` Logprint the start of a rescan (jonasschnelli) -- #12888 `39439e5` debug log number of unknown wallet records on load (instagibbs) -- #12977 `434150a` Refactor `g_wallet_init_interface` to const reference (promag) -- #13017 `65d7083` Add wallets management functions (promag) -- #12953 `d1d54ae` Deprecate accounts (jnewbery) -- #12909 `476cb35` Make fee settings to be non-static members (MarcoFalke) -- #13002 `487dcbe` Do not treat bare multisig outputs as IsMine unless watched (sipa) -- #13028 `783bb64` Make vpwallets usage thread safe (promag) -- #12507 `2afdc29` Interrupt rescan on shutdown request (promag) -- #12729 `979150b` Get rid of ambiguous OutputType::NONE value (ryanofsky) -- #13079 `5778d44` Fix rescanblockchain rpc to properly report progress (Empact) -- #12560 `e03c0db` Upgrade path for non-HD wallets to HD (achow101) -- #13161 `7cc1bd3` Reset BerkeleyDB handle after connection fails (real-or-random) -- #13081 `0dec5b5` Add compile time checking for `cs_wallet` runtime locking assertions (practicalswift) -- #13127 `19a3a9e` Add Clang thread safety annotations for variables guarded by `cs_db` (practicalswift) -- #10740 `4cfe17c` `loadwallet` RPC - load wallet at runtime (jnewbery) -- #12924 `6738813` Fix hdmaster-key / seed-key confusion (scripted diff) (jnewbery) -- #13297 `d82c5d1` Fix incorrect comment for DeriveNewSeed (jnewbery) -- #13063 `6378eef` Use shared pointer to retain wallet instance (promag) -- #13142 `56fe3dc` Separate IsMine from solvability (sipa) -- #13194 `fd96d54` Remove template matching and pseudo opcodes (sipa) -- #13252 `c4cc8d9` Refactor ReserveKeyFromKeyPool for safety (Empact) -- #13058 `343d4e4` `createwallet` RPC - create new wallet at runtime (jnewbery) -- #13351 `2140f6c` Prevent segfault when sending to unspendable witness (MarcoFalke) -- #13060 `3f0f394` Remove getlabeladdress RPC (jnewbery) -- #13111 `000abbb` Add unloadwallet RPC (promag) -- #13160 `868cf43` Unlock spent outputs (promag) -- #13498 `f54f373` Fixups from account API deprecation (jnewbery) -- #13491 `61a044a` Improve handling of INVALID in IsMine (sipa) -- #13425 `028b0d9` Moving final scriptSig construction from CombineSignatures to ProduceSignature (PSBT signer logic) (achow101) -- #13564 `88a15eb` loadwallet shouldn't create new wallets (jnewbery) -- #12944 `619cd29` ScanforWalletTransactions should mark input txns as dirty (instagibbs) -- #13630 `d6b2235` Drop unused pindexRet arg to CMerkleTx::GetDepthInMainChain (Empact) -- #13566 `ad552a5` Fix get balance (jnewbery) -- #13500 `4a3e8c5` Decouple wallet version from client version (achow101) -- #13712 `aba2e66` Fix non-determinism in ParseHDKeypath(…). Avoid using an uninitialized variable in path calculation (practicalswift) -- #9662 `6b6e854` Add createwallet "disableprivatekeys" option: a sane mode for watchonly-wallets (jonasschnelli) -- #13683 `e8c7434` Introduce assertion to document the assumption that cache and cache_used are always set in tandem (practicalswift) -- #12257 `5f7575e` Use destination groups instead of coins in coin select (kallewoof) -- #13773 `89a116d` Fix accidental use of the comma operator (practicalswift) -- #13805 `c88529a` Correctly limit output group size (sdaftuar) -- #12992 `26f59f5` Add wallet name to log messages (PierreRochard) -- #13667 `b81a8a5` Fix backupwallet for multiwallets (domob1812) -- #13657 `51c693d` assert to ensure accuracy of CMerkleTx::GetBlocksToMaturity (Empact) -- #13812 `9d86aad` sum ancestors rather than taking max in output groups (kallewoof) -- #13876 `8eb9870` Catch `filesystem_error` and raise `InitError` (MarcoFalke) -- #13808 `13d51a2` shuffle coins before grouping, where warranted (kallewoof) -- #13666 `2115cba` Always create signatures with Low R values (achow101) -- #13917 `0333914` Additional safety checks in PSBT signer (sipa) -- #13968 `65e7a8b` couple of walletcreatefundedpsbt fixes (instagibbs) -- #14055 `2307a6e` fix walletcreatefundedpsbt deriv paths, add test (instagibbs) -- #14441 `5150acc` Restore ability to list incoming transactions by label (jnewbery) -- #13546 `91fa15a` Fix use of uninitialized value `bnb_used` in CWallet::CreateTransaction(…) (practicalswift) -- #14310 `bb90695` Ensure wallet is unlocked before signing (gustavonalle) -- #14690 `5782fdc` Throw error if CPubKey is invalid during PSBT keypath serialization (instagibbs) -- #14852 `2528443` backport: [tests] Add `wallet_balance.py` (MarcoFalke) -- #14196 `3362a95` psbt: always drop the unnecessary utxo and convert non-witness utxo to witness when necessary (achow101) -- #14588 `70ee1f8` Refactor PSBT signing logic to enforce invariant and fix signing bug (gwillen) -- #14424 `89a9a9d` Stop requiring imported pubkey to sign non-PKH schemes (sipa, MeshCollider) +- #13962 Remove unused `dummy_tx` variable from FillPSBT (dongcarl) +- #13967 Don't report `minversion` wallet entry as unknown (instagibbs) +- #13988 Add checks for settxfee reasonableness (ajtowns) +- #12559 Avoid locking `cs_main` in some wallet RPC (promag) +- #13631 Add CMerkleTx::IsImmatureCoinBase method (Empact) +- #14023 Remove accounts RPCs (jnewbery) +- #13825 Kill accounts (jnewbery) +- #10605 Add AssertLockHeld assertions in CWallet::ListCoins (ryanofsky) +- #12490 Remove deprecated wallet rpc features from `bitcoin_server` (jnewbery) +- #14138 Set `encrypted_batch` to nullptr after delete. Avoid double free in the case of NDEBUG (practicalswift) +- #14168 Remove `ENABLE_WALLET` from `libbitcoin_server.a` (jnewbery) +- #12493 Reopen CDBEnv after encryption instead of shutting down (achow101) +- #14282 Remove `-usehd` option (jnewbery) +- #14146 Remove trailing separators from `-walletdir` arg (PierreRochard) +- #14291 Add ListWalletDir utility function (promag) +- #14468 Deprecate `generate` RPC method (jnewbery) +- #11634 Add missing `cs_wallet`/`cs_KeyStore` locks to wallet (practicalswift) +- #14296 Remove `addwitnessaddress` (jnewbery) +- #14451 Add BIP70 deprecation warning and allow building GUI without BIP70 support (jameshilliard) +- #14320 Fix duplicate fileid detection (ken2812221) +- #14561 Remove `fs::relative` call and fix listwalletdir tests (promag) +- #14454 Add SegWit support to importmulti (MeshCollider) +- #14410 rpcwallet: `ischange` field for `getaddressinfo` RPC (mrwhythat) +- #14350 Add WalletLocation class (promag) +- #14689 Require a public key to be retrieved when signing a P2PKH input (achow101) +- #14478 Show error to user when corrupt wallet unlock fails (MeshCollider) +- #14411 Restore ability to list incoming transactions by label (ryanofsky) +- #14552 Detect duplicate wallet by comparing the db filename (ken2812221) +- #14678 Remove redundant KeyOriginInfo access, already done in CreateSig (instagibbs) +- #14477 Add ability to convert solvability info to descriptor (sipa) +- #14380 Fix assert crash when specified change output spend size is unknown (instagibbs) +- #14760 Log env path in `BerkeleyEnvironment::Flush` (promag) +- #14646 Add expansion cache functions to descriptors (unused for now) (sipa) +- #13076 Fix ScanForWalletTransactions to return an enum indicating scan result: `success` / `failure` / `user_abort` (Empact) +- #14821 Replace CAffectedKeysVisitor with descriptor based logic (sipa) +- #14957 Initialize `stop_block` in CWallet::ScanForWalletTransactions (Empact) +- #14565 Overhaul `importmulti` logic (sipa) +- #15039 Avoid leaking nLockTime fingerprint when anti-fee-sniping (MarcoFalke) +- #14268 Introduce SafeDbt to handle Dbt with free or `memory_cleanse` raii-style (Empact) +- #14711 Remove uses of chainActive and mapBlockIndex in wallet code (ryanofsky) +- #15279 Clarify rescanblockchain doc (MarcoFalke) +- #15292 Remove `boost::optional`-related false positive -Wmaybe-uninitialized warnings on GCC compiler (hebasto) +- #13926 [Tools] bitcoin-wallet - a tool for creating and managing wallets offline (jnewbery) +- #11911 Free BerkeleyEnvironment instances when not in use (ryanofsky) +- #15235 Do not import private keys to wallets with private keys disabled (achow101) +- #15263 Descriptor expansions only need pubkey entries for PKH/WPKH (sipa) +- #15322 Add missing `cs_db` lock (promag) +- #15297 Releases dangling files on `BerkeleyEnvironment::Close` (promag) +- #14491 Allow descriptor imports with importmulti (MeshCollider) +- #15365 Add lock annotation for mapAddressBook (MarcoFalke) +- #15226 Allow creating blank (empty) wallets (alternative) (achow101) +- #15390 [wallet-tool] Close bdb when flushing wallet (jnewbery) +- #15334 Log absolute paths for the wallets (hebasto) +- #14978 Factor out PSBT utilities from RPCs for use in GUI code; related refactoring (gwillen) +- #14481 Add P2SH-P2WSH support to listunspent RPC (MeshCollider) +- #14021 Import key origin data through descriptors in importmulti (achow101) +- #14075 Import watch only pubkeys to the keypool if private keys are disabled (achow101) +- #15368 Descriptor checksums (sipa) +- #15433 Use a single wallet batch for `UpgradeKeyMetadata` (jonasschnelli) +- #15408 Remove unused `TransactionError` constants (MarcoFalke) +- #15583 Log and ignore errors in ListWalletDir and IsBerkeleyBtree (promag) +- #14195 Pass privkey export DER compression flag correctly (fingera) +- #15299 Fix assertion in `CKey::SignCompact` (promag) +- #14437 Start to separate wallet from node (ryanofsky) +- #15749 Fix: importmulti only imports origin info for PKH outputs (sipa) +- #15913 Add -ignorepartialspends to list of ignored wallet options (luke-jr) ### RPC and other APIs -- #12336 `3843780` Remove deprecated rpc options (jnewbery) -- #12193 `5dc00f6` Consistently use UniValue.pushKV instead of push_back(Pair()) (karel-3d) (MarcoFalke) -- #12409 `0cc45ed` Reject deprecated reserveChangeKey in fundrawtransaction (MarcoFalke) -- #10583 `8a98dfe` Split part of validateaddress into getaddressinfo (achow101) -- #10579 `ffc6e48` Split signrawtransaction into wallet and non-wallet RPC command (achow101) -- #12494 `e4ffcac` Declare CMutableTransaction a struct in rawtransaction.h (Empact) -- #12503 `0e26591` createmultisig no longer takes addresses (instagibbs) -- #12083 `228b086` Improve getchaintxstats test coverage (promag) -- #12479 `cd5e438` Add child transactions to getrawmempool verbose output (conscott) -- #11872 `702e8b7` createrawtransaction: Accept sorted outputs (MarcoFalke) -- #12700 `ebdf84c` Document RPC method aliasing (ryanofsky) -- #12727 `8ee5c7b` Remove unreachable help conditions in rpcwallet.cpp (lutangar) -- #12778 `b648974` Add username and ip logging for RPC method requests (GabrielDav) -- #12717 `ac898b6` rest: Handle utxo retrieval when ignoring the mempool (romanz) -- #12787 `cd99e5b` Adjust ifdef to avoid unreachable code (practicalswift) -- #11742 `18815b4` Add testmempoolaccept (MarcoFalke) -- #12942 `fefb817` Drop redundant testing of signrawtransaction prevtxs args (Empact) -- #11200 `5f2a399` Allow for aborting rescans in the GUI (achow101) -- #12791 `3a8a4dc` Expose a transaction's weight via RPC (TheBlueMatt) -- #12436 `6e67754` Adds a functional test to validate the transaction version number in the RPC output (251Labs) -- #12240 `6f8b345` Introduced a new `fees` structure that aggregates all sub-field fee types denominated in BTC (mryandao) -- #12321 `eac067a` p2wsh and p2sh-p2wsh address in decodescript (fivepiece) -- #13090 `17266a1` Remove Safe mode (achow101, laanwj) -- #12639 `7eb7076` Reduce `cs_main` lock in listunspent (promag) -- #10267 `7b966d9` New -includeconf argument for including external configuration files (kallewoof) -- #10757 `b9551d3` Introduce getblockstats to plot things (jtimon) -- #13288 `a589f53` Remove the need to include rpc/blockchain.cpp in order to put `GetDifficulty` under test (Empact) -- #13394 `e1f8dce` cli: Ignore libevent warnings (theuni) -- #13439 `3f398d7` Avoid "duplicate" return value for invalid submitblock (TheBlueMatt) -- #13570 `a247594` Add new "getzmqnotifications" method (domob1812) -- #13072 `b25a4c2` Update createmultisig RPC to support segwit (ajtowns) -- #12196 `8fceae0` Add scantxoutset RPC method (jonasschnelli) -- #13557 `b654723` BIP 174 PSBT Serializations and RPCs (achow101) -- #13697 `f030410` Support output descriptors in scantxoutset (sipa) -- #13927 `bced8ea` Use pushKV in some new PSBT RPCs (domob1812) -- #13918 `a9c56b6` Replace median fee rate with feerate percentiles in getblockstats (marcinja) -- #13721 `9f23c16` Bugfixes for BIP 174 combining and deserialization (achow101) -- #13960 `517010e` Fix PSBT deserialization of 0-input transactions (achow101) -- #14417 `fb9ad04` Fix listreceivedbyaddress not taking address as a string (etscrivner) -- #14596 `de5e48a` Bugfix: RPC: Add `address_type` named param for createmultisig (luke-jr) -- #14618 `9666dba` Make HTTP RPC debug logging more informative (practicalswift) -- #14197 `7bee414` [psbt] Convert non-witness UTXOs to witness if witness sig created (achow101) -- #14377 `a3fe125` Check that a separator is found for psbt inputs, outputs, and global map (achow101) -- #14356 `7a590d8` Fix converttopsbt permitsigdata arg, add basic test (instagibbs) -- #14453 `75b5d8c` Fix wallet unload during walletpassphrase timeout (promag) +- #12842 Prevent concurrent `savemempool` (promag) +- #13987 Report `minfeefilter` value in `getpeerinfo` RPC (ajtowns) +- #13891 Remove getinfo deprecation warning (jnewbery) +- #13399 Add `submitheader` (MarcoFalke) +- #12676 Show `bip125-replaceable` flag, when retrieving mempool entries (dexX7) +- #13723 PSBT key path cleanups (sipa) +- #14008 Preserve a format of RPC command definitions (kostyantyn) +- #9332 Let wallet `importmulti` RPC accept labels for standard scriptPubKeys (ryanofsky) +- #13983 Return more specific reject reason for submitblock (MarcoFalke) +- #13152 Add getnodeaddresses RPC command (chris-belcher) +- #14298 rest: Improve performance for JSON calls (alecalve) +- #14297 Remove warning for removed estimatefee RPC (jnewbery) +- #14373 Consistency fixes for RPC descriptions (ch4ot1c) +- #14150 Add key origin support to descriptors (sipa) +- #14518 Always throw in getblockstats if `-txindex` is required (promag) +- #14060 ZMQ: add options to configure outbound message high water mark, aka SNDHWM (mruddy) +- #13381 Add possibility to preserve labels on importprivkey (marcoagner) +- #14530 Use `RPCHelpMan` to generate RPC doc strings (MarcoFalke) +- #14720 Correctly name RPC arguments (MarcoFalke) +- #14726 Use `RPCHelpMan` for all RPCs (MarcoFalke) +- #14796 Pass argument descriptions to `RPCHelpMan` (MarcoFalke) +- #14670 http: Fix HTTP server shutdown (promag) +- #14885 Assert that named arguments are unique in `RPCHelpMan` (promag) +- #14877 Document default values for optional arguments (MarcoFalke) +- #14875 RPCHelpMan: Support required arguments after optional ones (MarcoFalke) +- #14993 Fix data race (UB) in InterruptRPC() (practicalswift) +- #14653 rpcwallet: Add missing transaction categories to RPC helptexts (andrewtoth) +- #14981 Clarify RPC `getrawtransaction`'s time help text (benthecarman) +- #12151 Remove `cs_main` lock from blockToJSON and blockheaderToJSON (promag) +- #15078 Document `bytessent_per_msg` and `bytesrecv_per_msg` (MarcoFalke) +- #15057 Correct `reconsiderblock `help text, add test (MarcoFalke) +- #12153 Avoid permanent `cs_main` lock in `getblockheader` (promag) +- #14982 Add `getrpcinfo` command (promag) +- #15122 Expand help text for `importmulti` changes (jnewbery) +- #15186 remove duplicate solvable field from `getaddressinfo` (fanquake) +- #15209 zmq: log outbound message high water mark when reusing socket (fanquake) +- #15177 rest: Improve tests and documention of /headers and /block (promag) +- #14353 rest: Add blockhash call, fetch blockhash by height (jonasschnelli) +- #15248 Compile on GCC4.8 (MarcoFalke) +- #14987 RPCHelpMan: Pass through Result and Examples (MarcoFalke) +- #15159 Remove lookup to UTXO set from GetTransaction (amitiuttarwar) +- #15245 remove deprecated mentions of signrawtransaction from fundraw help (instagibbs) +- #14667 Add `deriveaddresses` RPC util method (Sjors) +- #15357 Don't ignore `-maxtxfee` when wallet is disabled (JBaczuk) +- #15337 Fix for segfault if combinepsbt called with empty inputs (benthecarman) +- #14918 RPCHelpMan: Check default values are given at compile-time (MarcoFalke) +- #15383 mining: Omit uninitialized currentblockweight, currentblocktx (MarcoFalke) +- #13932 Additional utility RPCs for PSBT (achow101) +- #15401 Actually throw help when passed invalid number of params (MarcoFalke) +- #15471 rpc/gui: Remove 'Unknown block versions being mined' warning (laanwj) +- #15497 Consistent range arguments in scantxoutset/importmulti/deriveaddresses (sipa) +- #15510 deriveaddresses: add range to CRPCConvertParam (Sjors) +- #15582 Fix overflow bug in analyzepsbt fee: CAmount instead of int (sipa) +- #13424 Consistently validate txid / blockhash length and encoding in rpc calls (Empact) +- #15750 Remove the addresses field from the getaddressinfo return object (jnewbery) +- #15991 Bugfix: fix pruneblockchain returned prune height (jonasschnelli) +- #15899 Document iswitness flag and fix bug in converttopsbt (MarcoFalke) +- #16026 Ensure that uncompressed public keys in a multisig always returns a legacy address (achow101) +- #14039 Disallow extended encoding for non-witness transactions (sipa) +- #16210 add 2nd arg to signrawtransactionwithkey examples (dooglus) +- #16250 signrawtransactionwithkey: report error when missing redeemScript/witnessScript (ajtowns) ### GUI -- #12416 `c997f88` Fix Windows build errors introduced in #10498 (practicalswift) -- #11733 `e782099` Remove redundant locks (practicalswift) -- #12426 `bfa3911` Initialize members in WalletModel (MarcoFalke) -- #12489 `e117cfe` Bugfix: respect user defined configuration file (-conf) in QT settings (jonasschnelli) -- #12421 `be263fa` navigate to transaction history page after send (Sjors) -- #12580 `ce56fdd` Show a transaction's virtual size in its details dialog (dooglus) -- #12501 `c8ea91a` Improved "custom fee" explanation in tooltip (randolf) -- #12616 `cff95a6` Set modal overlay hide button as default (promag) -- #12620 `8a43bdc` Remove TransactionTableModel::TxIDRole (promag) -- #12080 `56cc022` Add support to search the address book (promag) -- #12621 `2bac3e4` Avoid querying unnecessary model data when filtering transactions (promag) -- #12721 `e476826` remove "new" button during receive-mode in addressbook (jonasschnelli) -- #12723 `310dc61` Qt5: Warning users about invalid-BIP21 URI bitcoin:// (krab) -- #12610 `25cf18f` Multiwallet for the GUI (jonasschnelli) -- #12779 `f4353da` Remove unused method setupAmountWidget(…) (practicalswift) -- #12795 `68484d6` do not truncate .dat extension for wallets in gui (instagibbs) -- #12870 `1d54004` make clean removes `src/qt/moc_` files (Sjors) -- #13055 `bdda14d` Don't log to console by default (laanwj) -- #13141 `57c57df` fixes broken link on readme (marcoagner) -- #12928 `ef006d9` Initialize non-static class members that were previously neither initialized where defined nor in constructor (practicalswift) -- #13158 `81c533c` Improve sendcoinsdialog readability (marcoagner) -- #11491 `40c34a0` Add proxy icon in statusbar (mess110) -- #13264 `2a7c53b` Satoshi unit (GreatSock) -- #13097 `e545503` Support wallets loaded dynamically (promag) -- #13284 `f8be434` fix visual "overflow" of amount input (brandonrninefive) -- #13275 `a315b79` use `[default wallet]` as name for wallet with no name (jonasschnelli) -- #13273 `3fd0c23` Qt/Bugfix: fix handling default wallet with no name (jonasschnelli) -- #13341 `25d2df2` Stop translating command line options (laanwj) -- #13043 `6e249e4` OptionsDialog: add prune setting (Sjors) -- #13506 `6579d80` load wallet in UI after possible init aborts (jonasschnelli) -- #13458 `dc53f7f` Drop qt4 support (laanwj) -- #13528 `b877c39` Move BitcoinGUI initializers to class, fix initializer order warning (laanwj) -- #13536 `baf3a3a` coincontrol: Remove unused qt4 workaround (MarcoFalke) -- #13537 `10ffca7` Peer table: Visualize inbound/outbound state for every row (wodry) -- #13791 `2c14c1f` Reject dialogs if key escape is pressed (promag) -- #14403 `0242b5a` Revert "Force TLS1.0+ for SSL connections" (real-or-random) -- #14593 `df5131b` Explicitly disable "Dark Mode" appearance on macOS (fanquake) +- #13634 Compile `boost::signals2` only once (MarcoFalke) +- #13248 Make proxy icon from statusbar clickable (mess110) +- #12818 TransactionView: highlight replacement tx after fee bump (Sjors) +- #13529 Use new Qt5 connect syntax (promag) +- #14162 Also log and print messages or questions like bitcoind (MarcoFalke) +- #14385 Avoid system harfbuzz and bz2 (theuni) +- #14450 Fix QCompleter popup regression (hebasto) +- #14177 Set C locale for amountWidget (hebasto) +- #14374 Add `Blocksdir` to Debug window (hebasto) +- #14554 Remove unused `adjustedTime` parameter (hebasto) +- #14228 Enable system tray icon by default if available (hebasto) +- #14608 Remove the "Pay only required fee…" checkbox (hebasto) +- #14521 qt, docs: Fix `bitcoin-qt -version` output formatting (hebasto) +- #13966 When private key is disabled, only show watch-only balance (ken2812221) +- #14828 Remove hidden columns in coin control dialog (promag) +- #14783 Fix `boost::signals2::no_slots_error` in early calls to InitWarning (promag) +- #14854 Cleanup SplashScreen class (hebasto) +- #14801 Use window() instead of obsolete topLevelWidget() (hebasto) +- #14573 Add Window menu (promag) +- #14979 Restore < Qt5.6 compatibility for addAction (jonasschnelli) +- #14975 Refactoring with QString::toNSString() (hebasto) +- #15000 Fix broken notificator on GNOME (hebasto) +- #14375 Correct misleading "overridden options" label (hebasto) +- #15007 Notificator class refactoring (hebasto) +- #14784 Use `WalletModel*` instead of the wallet name as map key (promag) +- #11625 Add BitcoinApplication & RPCConsole tests (ryanofsky) +- #14517 Fix start with the `-min` option (hebasto) +- #13216 implements concept for different disk sizes on intro (marcoagner) +- #15114 Replace remaining 0 with nullptr (Empact) +- #14594 Fix minimized window bug on Linux (hebasto) +- #14556 Fix confirmed transaction labeled "open" (#13299) (hebasto) +- #15149 Show current wallet name in window title (promag) +- #15136 "Peers" tab overhaul (hebasto) +- #14250 Remove redundant stopThread() and stopExecutor() signals (hebasto) +- #15040 Add workaround for QProgressDialog bug on macOS (hebasto) +- #15101 Add WalletController (promag) +- #15178 Improve "help-console" message (hebasto) +- #15210 Fix window title update (promag) +- #15167 Fix wallet selector size adjustment (hebasto) +- #15208 Remove macOS launch-at-startup when compiled with > macOS 10.11, fix memory mismanagement (jonasschnelli) +- #15163 Correct units for "-dbcache" and "-prune" (hebasto) +- #15225 Change the receive button to respond to keypool state changing (achow101) +- #15280 Fix shutdown order (promag) +- #15203 Fix issue #9683 "gui, wallet: random abort (segmentation fault) (dooglus) +- #15091 Fix model overlay header sync (jonasschnelli) +- #15153 Add Open Wallet menu (promag) +- #15183 Fix `m_assumed_blockchain_size` variable value (marcoagner) +- #15063 If BIP70 is disabled, attempt to fall back to BIP21 parsing (luke-jr) +- #15195 Add Close Wallet action (promag) +- #15462 Fix async open wallet call order (promag) +- #15801 Bugfix: GUI: Options: Initialise prune setting range before loading current value, and remove upper bound limit (luke-jr) +- #16044 fix the bug of OPEN CONFIGURATION FILE on Mac (shannon1916) +- #15957 Show "No wallets available" in open menu instead of nothing (meshcollider) +- #16118 Enable open wallet menu on setWalletController (promag) +- #16135 Set progressDialog to nullptr (promag) +- #16231 Fix open wallet menu initialization order (promag) +- #16254 Set `AA_EnableHighDpiScaling` attribute early (hebasto) +- #16122 Enable console line edit on setClientModel (promag) +- #16348 Assert QMetaObject::invokeMethod result (promag) ### Build system -- #12371 `c9ca4f6` Add gitian PGP key: akx20000 (ghost) -- #11966 `f4f4f51` clientversion: Use full commit hash for commit-based version descriptions (luke-jr) -- #12417 `ae0fbf0` Upgrade `mac_alias` to 2.0.7 (droark) -- #12444 `1f055ef` gitian: Bump descriptors for (0.)17 (theuni) -- #12402 `59e032b` expat 2.2.5, ccache 3.4.1, miniupnpc 2.0.20180203 (fanquake) -- #12029 `daa84b3` Add a makefile target for Doxygen documentation (Ov3rlo4d) -- #12466 `6645eaf` Only use `D_DARWIN_C_SOURCE` when building miniupnpc on darwin (fanquake) -- #11986 `765a3eb` zeromq 4.2.3 (fanquake) -- #12373 `f13d756` Add build support for profiling (murrayn) -- #12631 `a312e20` gitian: Alphabetize signing keys & add kallewoof key (kallewoof) -- #12607 `29fad97` Remove ccache (fanquake) -- #12625 `c4219ff` biplist 1.0.3 (fanquake) -- #12666 `05042d3` configure: UniValue 1.0.4 is required for pushKV(, bool) (luke-jr) -- #12678 `6324c68` Fix a few compilation issues with Clang 7 and -Werror (vasild) -- #12692 `de6bdfd` Add configure options for various -fsanitize flags (eklitzke) -- #12901 `7e23972` Show enabled sanitizers in configure output (practicalswift) -- #12899 `3076993` macOS: Prevent Xcode 9.3 build warnings (AkioNak) -- #12715 `8fd6243` Add 'make clean' rule (hkjn) -- #13133 `a024a18` Remove python2 from configure.ac (ken2812221) -- #13005 `cb088b1` Make --enable-debug to pick better options (practicalswift) -- #13254 `092b366` Remove improper `qt/moc_*` cleaning glob from the general Makefile (Empact) -- #13306 `f5a7733` split warnings out of CXXFLAGS (theuni) -- #13385 `7c7508c` Guard against accidental introduction of new Boost dependencies (practicalswift) -- #13041 `5779dc4` Add linter checking for accidental introduction of locale dependence (practicalswift) -- #13408 `70a03c6` crypto: cleanup sha256 build (theuni) -- #13435 `cf7ca60` When build fails due to lib missing, indicate which one (Empact) -- #13445 `8eb76f3` Reset default -g -O2 flags when enable debug (ken2812221) -- #13465 `81069a7` Avoid concurrency issue when make multiple target (ken2812221) -- #13454 `45c00f8` Make sure `LC_ALL=C` is set in all shell scripts (practicalswift) -- #13480 `31145a3` Avoid copies in range-for loops and add a warning to detect them (theuni) -- #13486 `66e1a08` Move rpc/util.cpp from libbitcoin-util to libbitcoin-server (ken2812221) -- #13580 `40334c7` Detect if char equals `int8_t` (ken2812221) -- #12788 `287e4ed` Tune wildcards for LIBSECP256K1 target (kallewoof) -- #13611 `b55f0c3` bugfix: Use `__cpuid_count` for gnu C to avoid gitian build fail (ken2812221) -- #12971 `a6d14b1` Upgrade Qt to 5.9.6 (TheCharlatan) -- #13543 `6c6a300` Add RISC-V support (laanwj) -- #13177 `dcb154e` GCC-7 and glibc-2.27 back compat code (ken2812221) -- #13659 `90b1c7e` add missing leveldb defines (theuni) -- #13368 `c0f1569` Update gitian-build.sh for docker (achow101) -- #13171 `19d8ca5` Change gitian-descriptors to use bionic instead (ken2812221) -- #13604 `75bea05` Add depends 32-bit arm support for bitcoin-qt (TheCharlatan) -- #13623 `9cdb19f` Migrate gitian-build.sh to python (ken2812221) -- #13689 `8c36432` disable Werror when building zmq (greenaddress) -- #13617 `cf7f9ae` release: Require macos 10.10+ (fanquake) -- #13750 `c883653` use MacOS friendly sed syntax in qt.mk (Sjors) -- #13095 `415f2bf` update `ax_boost_chrono`/`unit_test_framework` (fanquake) -- #13732 `e8ffec6` Fix Qt's rcc determinism (Fuzzbawls) -- #13782 `8284f1d` Fix osslsigncode compile issue in gitian-build (ken2812221) -- #13696 `2ab7208` Add aarch64 qt depends support for cross compiling bitcoin-qt (TheCharlatan) -- #13705 `b413ba0` Add format string linter (practicalswift) -- #14000 `48c8459` fix qt determinism (theuni) -- #14018 `3e4829a` Bugfix: NSIS: Exclude `Makefile*` from docs (luke-jr) -- #12906 `048ac83` Avoid `interface` keyword to fix windows gitian build (ryanofsky) -- #13314 `a9b6957` Fix FreeBSD build by including utilstrencodings.h (laanwj) -- #14416 `eb2cc84` Fix OSX dmg issue (10.12 to 10.14) (jonasschnelli) -- #14647 `7edebed` Remove illegal spacing in darwin.mk (ch4ot1c) -- #14698 `ec71f06` Add bitcoin-tx.exe into Windows installer (ken2812221) +- #13955 gitian: Bump descriptors for (0.)18 (fanquake) +- #13899 Enable -Wredundant-decls where available. Remove redundant redeclarations (practicalswift) +- #13665 Add RISC-V support to gitian (ken2812221) +- #14062 Generate MSVC project files via python script (ken2812221) +- #14037 Add README.md to linux release tarballs (hebasto) +- #14183 Remove unused Qt 4 dependencies (ken2812221) +- #14127 Avoid getifaddrs when unavailable (greenaddress) +- #14184 Scripts and tools: increased timeout downloading (cisba) +- #14204 Move `interfaces/*` to `libbitcoin_server` (laanwj) +- #14208 Actually remove `ENABLE_WALLET` (jnewbery) +- #14212 Remove libssl from LDADD unless GUI (MarcoFalke) +- #13578 Upgrade zeromq to 4.2.5 and avoid deprecated zeromq API functions (mruddy) +- #14281 lcov: filter /usr/lib/ from coverage reports (MarcoFalke) +- #14325 gitian: Use versioned unsigned tarballs instead of generically named ones (achow101) +- #14253 During 'make clean', remove some files that are currently missed (murrayn) +- #14455 Unbreak `make clean` (jamesob) +- #14495 Warn (don't fail!) on spelling errors (practicalswift) +- #14496 Pin to specific versions of Python packages we install from PyPI in Travis (practicalswift) +- #14568 Fix Qt link order for Windows build (ken2812221) +- #14252 Run functional tests and benchmarks under the undefined behaviour sanitizer (UBSan) (practicalswift) +- #14612 Include full version number in released file names (achow101) +- #14840 Remove duplicate libconsensus linking in test make (AmirAbrams) +- #14564 Adjust configure so that only BIP70 is disabled when protobuf is missing instead of the GUI (jameshilliard) +- #14883 Add `--retry 5` to curl opts in `install_db4.sh` (qubenix) +- #14701 Add `CLIENT_VERSION_BUILD` to CFBundleGetInfoString (fanquake) +- #14849 Qt 5.9.7 (fanquake) +- #15020 Add names to Travis jobs (gkrizek) +- #15047 Allow to configure --with-sanitizers=fuzzer (MarcoFalke) +- #15154 Configure: bitcoin-tx doesn't need libevent, so don't pull it in (luke-jr) +- #15175 Drop macports support (Empact) +- #15308 Restore compatibility with older boost (Empact) +- #15407 msvc: Fix silent merge conflict between #13926 and #14372 part II (ken2812221) +- #15388 Makefile.am: add rule for src/bitcoin-wallet (Sjors) +- #15393 Bump minimum Qt version to 5.5.1 (Sjors) +- #15285 Prefer Python 3.4 even if newer versions are present on the system (Sjors) +- #15398 msvc: Add rapidcheck property tests (ken2812221) +- #15431 msvc: scripted-diff: Remove NDEBUG pre-define in project file (ken2812221) +- #15549 gitian: Improve error handling (laanwj) +- #15548 use full version string in setup.exe (MarcoFalke) +- #11526 Visual Studio build configuration for Bitcoin Core (sipsorcery) +- #15110 build\_msvc: Fix the build problem in `libbitcoin_server` (Mr-Leshiy) +- #14372 msvc: build secp256k1 and leveldb locally (ken2812221) +- #15325 msvc: Fix silent merge conflict between #13926 and #14372 (ken2812221) +- #15391 Add compile time verification of assumptions we're currently making implicitly/tacitly (practicalswift) +- #15503 msvc: Use a single file to specify the include path (ken2812221) +- #13765 contrib: Add gitian build support for github pull request (ken2812221) +- #15809 gitignore: plist and dat (jamesob) +- #15985 Add test for GCC bug 90348 (sipa) +- #15947 Install bitcoin-wallet manpage (domob1812) +- #15983 build with -fstack-reuse=none (MarcoFalke) ### Tests and QA -- #12252 `8d57319` Require all tests to follow naming convention (ajtowns) -- #12295 `935eb8d` Enable flake8 warnings for all currently non-violated rules (practicalswift) -- #11858 `b4d8549` Prepare tests for Windows (MarcoFalke) -- #11771 `2dbc4a4` Change invalidtxrequest to use BitcoinTestFramework (jnewbery) -- #12200 `d09968f` Bind functional test nodes to 127.0.0.1 (Sjors) -- #12425 `26dc2da` Add some script tests (richardkiss) -- #12455 `23481fa` Fix bip68 sequence test to reflect updated rpc error message (Empact) -- #12477 `acd1e61` Plug memory leaks and stack-use-after-scope (MarcoFalke) -- #12443 `07090c5` Move common args to bitcoin.conf (MarcoFalke) -- #12570 `39dcac2` Add test cases for HexStr (`std::reverse_iterator` and corner cases) (kostaz) -- #12582 `6012f1c` Fix ListCoins test failure due to unset `g_wallet_allow_fallback_fee` (ryanofsky) -- #12516 `7f99964` Avoid unintentional unsigned integer wraparounds in tests (practicalswift) -- #12512 `955fd23` Don't test against the mempool min fee information in mempool_limit.py (Empact) -- #12600 `29088b1` Add a test for large tx output scripts with segwit input (richardkiss) -- #12627 `791c3ea` Fix some tests to work on native windows (MarcoFalke) -- #12405 `0f58d7f` travis: Full clone for git subtree check (MarcoFalke) -- #11772 `0630974` Change invalidblockrequest to use BitcoinTestFramework (jnewbery) -- #12681 `1846296` Fix ComputeTimeSmart test failure with `-DDEBUG_LOCKORDER` (ryanofsky) -- #12682 `9f04c8e` travis: Clone depth 1 unless `$check_doc` (MarcoFalke) -- #12710 `00d1680` Append scripts to new `test_list` array to fix bad assignment (jeffrade) -- #12720 `872c921` Avoiding 'file' function name from python2 (jeffrade) -- #12728 `4ba3d4f` rename TestNode to TestP2PConn in tests (jnewbery) -- #12746 `2405ce1` Remove unused argument `max_invalid` from `check_estimates(…)` (practicalswift) -- #12718 `185d484` Require exact match in `assert_start_raises_init_eror` (jnewbery, MarcoFalke) -- #12076 `6d36f59` Use node.datadir instead of tmpdir in test framework (MarcoFalke) -- #12772 `b43aba8` ci: Bump travis timeout for make check to 50m (jnewbery) -- #12806 `18606eb` Fix function names in `feature_blocksdir` (MarcoFalke) -- #12811 `0d8fc8d` Make summary row bold-red if any test failed and show failed tests at end of table (laanwj) -- #12790 `490644d` Use blockmaxweight where tests previously had blockmaxsize (conscott) -- #11773 `f0f9732` Change `feature_block.py` to use BitcoinTestFramework (jnewbery) -- #12839 `40f4baf` Remove travis checkout depth (laanwj) -- #11817 `2a09a78` Change `feature_csv_activation.py` to use BitcoinTestFramework (jnewbery) -- #12284 `fa5825d` Remove assigned but never used local variables. Enable Travis checking for unused local variables (practicalswift) -- #12719 `9beded5` Add note about test suite naming convention in developer-notes.md (practicalswift) -- #12861 `c564424` Stop `feature_block.py` from blowing up memory (jnewbery) -- #12851 `648252e` travis: Run verify-commits only on cron jobs (MarcoFalke) -- #12853 `2106c4c` Match full plain text by default (MarcoFalke) -- #11818 `9a2db3b` I accidentally (deliberately) killed it (the ComparisonTestFramework) (jnewbery) -- #12766 `69310a3` Tidy up REST interface functional tests (romanz) -- #12849 `83c7533` Add logging in loops in `p2p_sendhears.py` (ccdle12) -- #12895 `d6f10b2` Add note about test suite name uniqueness requirement to developer notes (practicalswift) -- #12856 `27278df` Add Metaclass for BitcoinTestFramework (WillAyd) -- #12918 `6fc5a05` Assert on correct variable (kallewoof) -- #11878 `a04440f` Add Travis check for duplicate includes (practicalswift) -- #12917 `cf8073f` Windows fixups for functional tests (MarcoFalke) -- #12926 `dd1ca9e` Run unit tests in parallel (sipa) -- #12920 `b1fdfc1` Fix sign for expected values (kallewoof) -- #12947 `979f598` Wallet hd functional test speedup and clarification (instagibbs) -- #12993 `0d69921` Remove compatibility code not needed now when we're on Python 3 (practicalswift) -- #12996 `6a278e0` Remove redundant bytes(…) calls (practicalswift) -- #12949 `6b46288` Avoid copies of CTransaction (MarcoFalke) -- #13007 `0d12570` Fix dangling wallet pointer in vpwallets (promag) -- #13048 `cac6d11` Fix `feature_block` flakiness (jnewbery) -- #12510 `d5b2e98` Add `rpc_bind` test to default-run tests (laanwj) -- #13022 `896a9d0` Attach node index to `test_node` AssertionError and print messages (jamesob) -- #13024 `018c7e5` Add rpcauth pair that generated by rpcauth.py (ken2812221) -- #13013 `a0079d4` bench: Amend `mempool_eviction` test for witness txs (MarcoFalke) -- #13051 `e074097` Normalize executable location (MarcoFalke) -- #13056 `106d929` Make rpcauth.py testable and add unit tests (nixbox) -- #13073 `a785bc3` add rpcauth-test to `AC_CONFIG_LINKS` to fix out-of-tree make check (laanwj) -- #12830 `25ad2f7` Clarify address book error messages, add tests (jamesob) -- #13082 `24106a8` don't test against min relay fee information in `mining_prioritisetransaction.py` (kristapsk) -- #13003 `8d045a0` Add test for orphan handling (MarcoFalke) -- #13105 `9e9b48d` Add --failfast option to functional test runner (jamesob) -- #13130 `3186ad4` Fix race in `rpc_deprecated.py` (jnewbery) -- #13136 `baf6b4e` Fix flake8 warnings in several wallet functional tests (jnewbery) -- #13094 `bf9b03d` Add test for 64-bit Windows PE, modify 32-bit test results (ken2812221) -- #13183 `9458b05` travis: New travis job for `check_docs` steps (glaksmono) -- #12265 `1834d4d` fundrawtransaction: lock watch-only shared address (kallewoof) -- #13188 `4a50ec0` Remove unused option --srcdir (MarcoFalke) -- #12755 `612ba35` Better stderr testing (jnewbery) -- #13198 `196c5a9` Avoid printing to console during cache creation (sdaftuar) -- #13075 `cb9bbf7` Remove 'account' API from wallet functional tests (jnewbery) -- #13221 `ffa86af` travis: Rename the build stage `check_doc` to `lint` (practicalswift) -- #13205 `3cbd25f` Remove spurious error log in `p2p_segwit.py` (jnewbery) -- #13291 `536120e` Don't include torcontrol.cpp into the test file (Empact) -- #13281 `2ac6315` Move linters to test/lint, add readme (MarcoFalke) -- #13215 `f8a29ca` travis: Build tests on ubuntu 18.04 with docker (ken2812221) -- #13349 `24f7011` bench: Don't return a bool from main (laanwj) -- #13347 `87a9d03` travis: Skip cache for lint stage (MarcoFalke) -- #13355 `0b1c0c4` Fix "gmake check" under OpenBSD 6.3 (probably `*BSD`): Avoid using GNU grep specific regexp handling (practicalswift) -- #13353 `d4f6dac` Fixup setting of PATH env var (MarcoFalke) -- #13352 `e24bf1c` Avoid checking reject code for now (MarcoFalke) -- #13383 `2722a1f` bench: Use non-throwing parsedouble(…) instead of throwing boost::lexical_cast(…) (practicalswift) -- #13367 `264efdc` Increase includeconf test coverage (MarcoFalke) -- #13404 `3d3d8ae` speed up of `tx_validationcache_tests` by reusing of CTransaction (lucash-dev) -- #13421 `531a033` Remove `portseed_offset` from test runner (MarcoFalke) -- #13440 `5315660` Log as utf-8 (MarcoFalke) -- #13066 `fa4b906` Migrate verify-commits script to python, run in travis (ken2812221) -- #13447 `4b1edd3` travis: Increase `travis_wait` time while verifying commits (ken2812221) -- #13350 `f532d52` Add logging to provide anchor points when debugging p2p_sendheaders (lmanners) -- #13406 `4382f19` travis: Change mac goal to all deploy (ken2812221) -- #13457 `b222138` Drop variadic macro (MarcoFalke) -- #13512 `3a45493` mininode: Expose connection state through `is_connected` (MarcoFalke) -- #13496 `9ab4c2a` Harden lint-filenames.sh (wodry) -- #13219 `08516e0` bench: Add block assemble benchmark (MarcoFalke) -- #13530 `b1dc39d` bench: Add missing pow.h header (laanwj) -- #12686 `2643fa5` Add -ftrapv to CFLAGS and CXXFLAGS when --enable-debug is used. Enable -ftrapv in Travis (practicalswift) -- #12882 `d96bdd7` Make `test_bitcoin` pass under ThreadSanitzer (clang). Fix lock-order-inversion (potential deadlock) (practicalswift) -- #13535 `2328039` `wallet_basic`: Specify minimum required amount for listunspent (MarcoFalke) -- #13551 `c93c360` Fix incorrect documentation for test case `cuckoocache_hit_rate_ok` (practicalswift) -- #13563 `b330f3f` bench: Simplify coinselection (promag) -- #13517 `a6ed99a` Remove need to handle the network thread in tests (MarcoFalke) -- #13522 `686e97a` Fix `p2p_sendheaders` race (jnewbery) -- #13467 `3dc2dcf` Make `p2p_segwit` easier to debug (jnewbery) -- #13598 `0212187` bench: Fix incorrect behaviour in prevector.cpp (AkioNak) -- #13565 `b05ded1` Fix AreInputsStandard test to reference the proper scriptPubKey (Empact) -- #13145 `d3dae3d` Use common getPath method to create temp directory in tests (winder) -- #13645 `2ea7eb6` skip `rpc_zmq` functional test as necessary (jamesob) -- #13626 `8f1106d` Fix some TODOs in `p2p_segwit` (MarcoFalke) -- #13138 `8803c91` Remove accounts from `wallet_importprunedfunds.py` (jnewbery) -- #13663 `cbc9b50` Avoid read/write to default datadir (MarcoFalke) -- #13682 `f8a32a3` bench: Remove unused variable (practicalswift) -- #13638 `6fcdb5e` Use `MAX_SCRIPT_ELEMENT_SIZE` from script.py (domob1812) -- #13687 `9d26b69` travis: Check that ~/.bitcoin is never created (MarcoFalke) -- #13715 `e1260a7` fixes mininode's P2PConnection sending messages on closing transport (marcoagner) -- #13729 `aa9429a` travis: Avoid unnecessarily setting env variables on the lint build (Empact) -- #13747 `ab28b5b` Skip P2PConnection's `is_closing()` check when not available (domob1812) -- #13650 `7a9bca6` travis: Don't store debug info if --enable-debug is set (ken2812221) -- #13711 `f98d1e0` bench: Add benchmark for unserialize prevector (AkioNak) -- #13771 `365384f` travis: Retry to fetch docker image (MarcoFalke) -- #13806 `4d550ff` Fix `bench/block_assemble` assert failure (jamesob) -- #13779 `d25079a` travis: Improve readability of travis.yml and log outputs (scravy) -- #13822 `0fb9c87` bench: Make coinselection output groups pass eligibility filter (achow101) -- #13247 `e83d82a` Add tests to SingleThreadedSchedulerClient() and document the memory model (skeees) -- #13811 `660abc1` travis: Run `bench_bitcoin` once (MarcoFalke) -- #13837 `990e182` Extract `rpc_timewait` as test param (MarcoFalke) -- #13851 `9c4324d` fix locale for lint-shell (scravy) -- #13823 `489b51b` quote path in authproxy for external multiwallets (MarcoFalke) -- #13849 `2b67354` travis: Use only travis jobs: instead of mix of jobs+matrix (scravy) -- #13859 `2384323` Add emojis to `test_runner` path and wallet filename (MarcoFalke) -- #13916 `8ac7125` `wait_for_verack` by default (MarcoFalke) -- #13669 `f66e1c7` Cleanup `create_transaction` implementations (conscott) -- #13924 `09ada21` Simplify comparison in `rpc_blockchain.py` (domob1812) -- #13913 `a08533c` Remove redundant checkmempool/checkblockindex `extra_args` (MarcoFalke) -- #13915 `a04888a` Add test for max number of entries in locator (MarcoFalke) -- #13867 `1b04b55` Make extended tests pass on native Windows (MarcoFalke) -- #13944 `0df7a6c` Port usage of deprecated optparse module to argparse module (Kvaciral) -- #13928 `b8eb0df` blocktools enforce named args for amount (MarcoFalke) -- #13054 `bffb35f` Enable automatic detection of undefined names in Python tests scripts. Remove wildcard imports (practicalswift) -- #14069 `cf3d7f9` Use assert not `BOOST_CHECK_*` from multithreaded tests (skeees) -- #14071 `fab0fbe` Stop txindex thread before calling destructor (MarcoFalke) -- #13965 `29899ec` Fix extended functional tests fail (ken2812221) -- #14011 `9461f98` Disable wallet and address book Qt tests on macOS minimal platform (ryanofsky) -- #14180 `86fadee` Run all tests even if wallet is not compiled (MarcoFalke) -- #14122 `8bc1bad` Test `rpc_help.py` failed: Check whether ZMQ is enabled or not (Kvaciral) -- #14101 `96dc936` Use named args in validation acceptance tests (MarcoFalke) -- #14020 `24d796a` Add tests for RPC help (promag) -- #14052 `7ff32a6` Add some actual witness in `rpc_rawtransaction` (MarcoFalke) -- #14215 `b72fbab` Use correct python index slices in example test (sdaftuar) -- #14024 `06544fa` Add `TestNode::assert_debug_log` (MarcoFalke) -- #14658 `60f7a97` Add test to ensure node can generate all rpc help texts at runtime (MarcoFalke) -- #14632 `96f15e8` Fix a comment (fridokus) -- #14700 `f9db08e` Avoid race in `p2p_invalid_block` by waiting for the block request (MarcoFalke) -- #14845 `67225e2` Add `wallet_balance.py` (jnewbery) +- #15405 appveyor: Clean cache when build configuration changes (Sjors) +- #13953 Fix deprecation in bitcoin-util-test.py (isghe) +- #13963 Replace usage of tostring() with tobytes() (dongcarl) +- #13964 ci: Add appveyor ci (ken2812221) +- #13997 appveyor: fetch the latest port data (ken2812221) +- #13707 Add usage note to check-rpc-mappings.py (masonicboom) +- #14036 travis: Run unit tests --with-sanitizers=undefined (MarcoFalke) +- #13861 Add testing of `value_ret` for SelectCoinsBnB (Empact) +- #13863 travis: Move script sections to files in `.travis/` subject to shellcheck (scravy) +- #14081 travis: Fix missing differentiation between unit and functional tests (scravy) +- #14042 travis: Add cxxflags=-wno-psabi at arm job (ken2812221) +- #14051 Make `combine_logs.py` handle multi-line logs (jnewbery) +- #14093 Fix accidental trunction from int to bool (practicalswift) +- #14108 Add missing locking annotations and locks (`g_cs_orphans`) (practicalswift) +- #14088 Don't assert(…) with side effects (practicalswift) +- #14086 appveyor: Use clcache to speed up build (ken2812221) +- #13954 Warn (don't fail!) on spelling errors. Fix typos reported by codespell (practicalswift) +- #12775 Integration of property based testing into Bitcoin Core (Christewart) +- #14119 Read reject reasons from debug log, not P2P messages (MarcoFalke) +- #14189 Fix silent merge conflict in `wallet_importmulti` (MarcoFalke) +- #13419 Speed up `knapsack_solver_test` by not recreating wallet 100 times (lucash-dev) +- #14199 Remove redundant BIP174 test from `rpc_psbt.json` (araspitzu) +- #14179 Fixups to "Run all tests even if wallet is not compiled" (MarcoFalke) +- #14225 Reorder tests and move most of extended tests up to normal tests (ken2812221) +- #14236 `generate` --> `generatetoaddress` change to allow tests run without wallet (sanket1729) +- #14287 Use MakeUnique to construct objects owned by `unique_ptrs` (practicalswift) +- #14007 Run functional test on Windows and enable it on Appveyor (ken2812221) +- #14275 Write the notification message to different files to avoid race condition in `feature_notifications.py` (ken2812221) +- #14306 appveyor: Move AppVeyor YAML to dot-file-style YAML (MitchellCash) +- #14305 Enforce critical class instance attributes in functional tests, fix segwit test specificity (JustinTArthur) +- #12246 Bugfix: Only run bitcoin-tx tests when bitcoin-tx is enabled (luke-jr) +- #14316 Exclude all tests with difference parameters in `--exclude` list (ken2812221) +- #14381 Add missing call to `skip_if_no_cli()` (practicalswift) +- #14389 travis: Set codespell version to avoid breakage (MarcoFalke) +- #14398 Don't access out of bounds array index: array[sizeof(array)] (Empact) +- #14419 Remove `rpc_zmq.py` (jnewbery) +- #14241 appveyor: Script improvement (ken2812221) +- #14413 Allow closed RPC handler in `assert_start_raises_init_error` (ken2812221) +- #14324 Run more tests with wallet disabled (MarcoFalke) +- #13649 Allow arguments to be forwarded to flake8 in lint-python.sh (jamesob) +- #14465 Stop node before removing the notification file (ken2812221) +- #14460 Improve 'CAmount' tests (hebasto) +- #14456 forward timeouts properly in `send_blocks_and_test` (jamesob) +- #14527 Revert "Make qt wallet test compatible with qt4" (MarcoFalke) +- #14504 Show the progress of functional tests (isghe) +- #14559 appveyor: Enable multiwallet tests (ken2812221) +- #13515 travis: Enable qt for all jobs (ken2812221) +- #14571 Test that nodes respond to `getdata` with `notfound` (MarcoFalke) +- #14569 Print dots by default in functional tests (ken2812221) +- #14631 Move deterministic address import to `setup_nodes` (jnewbery) +- #14630 test: Remove travis specific code (MarcoFalke) +- #14528 travis: Compile once on xenial (MarcoFalke) +- #14092 Dry run `bench_bitcoin` as part `make check` to allow for quick identification of assertion/sanitizer failures in benchmarking code (practicalswift) +- #14664 `example_test.py`: fixup coinbase height argument, derive number clearly (instagibbs) +- #14522 Add invalid P2P message tests (jamesob) +- #14619 Fix value display name in `test_runner` help text (merland) +- #14672 Send fewer spam messages in `p2p_invalid_messages` (jamesob) +- #14673 travis: Fail the ubsan travis build in case of newly introduced ubsan errors (practicalswift) +- #14665 appveyor: Script improvement part II (ken2812221) +- #14365 Add Python dead code linter (vulture) to Travis (practicalswift) +- #14693 `test_node`: `get_mem_rss` fixups (MarcoFalke) +- #14714 util.h: explicitly include required QString header (1Il1) +- #14705 travis: Avoid timeout on verify-commits check (MarcoFalke) +- #14770 travis: Do not specify sudo in `.travis` (scravy) +- #14719 Check specific reject reasons in `feature_block` (MarcoFalke) +- #14771 Add `BOOST_REQUIRE` to getters returning optional (MarcoFalke) +- #14777 Add regtest for JSON-RPC batch calls (domob1812) +- #14764 travis: Run thread sanitizer on unit tests (MarcoFalke) +- #14400 Add Benchmark to test input de-duplication worst case (JeremyRubin) +- #14812 Fix `p2p_invalid_messages` on macOS (jamesob) +- #14813 Add `wallet_encryption` error tests (MarcoFalke) +- #14820 Fix `descriptor_tests` not checking ToString output of public descriptors (ryanofsky) +- #14794 Add AddressSanitizer (ASan) Travis build (practicalswift) +- #14819 Bugfix: `test/functional/mempool_accept`: Ensure oversize transaction is actually oversize (luke-jr) +- #14822 bench: Destroy wallet txs instead of leaking their memory (MarcoFalke) +- #14683 Better `combine_logs.py` behavior (jamesob) +- #14231 travis: Save cache even when build or test fail (ken2812221) +- #14816 Add CScriptNum decode python implementation in functional suite (instagibbs) +- #14861 Modify `rpc_bind` to conform to #14532 behaviour (dongcarl) +- #14864 Run scripted-diff in subshell (dongcarl) +- #14795 Allow `test_runner` command line to receive parameters for each test (marcoagner) +- #14788 Possible fix the permission error when the tests open the cookie file (ken2812221) +- #14857 `wallet_keypool_topup.py`: Test for all keypool address types (instagibbs) +- #14886 Refactor importmulti tests (jnewbery) +- #14908 Removed implicit CTransaction constructor calls from tests and benchmarks (lucash-dev) +- #14903 Handle ImportError explicitly, improve comparisons against None (daniel-s-ingram) +- #14884 travis: Enforce python 3.4 support through linter (Sjors) +- #14940 Add test for truncated pushdata script (MarcoFalke) +- #14926 consensus: Check that final transactions are valid (MarcoFalke) +- #14937 travis: Fix travis would always be green even if it fail (ken2812221) +- #14953 Make `g_insecure_rand_ctx` `thread_local` (MarcoFalke) +- #14931 mempool: Verify prioritization is dumped correctly (MarcoFalke) +- #14935 Test for expected return values when calling functions returning a success code (practicalswift) +- #14969 Fix `cuckoocache_tests` TSAN failure introduced in 14935 (practicalswift) +- #14964 Fix race in `mempool_accept` (MarcoFalke) +- #14829 travis: Enable functional tests in the threadsanitizer (tsan) build job (practicalswift) +- #14985 Remove `thread_local` from `test_bitcoin` (MarcoFalke) +- #15005 Bump timeout to run tests in travis thread sanitizer (MarcoFalke) +- #15013 Avoid race in `p2p_timeouts` (MarcoFalke) +- #14960 lint/format-strings: Correctly exclude escaped percent symbols (luke-jr) +- #14930 pruning: Check that verifychain can be called when pruned (MarcoFalke) +- #15022 Upgrade Travis OS to Xenial (gkrizek) +- #14738 Fix running `wallet_listtransactions.py` individually through `test_runner.py` (kristapsk) +- #15026 Rename `rpc_timewait` to `rpc_timeout` (MarcoFalke) +- #15069 Fix `rpc_net.py` `pong` race condition (Empact) +- #14790 Allow running `rpc_bind.py` --nonloopback test without IPv6 (kristapsk) +- #14457 add invalid tx templates for use in functional tests (jamesob) +- #14855 Correct ineffectual WithOrVersion from `transactions_tests` (Empact) +- #15099 Use `std::vector` API for construction of test data (domob1812) +- #15102 Run `invalid_txs.InputMissing` test in `feature_block` (MarcoFalke) +- #15059 Add basic test for BIP34 (MarcoFalke) +- #15108 Tidy up `wallet_importmulti.py` (amitiuttarwar) +- #15164 Ignore shellcheck warning SC2236 (promag) +- #15170 refactor/lint: Add ignored shellcheck suggestions to an array (koalaman) +- #14958 Remove race between connecting and shutdown on separate connections (promag) +- #15166 Pin shellcheck version (practicalswift) +- #15196 Update all `subprocess.check_output` functions to be Python 3.4 compatible (gkrizek) +- #15043 Build fuzz targets into seperate executables (MarcoFalke) +- #15276 travis: Compile once on trusty (MarcoFalke) +- #15246 Add tests for invalid message headers (MarcoFalke) +- #15301 When testing with --usecli, unify RPC arg to cli arg conversion and handle dicts and lists (achow101) +- #15247 Use wallet to retrieve raw transactions (MarcoFalke) +- #15303 travis: Remove unused `functional_tests_config` (MarcoFalke) +- #15330 Fix race in `p2p_invalid_messages` (MarcoFalke) +- #15324 Make bloom tests deterministic (MarcoFalke) +- #15328 travis: Revert "run extended tests once daily" (MarcoFalke) +- #15327 Make test `updatecoins_simulation_test` deterministic (practicalswift) +- #14519 add utility to easily profile node performance with perf (jamesob) +- #15349 travis: Only exit early if compilation took longer than 30 min (MarcoFalke) +- #15350 Drop RPC connection if --usecli (promag) +- #15370 test: Remove unused --force option (MarcoFalke) +- #14543 minor `p2p_sendheaders` fix of height in coinbase (instagibbs) +- #13787 Test for Windows encoding issue (ken2812221) +- #15378 Added missing tests for RPC wallet errors (benthecarman) +- #15238 remove some magic mining constants in functional tests (instagibbs) +- #15411 travis: Combine --disable-bip70 into existing job (MarcoFalke) +- #15295 fuzz: Add `test/fuzz/test_runner.py` and run it in travis (MarcoFalke) +- #15413 Add missing `cs_main` locks required when accessing pcoinsdbview, pcoinsTip or pblocktree (practicalswift) +- #15399 fuzz: Script validation flags (MarcoFalke) +- #15410 txindex: interrupt threadGroup before calling destructor (MarcoFalke) +- #15397 Remove manual byte editing in `wallet_tx_clone` func test (instagibbs) +- #15415 functional: allow custom cwd, use tmpdir as default (Sjors) +- #15404 Remove `-txindex` to start nodes (amitiuttarwar) +- #15439 remove `byte.hex()` to keep compatibility (AkioNak) +- #15419 Always refresh cache to be out of ibd (MarcoFalke) +- #15507 Bump timeout on tests that timeout on windows (MarcoFalke) +- #15506 appveyor: fix cache issue and reduce dependencies build time (ken2812221) +- #15485 add `rpc_misc.py`, mv test getmemoryinfo, add test mallocinfo (adamjonas) +- #15321 Add `cs_main` lock annotations for mapBlockIndex (MarcoFalke) +- #14128 lint: Make sure we read the command line inputs using UTF-8 decoding in python (ken2812221) +- #14115 lint: Make all linters work under the default macos dev environment (build-osx.md) (practicalswift) +- #15219 lint: Enable python linters via an array (Empact) +- #15826 Pure python EC (sipa) +- #15893 Add test for superfluous witness record in deserialization (instagibbs) +- #14818 Bugfix: test/functional/rpc_psbt: Remove check for specific error message that depends on uncertain assumptions (luke-jr) +- #15831 Add test that addmultisigaddress fails for watchonly addresses (MarcoFalke) + +### Platform support +- #13866 utils: Use `_wfopen` and `_wfreopen` on windows (ken2812221) +- #13886 utils: Run commands using UTF-8 string on windows (ken2812221) +- #14192 utils: Convert `fs::filesystem_error` messages from local multibyte to UTF-8 on windows (ken2812221) +- #13877 utils: Make fs::path::string() always return UTF-8 string on windows (ken2812221) +- #13883 utils: Convert windows args to UTF-8 string (ken2812221) +- #13878 utils: Add fstream wrapper to allow to pass unicode filename on windows (ken2812221) +- #14426 utils: Fix broken windows filelock (ken2812221) +- #14686 Fix windows build error if `--disable-bip70` (ken2812221) +- #14922 windows: Set `_WIN32_WINNT` to 0x0601 (Windows 7) (ken2812221) +- #13888 Call unicode API on Windows (ken2812221) +- #15468 Use `fsbridge::ifstream` to fix Windows path issue (ken2812221) +- #13734 Drop `boost::scoped_array` and use `wchar_t` API explicitly on Windows (ken2812221) +- #13884 Enable bdb unicode support for Windows (ken2812221) ### Miscellaneous -- #11909 `8897135` contrib: Replace developer keys with list of pgp fingerprints (MarcoFalke) -- #12394 `fe53d5f` gitian-builder.sh: fix --setup doc, since lxc is default (Sjors) -- #12468 `294a766` Add missing newline in init.cpp log message (Aesti) -- #12308 `dcfe218` contrib: Add support for out-of-tree builds in gen-manpages.sh (laanwj) -- #12451 `aae64a2` Bump leveldb subtree (MarcoFalke) -- #12527 `d77b4a7` gitian-build.sh: fix signProg being recognized as two parameters (ken2812221) -- #12588 `d74b01d` utils: Remove deprecated pyzmq call from python zmq example (kosciej) -- #10271 `bc67982` Use `std::thread::hardware_concurrency`, instead of Boost, to determine available cores (fanquake) -- #12097 `14475e2` scripts: Lint-whitespace: use perl instead of grep -p (Sjors) -- #12098 `17c44b2` scripts: Lint-whitespace: add param to check last n commits (Sjors) -- #11900 `842f61a` script: Simplify checkminimalpush checks, add safety assert (instagibbs) -- #12567 `bb98aec` util: Print timestamp strings in logs using iso 8601 formatting (practicalswift) -- #12572 `d8d9162` script: Lint-whitespace: find errors more easily (AkioNak) -- #10694 `ae5bcc7` Remove redundant code in MutateTxSign(CMutableTransaction&, const std::string&) (practicalswift) -- #12659 `3d16f58` Improve Fatal LevelDB Log Messages (eklitzke) -- #12643 `0f0229d` util: Remove unused `sync_chain` (MarcoFalke) -- #12102 `7fb8fb4` Apply hardening measures in bitcoind systemd service file (Flowdalic) -- #12652 `55f490a` bitcoin-cli: Provide a better error message when bitcoind is not running (practicalswift) -- #12630 `c290508` Provide useful error message if datadir is not writable (murrayn) -- #11881 `624bee9` Remove Python2 support (jnewbery) -- #12821 `082e26c` contrib: Remove unused import string (MarcoFalke) -- #12829 `252c1b0` Python3 fixup (jnewbery) -- #12822 `ff48f62` Revert 7deba93bdc76616011a9f493cbc203d60084416f and fix expired-key-sigs properly (TheBlueMatt) -- #12820 `5e53b80` contrib: Fix check-doc script regexes (MarcoFalke) -- #12713 `4490871` Track negated options in the option parser (eklitzke) -- #12708 `b2e5fe8` Make verify-commits.sh test that merges are clean (sipa) -- #12891 `3190785` logging: Add lint-logs.sh to check for newline termination (jnewbery) -- #12923 `a7cbe38` util: Pass `pthread_self()` to `pthread_setschedparam` instead of 0 (laanwj) -- #12871 `fb17fae` Add shell script linting: Check for shellcheck warnings in shell scripts (practicalswift) -- #12970 `5df84de` logging: Bypass timestamp formatting when not logging (theuni) -- #12987 `fe8fa22` tests/tools: Enable additional Python flake8 rules for automatic linting via Travis (practicalswift) -- #12972 `0782508` Add python3 script shebang lint (ken2812221) -- #13004 `58bbc55` Print to console by default when not run with -daemon (practicalswift) -- #13039 `8b4081a` Add logging and error handling for file syncing (laanwj) -- #13020 `4741ca5` Consistently log CValidationState on call failure (Empact) -- #13031 `826acc9` Fix for utiltime to compile with msvc (sipsorcery) -- #13119 `81743b5` Remove script to clean up datadirs (MarcoFalke) -- #12954 `5a66642` util: Refactor logging code into a global object (jimpo) -- #12769 `35eb9d6` Add systemd service to bitcoind in debian package (ghost) -- #13146 `0bc980b` rpcauth: Make it possible to provide a custom password (laanwj) -- #13148 `b62b437` logging: Fix potential use-after-free in logprintstr(…) (practicalswift) -- #13214 `0612d96` Enable Travis checking for two Python linting rules we are currently not violating (practicalswift) -- #13197 `6826989` util: Warn about ignored recursive -includeconf calls (kallewoof) -- #13176 `d9ebb63` Improve CRollingBloomFilter performance: replace modulus with FastMod (martinus) -- #13228 `d792e47` Add script to detect circular dependencies between source modules (sipa) -- #13320 `e08c130` Ensure gitian-build.sh uses bash (jhfrontz) -- #13301 `e4082d5` lint: Add linter to error on `#include <*.cpp>` (Empact) -- #13374 `56f6936` utils and libraries: checking for bitcoin address in translations (kaplanmaxe) -- #13230 `7c32b41` Simplify include analysis by enforcing the developer guide's include syntax (practicalswift) -- #13450 `32bf4c6` Add linter: Enforce the source code file naming convention described in the developer notes (practicalswift) -- #13479 `fa2ea37` contrib: Fix cve-2018-12356 by hardening the regex (loganaden) -- #13448 `a90ca40` Add linter: Make sure we explicitly open all text files using UTF-8 encoding in Python (practicalswift) -- #13494 `d67eff8` Follow-up to #13454: Fix broken build by exporting `LC_ALL=C` (practicalswift) -- #13510 `03f3925` Scripts and tools: Obsolete #!/bin/bash shebang (DesWurstes) -- #13577 `c9eb8d1` logging: Avoid nstart may be used uninitialized in appinitmain warning (mruddy) -- #13603 `453ae5e` bitcoin-tx: Stricter check for valid integers (domob1812) -- #13118 `c05c93c` RPCAuth Detection in Logs (Linrono) -- #13647 `4027ec1` Scripts and tools: Fix `BIND_NOW` check in security-check.py (conradoplg) -- #13692 `f5d166a` contrib: Clone core repo in gitian-build (MarcoFalke) -- #13699 `4c6d1b9` contrib: Correct version check (kallewoof) -- #13695 `dcc0cff` lint: Add linter for circular dependencies (Empact) -- #13733 `0d1ebf4` utils: Refactor argsmanager a little (AtsukiTak) -- #13714 `29b4ee6` contrib: Add lxc network setup for bionic host (ken2812221) -- #13764 `f8685f4` contrib: Fix test-security-check fail in ubuntu 18.04 (ken2812221) -- #13809 `77168f7` contrib: Remove debian and rpm subfolder (MarcoFalke) -- #13799 `230652c` Ignore unknown config file options; warn instead of error (sipa) -- #13894 `df9f712` shutdown: Stop threads before resetting ptrs (MarcoFalke) -- #13925 `71dec5c` Merge leveldb subtree (MarcoFalke) -- #13939 `ef86f26` lint: Make format string linter understand basic template parameter syntax (practicalswift) -- #14105 `eb202ea` util: Report parse errors in configuration file (laanwj) -- #12604 `9903537` Add DynamicMemoryUsage() to CDBWrapper to estimate LevelDB memory use (eklitzke) -- #12495 `047865e` Increase LevelDB `max_open_files` (eklitzke) -- #12784 `e80716d` Fix bug in memory usage calculation (unintended integer division) (practicalswift) -- #12618 `becd8dd` Set `SCHED_BATCH` priority on the loadblk thread (eklitzke) -- #12854 `5ca1509` Add P2P, Network, and Qt categories to the desktop icon (luke-jr) -- #11862 `4366f61` Network specific conf sections (ajtowns) -- #13441 `4a7e64f` Prevent shared conf files from failing with different available options in different binaries (achow101) -- #13471 `5eca4e8` For AVX2 code, also check for AVX, XSAVE, and OS support (sipa) -- #13503 `c655b2c` Document FreeBSD quirk. Fix FreeBSD build: Use std::min(…) to allow for compilation under certain FreeBSD versions (practicalswift) -- #13725 `07ce278` Fix bitcoin-cli --version (Empact) -- #15188 `d711c62` Update zmq to 4.3.1 (rex4539) +- #13935 contrib: Adjust output to current test format (AkioNak) +- #14097 validation: Log FormatStateMessage on ConnectBlock error in ConnectTip (MarcoFalke) +- #13724 contrib: Support ARM and RISC-V symbol check (ken2812221) +- #13159 Don't close old debug log file handle prematurely when trying to re-open (on SIGHUP) (practicalswift) +- #14186 bitcoin-cli: don't translate command line options (HashUnlimited) +- #14057 logging: Only log `using config file path_to_bitcoin.conf` message on startup if conf file exists (leishman) +- #14164 Update univalue subtree (MarcoFalke) +- #14272 init: Remove deprecated args from hidden args (MarcoFalke) +- #14494 Error if # is used in rpcpassword in conf (MeshCollider) +- #14742 Properly generate salt in rpcauth.py (dongcarl) +- #14708 Warn unrecognised sections in the config file (AkioNak) +- #14756 Improve rpcauth.py by using argparse and getpass modules (promag) +- #14785 scripts: Fix detection of copyright holders (cornelius) +- #14831 scripts: Use `#!/usr/bin/env bash` instead of `#!/bin/bash` (vim88) +- #14869 Scripts: Add trusted key for samuel dobson (laanwj) +- #14809 Tools: improve verify-commits.py script (jlopp) +- #14624 Some simple improvements to the RNG code (sipa) +- #14947 scripts: Remove python 2 import workarounds (practicalswift) +- #15087 Error if rpcpassword contains hash in conf sections (MeshCollider) +- #14433 Add checksum in gitian build scripts for ossl (TheCharlatan) +- #15165 contrib: Allow use of github api authentication in github-merge (laanwj) +- #14409 utils and libraries: Make 'blocksdir' always net specific (hebasto) +- #14839 threads: Fix unitialized members in `sched_param` (fanquake) +- #14955 Switch all RNG code to the built-in PRNG (sipa) +- #15258 Scripts and tools: Fix `devtools/copyright_header.py` to always honor exclusions (Empact) +- #12255 Update bitcoin.service to conform to init.md (dongcarl) +- #15266 memory: Construct globals on first use (MarcoFalke) +- #15347 Fix build after pr 15266 merged (hebasto) +- #15351 Update linearize-hashes.py (OverlordQ) +- #15358 util: Add setuphelpoptions() (MarcoFalke) +- #15216 Scripts and tools: Replace script name with a special parameter (hebasto) +- #15250 Use RdSeed when available, and reduce RdRand load (sipa) +- #15278 Improve PID file error handling (hebasto) +- #15270 Pull leveldb subtree (MarcoFalke) +- #15456 Enable PID file creation on WIN (riordant) +- #12783 macOS: disable AppNap during sync (krab) +- #13910 Log progress while verifying blocks at level 4 (domob1812) +- #15124 Fail AppInitMain if either disk space check fails (Empact) +- #15117 Fix invalid memory write in case of failing mmap(…) in PosixLockedPageAllocator::AllocateLocked (practicalswift) +- #14357 streams: Fix broken `streams_vector_reader` test. Remove unused `seek(size_t)` +- #11640 Make `LOCK`, `LOCK2`, `TRY_LOCK` work with CWaitableCriticalSection (ryanofsky) +- #14074 Use `std::unordered_set` instead of `set` in blockfilter interface (jimpo) +- #15275 Add gitian PGP key for hebasto (hebasto) +- #16095 Catch by reference not value in wallettool (kristapsk) +- #16205 Replace fprintf with tfm::format (MarcoFalke) ### Documentation -- #12306 `216f9a4` Improvements to UNIX documentation (axvr) -- #12309 `895fbd7` Explain how to update chainTxData in release process (laanwj) -- #12317 `85123be` Document method for reviewers to verify chainTxData (jnewbery) -- #12331 `d32528e` Properly alphabetize output of CLI --help option (murrayn) -- #12322 `c345148` Remove step making cloned repository world-writable for Windows build (murrayn) -- #12354 `b264528` add gpg key for fivepiece (fivepiece) -- #11761 `89005dd` initial QT documentation (Sjors) -- #12232 `fdc2188` Improve "Turn Windows Features On or Off" step (MCFX2) -- #12487 `4528f74` init: Remove translation for `-blockmaxsize` option help (laanwj) -- #12546 `a4a5fc7` Minor improvements to Compatibility Notes (randolf) -- #12434 `21e2670` dev-notes: Members should be initialized (MarcoFalke) -- #12452 `71f56da` clarified systemd installation instructions in init.md for Ubuntu users (DaveFromBinary) -- #12615 `1f93491` allow for SIGNER containing spaces (ken2812221) -- #12603 `85424d7` PeerLogicValidation interface (jamesob) -- #12581 `12ac2f0` Mention configure without wallet in FreeBSD instructions (dbolser) -- #12619 `8a709fb` Give hint about gitian not able to download (kallewoof) -- #12668 `de2fcaa` do update before fetching packages in WSL build guide (nvercamm) -- #12586 `e7721e6` Update osx brew install instruction (fanquake) -- #12760 `7466a26` Improve documentation on standard communication channels (jimpo) -- #12797 `0415b1e` init: Fix help message for checkblockindex (MarcoFalke) -- #12800 `2d97611` Add note about our preference for scoped enumerations ("enum class") (practicalswift) -- #12798 `174d016` Refer to witness reserved value as spec. in the BIP (MarcoFalke) -- #12759 `d3908e2` Improve formatting of developer notes (eklitzke) -- #12877 `2b54155` Use bitcoind in Tor documentation (knoxcard) -- #12896 `b15485e` Fix conflicting statements about initialization in developer notes (practicalswift) -- #12850 `319991d` add qrencode to brew install instructions (buddilla) -- #12007 `cd8e45b` Clarify the meaning of fee delta not being a fee rate in prioritisetransaction RPC (honzik666) -- #12927 `06ead15` fixed link, replaced QT with Qt (trulex) -- #12852 `ebd786b` devtools: Setup ots git integration (MarcoFalke) -- #12933 `3cf76c2` Refine header include policy (MarcoFalke) -- #12951 `6df0c6c` Fix comment in FindForkInGlobalIndex (jamesob) -- #12982 `a63b4e3` Fix inconsistent namespace formatting guidelines (ryanofsky) -- #13026 `9b3a67e` Fix include comment in src/interfaces/wallet.h (promag) -- #13012 `d1e3c5e` Add comments for chainparams.h, validation.cpp (jamesob) -- #13064 `569e381` List support for BIP173 in bips.md (sipa) -- #12997 `646b7f6` build-windows: Switch to Artful, since Zesty is EOL (MarcoFalke) -- #12384 `c5f7efe` Add version footnote to tor.md (Willtech) -- #13165 `627c376` Mention good first issue list in CONTRIBUTING.md (fanquake) -- #13295 `fb77310` Update OpenBSD build instructions for OpenBSD 6.3 (practicalswift) -- #13340 `3a8e3f4` remove leftover check-doc documentation (fanquake) -- #13346 `60f0358` update bitcoin-dot-org links in release-process.md (fanquake) -- #13372 `f014933` split FreeBSD build instructions out of build-unix.md (steverusso) -- #13366 `861de3b` Rename “OS X” to the newer “macOS” convention (giulio92) -- #13369 `f8bcef3` update transifex doc link (mess110) -- #13312 `b22115d` Add a note about the source code filename naming convention (practicalswift) -- #13460 `1939536` Remove note to install all boost dev packages (MarcoFalke) -- #13476 `9501938` Fix incorrect shell quoting in FreeBSD build instructions (murrayn) -- #13402 `43fa355` Document validationinterace callback blocking deadlock potential (TheBlueMatt) -- #13488 `d6cf4bd` Improve readability of "Squashing commits" (wodry) -- #13531 `ee02deb` Clarify that mempool txiter is `const_iterator` (MarcoFalke) -- #13418 `01f9098` More precise explanation of parameter onlynet (wodry) -- #13592 `1756cb4` Modify policy to not translate command-line help (ken2812221) -- #13588 `b77c38e` Improve doc of options addnode, connect, seednode (wodry) -- #13614 `17e9106` Update command line help for -printtoconsole and -debuglogfile (satwo, fanquake) -- #13605 `8cc048e` corrected text to reflect new(er) process of specifying fingerprints (jhfrontz) -- #13481 `b641f60` Rewrite some validation docs as lock annotations (MarcoFalke) -- #13680 `30640f8` Remove outdated comment about miner ignoring CPFP (jamesob) -- #13625 `7146672` Add release notes for -printtoconsole and -debuglogfile changes (satwo) -- #13718 `f7f574d` Specify preferred Python string formatting technique (masonicboom) -- #12764 `10b9a81` Remove field in getblocktemplate help that has never been used (conscott) -- #13742 `d2186b3` Adjust bitcoincore.org links (MarcoFalke) -- #13706 `94dd89e` Minor improvements to release-process.md (MitchellCash) -- #13775 `ef4fac0` Remove newlines from error message (practicalswift) -- #13803 `feb7dd9` add note to contributor docs about warranted PR's (kallewoof) -- #13814 `67af7ef` Add BIP174 to list of implemented BIPs (sipa) -- #13835 `c1cba35` Fix memory consistency model in comment (skeees) -- #13824 `aa30e4b` Remove outdated net comment (MarcoFalke) -- #13853 `317477a` correct versions in dependencies.md (fanquake) -- #13872 `37ab117` Reformat -help output for help2man (real-or-random) -- #13717 `8c3c402` Link to python style guidelines from developer notes (masonicboom) -- #13895 `1cd5f2c` fix GetWarnings docs to reflect behavior (Empact) -- #13911 `3e3a50a` Revert translated string change, clarify wallet log messages (PierreRochard) -- #13908 `d6faea4` upgrade rescan time warning from minutes to >1 hour (masonicboom) -- #13905 `73a09b4` fixed bitcoin-cli -help output for help2man (hebasto) -- #14100 `2936dbc` Change documentation for =0 for non-boolean options (laanwj) -- #14096 `465a583` Add reference documentation for descriptors language (sipa) -- #12757 `0c5f67b` Clarify include guard naming convention (practicalswift) -- #13844 `d3325b0` Correct the help output for `-prune` (hebasto) -- #14509 `1b5af2c` [0.17] doc: use SegWit in getblocktemplate example (Sjors) -- #14161 `5f51fd6` doc/descriptors.md tweaks (ryanofsky) -- #14276 `85aacc4` Add autogen.sh in ARM Cross-compilation (walterwhite81) +- #14120 Notes about control port and read access to cookie (JBaczuk) +- #14135 correct GetDifficulty doc after #13288 (fanquake) +- #14013 Add new regtest ports in man following #10825 ports reattributions (ariard) +- #14149 Remove misleading checkpoints comment in CMainParams (MarcoFalke) +- #14153 Add disable-wallet section to OSX build instructions, update line in Unix instructions (bitstein) +- #13662 Explain when reindex-chainstate can be used instead of reindex (Sjors) +- #14207 `-help-debug` implies `-help` (laanwj) +- #14213 Fix reference to lint-locale-dependence.sh (hebasto) +- #14206 Document `-checklevel` levels (laanwj) +- #14217 Add GitHub PR template (MarcoFalke) +- #14331 doxygen: Fix member comments (MarcoFalke) +- #14264 Split depends installation instructions per arch (MarcoFalke) +- #14393 Add missing apt-get install (poiuty) +- #14428 Fix macOS files description in qt/README.md (hebasto) +- #14390 release process: RPC documentation (karel-3d) +- #14472 getblocktemplate: use SegWit in example (Sjors) +- #14497 Add doc/bitcoin-conf.md (hebasto) +- #14526 Document lint tests (fanquake) +- #14511 Remove explicit storage requirement from README.md (merland) +- #14600 Clarify commit message guidelines (merland) +- #14617 FreeBSD: Document Python 3 requirement for 'gmake check' (murrayn) +- #14592 Add external interface consistency guarantees (MarcoFalke) +- #14625 Make clear function argument case in dev notes (dongcarl) +- #14515 Update OpenBSD build guide for 6.4 (fanquake) +- #14436 Add comment explaining recentRejects-DoS behavior (jamesob) +- #14684 conf: Remove deprecated options from docs, Other cleanup (MarcoFalke) +- #14731 Improve scripted-diff developer docs (dongcarl) +- #14778 A few minor formatting fixes and clarifications to descriptors.md (jnewbery) +- #14448 Clarify rpcwallet flag url change (JBaczuk) +- #14808 Clarify RPC rawtransaction documentation (jlopp) +- #14804 Less confusing documentation for `torpassword` (fanquake) +- #14848 Fix broken Gmane URL in security-check.py (cyounkins-bot) +- #14882 developer-notes.md: Point out that UniValue deviates from upstream (Sjors) +- #14909 Update minimum required Qt (fanquake) +- #14914 Add nice table to files.md (emilengler) +- #14741 Indicate `-rpcauth` option password hashing alg (dongcarl) +- #14950 Add NSIS setup/install steps to windows docs (fanquake) +- #13930 Better explain GetAncestor check for `m_failed_blocks` in AcceptBlockHeader (Sjors) +- #14973 Improve Windows native build instructions (murrayn) +- #15073 Botbot.me (IRC logs) not available anymore (anduck) +- #15038 Get more info about GUI-related issue on Linux (hebasto) +- #14832 Add more Doxygen information to Developer Notes (ch4ot1c) +- #15128 Fix download link in doc/README.md (merland) +- #15127 Clarifying testing instructions (benthecarman) +- #15132 Add FreeBSD build notes link to doc/README.md (fanquake) +- #15173 Explain what .python-version does (Sjors) +- #15223 Add information about security to the JSON-RPC doc (harding) +- #15249 Update python docs to reflect that wildcard imports are disallowed (Empact) +- #15176 Get rid of badly named `doc/README_osx.md` (merland) +- #15272 Correct logging return type and RPC example (fanquake) +- #15244 Gdb attaching to process during tests has non-sudo solution (instagibbs) +- #15332 Small updates to `getrawtransaction` description (amitiuttarwar) +- #15354 Add missing `bitcoin-wallet` tool manpages (MarcoFalke) +- #15343 netaddress: Make IPv4 loopback comment more descriptive (dongcarl) +- #15353 Minor textual improvements in `translation_strings_policy.md` (merland) +- #15426 importmulti: add missing description of keypool option (harding) +- #15425 Add missing newline to listunspent help for witnessScript (harding) +- #15348 Add separate productivity notes document (dongcarl) +- #15416 Update FreeBSD build guide for 12.0 (fanquake) +- #15222 Add info about factors that affect dependency list (merland) +- #13676 Explain that mempool memory is added to `-dbcache` (Sjors) +- #15273 Slight tweak to the verify-commits script directions (droark) +- #15477 Remove misleading hint in getrawtransaction (MarcoFalke) +- #15489 Update release process for snap package (MarcoFalke) +- #15524 doc: Remove berkeleydb PPA from linux build instructions (MarcoFalke) +- #15559 Correct `analyzepsbt` rpc doc (fanquake) +- #15194 Add comment describing `fDisconnect` behavior (dongcarl) +- #15754 getrpcinfo docs (benthecarman) +- #15763 Update bips.md for 0.18.0 (sipa) +- #15757 List new RPCs in psbt.md and descriptors.md (sipa) +- #15765 correct bitcoinconsensus_version in shared-libraries.md (fanquake) +- #15792 describe onlynet option in doc/tor.md (jonatack) +- #15802 mention creating application support bitcoin folder on OSX (JimmyMow) +- #15799 Clarify RPC versioning (MarcoFalke) +- #15890 Remove text about txes always relayed from -whitelist (harding) Credits ======= @@ -1044,8 +1127,4 @@ Thanks to everyone who directly contributed to this release: - VKoskiv - voidmain - wbsmolen -- xinxi - -And to those that reported security issues: - -- awemany (for CVE-2018-17144, previously credited as "anonymous reporter") \ No newline at end of file +- xinxi \ No newline at end of file