Merge pull request #5704 from UdjinM6/merge_master_20.0.0

chore: Merge master v20.0.0 back into develop
This commit is contained in:
PastaPastaPasta 2023-11-15 21:37:13 -06:00 committed by GitHub
commit 4c0c3cc1b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 563 additions and 365 deletions

View File

@ -1,7 +0,0 @@
Updated or changed RPC
----------------------
The `fundrawtransaction`, `sendmany`, `sendtoaddress`, and `walletcreatefundedpsbt`
RPC commands have been updated to include two new fee estimation methods "DASH/kB" and "duff/B".
The target is the fee expressed explicitly in the given form.
In addition, the `estimate_mode` parameter is now case insensitive for all of the above RPC commands.

View File

@ -1,15 +0,0 @@
Low-level RPC changes
----------------------
- Soft fork reporting in the `getblockchaininfo` return object has been
updated. For full details, see the RPC help text. In summary:
- The `bip9_softforks` sub-object is no longer returned
- The `softforks` sub-object now returns an object keyed by soft fork name,
rather than an array
- Each softfork object in the `softforks` object contains a `type` value which
is either `buried` (for soft fork deployments where the activation height is
hard-coded into the client implementation), or `bip9` (for soft fork deployments
where activation is controlled by BIP 9 signaling).
- `getblocktemplate` no longer returns a `rules` array containing `CSV`
(the BIP 9 deployments that are currently in active state).

View File

@ -1,6 +0,0 @@
RPC changes
-----------
The `gettransaction` RPC now accepts a third (boolean) argument `verbose`. If
set to `true`, a new `decoded` field will be added to the response containing
the decoded transaction. This field is equivalent to RPC `decoderawtransaction`,
or RPC `getrawtransaction` when `verbose` is passed.

View File

@ -1,8 +0,0 @@
Low-level changes
=================
Tests
---
- `-fallbackfee` was 0 (disabled) by default for the main chain, but 1000 by default for the test chains. Now it is 0 by default for all chains. Testnet and regtest users will have to add fallbackfee=1000 to their configuration if they weren't setting it and they want it to keep working like before. (bitcoin#16524)

View File

@ -1,31 +0,0 @@
P2P and network changes
-----------------------
#### Removal of reject network messages from Dash Core (BIP61)
The command line option to enable BIP61 (`-enablebip61`) has been removed.
This feature has been disabled by default since Dash Core version 0.19.0.
Nodes on the network can not generally be trusted to send valid ("reject")
messages, so this should only ever be used when connected to a trusted node.
Since Dash Core version 0.20.0 there are extra changes:
The removal of BIP61 REJECT message support also has the following minor RPC
and logging implications:
* `testmempoolaccept` and `sendrawtransaction` no longer return the P2P REJECT
code when a transaction is not accepted to the mempool. They still return the
verbal reject reason.
* Log messages that previously reported the REJECT code when a transaction was
not accepted to the mempool now no longer report the REJECT code. The reason
for rejection is still reported.
Updated RPCs
------------
- `testmempoolaccept` and `sendrawtransaction` no longer return the P2P REJECT
code when a transaction is not accepted to the mempool. See the Section
_Removal of reject network messages from Bitcoin Core (BIP61)_ for details on
the removal of BIP61 REJECT message support.

View File

@ -1,4 +0,0 @@
Low-level RPC Changes
===
- A new descriptor type `sortedmulti(...)` has been added to support multisig scripts where the public keys are sorted lexicographically in the resulting script.

View File

@ -1,5 +0,0 @@
Low-level RPC Changes
===
- The RPC gettransaction, listtransactions and listsinceblock responses now also
includes the height of the block that contains the wallet transaction, if any.

View File

@ -1,13 +0,0 @@
Deprecated or removed RPCs
--------------------------
- RPC `getaddressinfo` changes:
- the `label` field has been deprecated in favor of the `labels` field and
will be removed in 0.21. It can be re-enabled in the interim by launching
with `-deprecatedrpc=label`.
- the `labels` behavior of returning an array of JSON objects containing name
and purpose key/value pairs has been deprecated in favor of an array of
label names and will be removed in 0.21. The previous behavior can be
re-enabled in the interim by launching with `-deprecatedrpc=labelspurpose`.

View File

@ -1,10 +0,0 @@
Low-level RPC changes
---------------------
- Error codes have been updated to be more accurate for the following error cases (#18466):
- `signmessage` now returns RPC_INVALID_ADDRESS_OR_KEY (-5) if the
passed address is invalid. Previously returned RPC_TYPE_ERROR (-3).
- `verifymessage` now returns RPC_INVALID_ADDRESS_OR_KEY (-5) if the
passed address is invalid. Previously returned RPC_TYPE_ERROR (-3).
- `verifymessage` now returns RPC_TYPE_ERROR (-3) if the passed signature
is malformed. Previously returned RPC_INVALID_ADDRESS_OR_KEY (-5).

View File

@ -1,5 +0,0 @@
## CLI
The `dash-cli -getinfo` command now displays the wallet name and balance for
each of the loaded wallets when more than one is loaded (e.g. in multiwallet
mode) and a wallet is not specified with `-rpcwallet`. (#18594)

View File

@ -1,41 +0,0 @@
P2P and network changes
-----------------------
Updated RPCs
------------
Changes to Wallet or GUI related RPCs can be found in the GUI or Wallet section below.
New RPCs
--------
Build System
------------
Updated settings
----------------
Changes to Wallet or GUI related settings can be found in the GUI or Wallet section below.
New settings
------------
Wallet
------
#### Wallet RPC changes
- The `upgradewallet` RPC replaces the `-upgradewallet` command line option.
(#15761)
- The `settxfee` RPC will fail if the fee was set higher than the `-maxtxfee`
command line setting. The wallet will already fail to create transactions
with fees higher than `-maxtxfee`. (#18467)
GUI changes
-----------
Low-level changes
=================
Tests
-----

View File

@ -1,33 +0,0 @@
P2P and network changes
-----------------------
- The mempool now tracks whether transactions submitted via the wallet or RPCs
have been successfully broadcast. Every 10-15 minutes, the node will try to
announce unbroadcast transactions until a peer requests it via a `getdata`
message or the transaction is removed from the mempool for other reasons.
The node will not track the broadcast status of transactions submitted to the
node using P2P relay. This version reduces the initial broadcast guarantees
for wallet transactions submitted via P2P to a node running the wallet. (#18038)
Updated RPCs
------------
- `getmempoolinfo` now returns an additional `unbroadcastcount` field. The
mempool tracks locally submitted transactions until their initial broadcast
is acknowledged by a peer. This field returns the count of transactions
waiting for acknowledgement.
- Mempool RPCs such as `getmempoolentry` and `getrawmempool` with
`verbose=true` now return an additional `unbroadcast` field. This indicates
whether initial broadcast of the transaction has been acknowledged by a
peer. `getmempoolancestors` and `getmempooldescendants` are also updated.
Wallet
------
- To improve wallet privacy, the frequency of wallet rebroadcast attempts is
reduced from approximately once every 15 minutes to once every 12-36 hours.
To maintain a similar level of guarantee for initial broadcast of wallet
transactions, the mempool tracks these transactions as a part of the newly
introduced unbroadcast set. See the "P2P and network changes" section for
more information on the unbroadcast set. (#18038)

View File

@ -1,7 +0,0 @@
Updated settings
----------------
- A `download` permission has been extracted from the `noban` permission. For
compatibility, `noban` implies the `download` permission, but this may change
in future releases. Refer to the help of the affected settings `-whitebind`
and `-whitelist` for more details. (#19191)

View File

@ -1,6 +0,0 @@
New RPCs
--------
- The `getindexinfo` RPC returns the actively running indices of the node,
including their current sync status and height. It also accepts an `index_name`
to specify returning only the status of that index.

View File

@ -1,19 +0,0 @@
JSON-RPC
---
All JSON-RPC methods accept a new [named
parameter](JSON-RPC-interface.md#parameter-passing) called `args` that can
contain positional parameter values. This is a convenience to allow some
parameter values to be passed by name without having to name every value. The
python test framework and `dash-cli` tool both take advantage of this, so
for example:
```sh
dash-cli -named createwallet wallet_name=mywallet load_on_startup=1
```
Can now be shortened to:
```sh
dash-cli -named createwallet mywallet load_on_startup=1
```

View File

@ -1,7 +0,0 @@
Hard fork Deployment Changes
------------------------
V20 will include a new hard-fork `v20` that activates Enhanced Hard Fork, LLMQ Randomness Beacon
The earliest activation date for `v20` is **TO BE DEFINED**.

View File

@ -1,10 +0,0 @@
Testnet Breaking Changes
------------------------
A new testnet only LLMQ has been added. This LLMQ is of the type LLMQ_25_67; this LLMQ is only active on testnet.
This LLMQ will not remove the LLMQ_100_67 from testnet; however that quorum (likely) will not form and will perform no role.
See the [diff](https://github.com/dashpay/dash/pull/5225/files#diff-e70a38a3e8c2a63ca0494627301a5c7042141ad301193f78338d97cb1b300ff9R451-R469) for specific parameters of the LLMQ.
This LLMQ will become active at the height of 847000. **This will be a breaking change and a hard fork for testnet**
This LLMQ is not activated with the v19 hardfork; as such testnet will experience two hardforks. One at height 847000,
and the other to be determined by the BIP9 hard fork process.

View File

@ -1,15 +0,0 @@
Coinbase Changes
------------------------
Once v20 activates, Coinbase transactions in all mined blocks must be of version 3.
Version 3 of Coinbase will include the following two fields:
- bestCLHeightDiff (uint32)
- bestCLSignature (BLSSignature)
bestCLSignature will hold the best Chainlock signature known at the moment of mining.
bestCLHeightDiff is equal to the diff in heights from the mined block height to the actual Chainlocked block height.
Although miners are forced to include a version 3 Coinbase, the actual real-time best Chainlock signature isn't required as long as blocks contain a bestCLSignature equal to (or newer than) the previous block.
Note: Until the first bestCLSignature is included in a Coinbase once v20 activates, null bestCLSignature and bestCLHeightDiff values are perfectly valid.

View File

@ -1,5 +0,0 @@
Added RPCs
--------
- `cleardiscouraged` clears all the already discouraged peers.

View File

@ -1,4 +0,0 @@
Added RPCs
--------
- `protx listdiff` RPC returns a full deterministic masternode list diff between two heigts.

View File

@ -1,25 +0,0 @@
Updated RPCs
--------
- `protx diff` RPC returns a new field `quorumsCLSigs`.
This field is a list containing: a ChainLock signature and the list of corresponding quorum indexes in `newQuorums`.
`MNLISTDIFF` P2P message
--------
Starting with protocol version `70230`, the following fields are added to the `MNLISTDIFF` after `newQuorums`.
| Field | Type | Size | Description |
|--------------------|-----------------------|----------|---------------------------------------------------------------------|
| quorumsCLSigsCount | compactSize uint | 1-9 | Number of quorumsCLSigs elements |
| quorumsCLSigs | quorumsCLSigsObject[] | variable | CL Sig used to calculate members per quorum indexes (in newQuorums) |
The content of `quorumsCLSigsObject`:
| Field | Type | Size | Description |
|---------------|------------------|----------|---------------------------------------------------------------------------------------------|
| signature | BLSSig | 96 | ChainLock signature |
| indexSetCount | compactSize uint | 1-9 | Number of quorum indexes using the same `signature` for their member calculation |
| indexSet | uint16_t[] | variable | Quorum indexes corresponding in `newQuorums` using `signature` for their member calculation |
Note: The `quorumsCLSigs` field in both RPC and P2P will only be populated after the v20 activation.

View File

@ -1,6 +0,0 @@
Updated RPCs
--------
- `masternodelist`: New mode `hpmn` filters only HPMNs.
- `protx list`: New type `hpmn` filters only HPMNs.

View File

@ -1,14 +0,0 @@
Updated RPCs
--------
- `protx register_hpmn` is renamed to `protx register_evo`.
- `protx register_fund_hpmn` is renamed to `protx register_fund_evo`.
- `protx register_prepare_hpmn` is renamed to `protx register_prepare_evo`.
- `protx update_service_hpmn` is renamed to `protx update_service_evo`.
Please note that _hpmn RPCs are deprecated.
Although, they can still be enabled by adding `-deprecatedrpc=hpmn`.
- `masternodelist` filter `hpmn` is renamed to `evo`.
- `masternode count` return total number of EvoNodes under field `evo` instead of `hpmn`.
- Description type string `HighPerformance` is renamed to `Evo`: affects most RPCs return MNs details.

View File

@ -1,7 +0,0 @@
Governance Changes
------------------------
Sentinel will no longer be supported, its logic is integrated into Core.
During the Superblock Maturity Window (1662 blocks), payee Masternodes will try to create, sign and submit a Superblock (GovTrigger).
Once a MN has submitted a GovTrigger, it votes for it and will vote no for any other competing GovTrigger.

View File

@ -1,5 +0,0 @@
Updated RPC
--------
- `gobject submit` will no longer accept submission of triggers.
- `gobject vote-conf` is no longer available.

View File

@ -1,14 +0,0 @@
Block Reward Reallocation
-------------------------
Once Masternode Reward Location Reallocation activates:
- Treasury is bumped to 20% of block subsidy.
- Block reward shares are immediately set to 60% for MN and 20% miners.
Note: Previous reallocation periods are dropped.
Updated RPCs
------------
- `getgovernanceinfo` RPC returns the field `governancebudget`: the governance budget for the next superblock.

View File

@ -1,4 +0,0 @@
Updated RPCs
------------
- `getblockchaininfo` RPC returns the field `activation_height` for each softforks in `locked_in` status: indicating the expected activation height.

View File

@ -1,10 +0,0 @@
Block Reward Reallocation
-------------------------
Once v20 activates:
- Treasury is bumped to 20% of block subsidy.
- Block reward shares are immediately set to 60% for MN and 20% miners.
Note: Previous reallocation periods are dropped.
Note: Same changes from PR 5588 but activation is done on v20 instead of Masternode Reward Location Reallocation.

View File

@ -1,13 +1,13 @@
# Dash Core version v19.3.0 # Dash Core version v20.0.0
Release is now available from: Release is now available from:
<https://www.dash.org/downloads/#wallets> <https://www.dash.org/downloads/#wallets>
This is a new minor version release, bringing various bugfixes and other This is a new major version release, bringing new features, various bugfixes
improvements. and other improvements.
This release is optional for all nodes. This release is mandatory for all nodes.
Please report bugs using the issue tracker at GitHub: Please report bugs using the issue tracker at GitHub:
@ -36,49 +36,427 @@ reindex or re-sync the whole chain.
# Notable changes # Notable changes
## CoinJoin improvements ## ChainLock-based random beacon
This release fixes a couple of issues with mixing on nodes that start with no To improve long-living masternode quorum (LLMQ) selection, the `v20` hard fork
wallet loaded initially. will enable a new random beacon using ChainLock signatures as described in
[DIP-0029][DIP-0029]. ChainLock signatures will be stored in the Coinbase
transaction to be used as a source of randomness during quorum member
calculations. This change increases the decentralization in the source of
randomness and prevents masternodes or miners from being able to manipulate the
LLMQ process.
## Wallet GUI improvements ## Treasury expansion
Wallets with 100k+ txes should now be able to rescan without hanging forever Currently, 10% of block rewards are set aside for the Dash DAO treasury which
while processing notifications for every tx. Running `keypoolrefill` with a funds development and other network efforts. Once the `v20` hard fork goes into
large number of keys will no longer lockup the GUI and can be interrupted. effect on mainnet, the treasury system allotment will increase to 20% of block
Running `upgradetohd` can also be interrupted now. rewards to align with the proposal approved in September. Miner and masternode
rewards will change to 20% and 60% respectively upon activation of the change,
previous reallocation periods are ignored.
## Changes in RPCs, commands and config options ## Asset lock and unlock transactions
- `wipewallettxes`: New RPC command which removes all wallet transactions The asset lock process provides a mechanism for locking and unlocking Dash in a
- `wipetxes`: New command for `dash-wallet` that removes all wallet transactions credit pool. This credit pool mirrors the available credit supply in Dash
- `masternodelist`: New mode `hpmn` filters only HPMNs/EvoNodes Platform. When a certain amount of Dash is locked, a proportional number of
- `protx list`: New type `hpmn` filters only HPMNs/EvoNodes credits are issued to the identity specified by the transaction issuer. The
- `-blockversion` config option is allowed on non-mainnet networks now identity then uses the credits to pay fees for operations done on Dash
Platform. Masternode identities receive the fees and can convert them back to
Dash by withdrawing them from Dash Platform.
## Other changes Note: The asset lock feature is activated by the `v20` hard fork while the asset
unlock feature will be activated later by another hard fork.
There were a few other minor changes too, specifically: ## Coinbase Transaction Changes
- Added Kittywhiskers Van Gogh (kittywhiskers) and Odysseas Gabrielides
(ogabrielides) to contributors list in 19.2.0 release notes
- There should be no false "unknown rules activated" warning in GUI and RPCs now
- Empty `settings.json` file no longer results in node startup failure
- Block processing was slightly optimized
- BLS library was updated to version 1.3.0 to fix a couple tiny issues
- Fixed a couple of small issues in tests
# v19.3.0 Change log Once v20 activates, Coinbase transactions in all mined blocks must be of
version 3.
See detailed [set of changes](https://github.com/dashpay/dash/compare/v19.2.0...dashpay:v19.3.0). Version 3 of the Coinbase transaction will include the following new fields:
- `bestCLSignature` (`BLSSignature`) will hold the best Chainlock signature
known at the moment
- `bestCLHeightDiff` (`uint32`) is equal to the diff in heights from the mined
block height
- `creditPoolBalance` (`int64`) is equal to all the duffs locked in all previous
blocks minus all the duffs unlocked in all previous blocks plus all the block
subsidy paid to evonodes on Platform.
Although miners are forced to include a version 3 Coinbase transaction, the
actual real-time best Chainlock signature isn't required as long as blocks
contain a `bestCLSignature` equal to (or newer than) the previous block.
Note: Until the first `bestCLSignature` is included in a Coinbase transaction
once v20 activates, null `bestCLSignature` and `bestCLHeightDiff` values are
perfectly valid.
## Testnet Breaking Changes
### Enhanced hard fork
Full implementation of the [DIP-0023][DIP-0023] enhanced hard fork mechanism has
been completed. This improved activation mechanism includes signaling from both
masternodes and miners while also ensuring sufficient upgrade time is available
to partners. This new system is enabled on testnet and devnets by the `v20`
activation and a newly introduced `SPORK_24_TEST_EHF` spork.
### Fixed subsidy base after `v20`
Starting from `v20` activation, the base block subsidy on testnet and devnets
will no longer be calculated based on previous block difficulty. This change
mimics mainnet behaviour. It also simplifies calculations for Platform which
would not need to constantly get block's difficulty in order to calculate
platform reward.
## Sentinel deprecation
Sentinel functionality has been integrated directly into v20.0.0, so it will no
longer be necessary for masternodes to run the standalone Sentinel application.
During the superblock maturity window (1662 blocks), payee masternodes will try
to create, sign and submit a superblock candidate. Several RPC commands have
been updated to prevent conflicts between v20.0.0 and existing Sentinel
installs. It is recommended to remove or disable Sentinel after updating
masternodes to v20.0.0.
## P2P and network changes
### Removal of reject network messages from Dash Core (BIP61)
This feature has been disabled by default since Dash Core version 19.0.0.
Nodes on the network can not generally be trusted to send valid ("reject")
messages, so this should only ever be used when connected to a trusted node.
Since Dash Core version 20.0.0 there are extra changes:
The removal of BIP61 `REJECT` message support also has the following minor RPC
and logging implications:
- `testmempoolaccept` and `sendrawtransaction` no longer return the P2P `REJECT`
code when a transaction is not accepted to the mempool. They still return the
verbal reject reason.
- Log messages that previously reported the `REJECT` code when a transaction was
not accepted to the mempool now no longer report the `REJECT` code. The reason
for rejection is still reported.
### Transaction rebroadcast
The mempool now tracks whether transactions submitted via the wallet or RPCs
have been successfully broadcast. Every 10-15 minutes, the node will try to
announce unbroadcast transactions until a peer requests it via a `getdata`
message or the transaction is removed from the mempool for other reasons.
The node will not track the broadcast status of transactions submitted to the
node using P2P relay. This version reduces the initial broadcast guarantees
for wallet transactions submitted via P2P to a node running the wallet.
To improve wallet privacy, the frequency of wallet rebroadcast attempts is
reduced from approximately once every 15 minutes to once every 1-3 hours.
To maintain a similar level of guarantee for initial broadcast of wallet
transactions, the mempool tracks these transactions as a part of the newly
introduced unbroadcast set.
### `MNLISTDIFF` P2P message
Starting with protocol version `70230`, the following fields are added to the
`MNLISTDIFF` message after `newQuorums`.
| Field | Type | Size | Description |
|-|-|-|-|
| quorumsCLSigsCount | compactSize uint | 1-9 | Number of quorumsCLSigs elements |
| quorumsCLSigs | quorumsCLSigsObject[] | variable | ChainLock signature used to calculate members per quorum indexes (in newQuorums) |
The content of `quorumsCLSigsObject`:
| Field | Type | Size | Description |
|-|-|-|-|
| signature | BLSSig | 96 | ChainLock signature |
| indexSetCount | compactSize uint | 1-9 | Number of quorum indexes using the same `signature` for their member calculation |
| indexSet | uint16_t[] | variable | Quorum indexes corresponding in `newQuorums` using `signature` for their member calculation |
Note: The `quorumsCLSigs` field in both RPC and P2P will only be populated after
the v20 activation.
### Other
- It is possible to run Dash Core as an I2P service and connect to such
services. Please read [docs][i2p] for more information.
- Removed support for Tor v2, `LEGACYTXLOCKREQUEST` (`"ix"`) message and
`NODE_GETUTXO` (bit 1) node service bit.
## GUI
Add more granular CoinJoin options to let users control the number of CoinJoin
sessions and also the min/max number of denominations for wallets to create
while mixing.
## Remote Procedure Call (RPC) Changes
### The new RPCs are:
- `addpeeraddress` Add the address of a potential peer to the address manager.
This RPC is for testing only.
- The `getindexinfo` RPC returns the actively running indices of the node,
including their current sync status and height. It also accepts an
`index_name` to specify returning only the status of that index.
- `protx listdiff` RPC returns a full deterministic masternode list diff
between two heights.
### The removed RPCs are:
- `gobject vote-conf` is no longer available.
### Changes in existing RPCs introduced through bitcoin backports:
- The `fundrawtransaction`, `sendmany`, `sendtoaddress`, and
`walletcreatefundedpsbt` RPC commands have been updated to include two new
fee estimation methods, `DASH/kB` and `duff/B`. The target is the fee
expressed explicitly in the given form. In addition, the `estimate_mode`
parameter is now case insensitive for all of the above RPC commands.
- Soft fork reporting in the `getblockchaininfo` return object has been
updated. For full details, see the RPC help text. In summary:
- The `bip9_softforks` sub-object is no longer returned
- The `softforks` sub-object now returns an object keyed by soft fork name,
rather than an array
- Each softfork object in the `softforks` object contains a `type` value
which is either `buried` (for soft fork deployments where the activation
height is hard-coded into the client implementation), or `bip9`(for soft
fork deployments where activation is controlled by BIP 9 signaling).
- `getblocktemplate` no longer returns a `rules` array containing `CSV`
(the BIP 9 deployments that are currently in active state).
- The `gettransaction` RPC now accepts a third (boolean) argument, `verbose`.
If set to `true`, a new `decoded` field will be added to the response
containing the decoded transaction. This field is equivalent to RPC
`decoderawtransaction`, or RPC `getrawtransaction` when `verbose` is passed.
- `testmempoolaccept` and `sendrawtransaction` no longer return the P2P
`REJECT` code when a transaction is not accepted to the mempool. See the
Section [_Removal of reject network messages from Dash Core (BIP61)_](#removal-of-reject-network-messages-from-dash-core-bip61) above for
details on the removal of BIP61 `REJECT` message support.
- A new descriptor type, `sortedmulti(...)`, has been added to support multisig
scripts where the public keys are sorted lexicographically in the resulting
script.
- The RPC `gettransaction`, `listtransactions` and `listsinceblock` responses
now also includes the height of the block that contains the wallet
transaction, if any.
- RPC `getaddressinfo` changes:
- the `label` field has been deprecated in favor of the `labels` field and
will be removed in 0.21. It can be re-enabled in the interim by launching
with `-deprecatedrpc=label`.
- the `labels` behavior of returning an array of JSON objects containing name
and purpose key/value pairs has been deprecated in favor of an array of
label names and will be removed in 0.21. The previous behavior can be
re-enabled in the interim by launching with `-deprecatedrpc=labelspurpose`.
- Error codes have been updated to be more accurate for the following error
cases:
- `signmessage` now returns `RPC_INVALID_ADDRESS_OR_KEY (-5)` if the
passed address is invalid. Previously returned `RPC_TYPE_ERROR (-3)`.
- `verifymessage` now returns `RPC_INVALID_ADDRESS_OR_KEY (-5)` if the
passed address is invalid. Previously returned `RPC_TYPE_ERROR (-3)`.
- `verifymessage` now returns `RPC_TYPE_ERROR (-3)` if the passed signature
is malformed. Previously returned `RPC_INVALID_ADDRESS_OR_KEY (-5)`.
- The `settxfee` RPC will fail if the fee is set higher than the `-maxtxfee`
command line setting. The wallet will already fail to create transactions
with fees higher than `-maxtxfee`.
- `getmempoolinfo` now returns an additional `unbroadcastcount` field. The
mempool tracks locally submitted transactions until their initial broadcast
is acknowledged by a peer. This field returns the count of transactions
waiting for acknowledgement.
- Mempool RPCs such as `getmempoolentry` and `getrawmempool` with
`verbose=true` now return an additional `unbroadcast` field. This indicates
whether initial broadcast of the transaction has been acknowledged by a
peer. `getmempoolancestors` and `getmempooldescendants` are also updated.
- `logging` and `debug` rpc support new logging categories `validations` and
`i2p`
- `gettxoutsetinfo` RPC has 2 new parameters and lots of new fields in
results. Please check `help gettxoutsetinfo` for more information.
- `gettxchainlocks` Returns the block height each transaction was mined at and
whether it is chainlocked or not.
### Dash-specific changes in existing RPCs:
- `getblockchaininfo` RPC returns the field `activation_height` for each
softfork in `locked_in` status indicating the expected activation height.
- `getblockchaininfo` RPC returns the field `ehf` and `ehf_height` for each
softfork. `ehf_height` indicates the minimum height when miner's signals can
be accepted for the deployment with `ehf` set to `true`.
- `getgovernanceinfo` RPC returns two new fields:
- `governancebudget` (the governance budget for the next superblock)
- `fundingthreshold` (the number of absolute yes votes required for a proposal
to be passing)
- `gobject submit` will no longer accept submission of triggers.
- `protx diff` RPC returns a new field `quorumsCLSigs`. This field is a list
containing: a ChainLock signature and the list of corresponding quorum
indexes in `newQuorums`.
- `protx list`: New type `evo` filters only HPMNs.
- `*_hpmn` RPCs were renamed:
- `protx register_hpmn` to `protx register_evo`
- `protx register_fund_hpmn` to `protx register_fund_evo`
- `protx register_prepare_hpmn` to `protx register_prepare_evo`
- `protx update_service_hpmn` to `protx update_service_evo`
Please note that `*_hpmn` RPCs are not fully removed; instead they are
deprecated so you can still enable them by using the `-deprecatedrpc=hpmn`
option.
- `masternode count` returns the total number of evonodes under field `evo`
instead of `hpmn`.
- `masternodelist`: New mode `evo` filters only HPMNs.
- Description type string `HighPerformance` is renamed to `Evo`: affects most
RPCs return MNs details.
Please check `help <command>` for more detailed information on specific RPCs.
## Command-line options
### New cmd-line options:
- `-generate` Generate blocks immediately, equivalent to RPC generatenewaddress
followed by RPC generatetoaddress. Optional positional integer arguments are
number of blocks to generate (default: 1) and maximum iterations to try
(default: 1000000), equivalent to RPC generatetoaddress nblocks and maxtries
arguments.
- `-netinfo` Get network peer connection information from the remote server.
An optional integer argument from 0 to 4 can be passed for different peers
listings (default: 0). Pass `help` for detailed help documentation.
- `-coinstatsindex` Maintain coinstats index used by the gettxoutset RPC
(default: false)
- `-fastprune` Use smaller block files and lower minimum prune height for
testing purposes
- `-i2psam`=<ip:port> I2P SAM proxy to reach I2P peers and accept I2P
connections (default: none)
- `-i2pacceptincoming` If set and `-i2psam` is also set then incoming I2P
connections are accepted via the SAM proxy. If this is not set but `-i2psam`
is set then only outgoing connections will be made to the I2P network. Ignored
if `-i2psam` is not set. Listening for incoming I2P connections is done
through the SAM proxy, not by binding to a local address and port (default: 1)
- `-llmqmnhf` Override the default LLMQ type used for EHF. (default:
llmq_devnet, devnet-only)
- `-llmqtestinstantsend` Override the default LLMQ type used for InstantSend.
Used mainly to test Platform. (default: llmq_test_instantsend, regtest-only)
- `-llmqtestinstantsenddip0024` Override the default LLMQ type used for
InstantSendDIP0024. Used mainly to test Platform. (default:
llmq_test_dip0024, regtest-only)
- `-mnemonicbits` User defined mnemonic security for HD wallet in bits (BIP39).
Only has effect during wallet creation/first start (allowed values: 128, 160,
192, 224, 256; default: 128)
- `-chainlocknotify=<cmd>` Execute command when the best chainlock changes
`%s` in cmd is replaced by chainlocked block hash.
### Removed cmd-line options:
- `-dropmessagestest`
- `-upgradewallet` replaced by `upgradewallet` rpc
### Changes in existing cmd-line options:
- `-fallbackfee` was 0 (disabled) by default for the main chain, but 1000 by
default for the test chains. Now it is 0 by default for all chains. Testnet
and regtest users will have to add fallbackfee=1000 to their configuration if
they weren't setting it and they want it to keep working like before.
- The `dash-cli -getinfo` command now displays the wallet name and balance for
each of the loaded wallets when more than one is loaded (e.g. in multiwallet
mode) and a wallet is not specified with `-rpcwallet`.
- A `download` permission has been extracted from the `noban` permission. For
compatibility, `noban` implies the `download` permission, but this may change
in future releases. Refer to the help of the affected settings `-whitebind`
and `-whitelist` for more details.
- `-vbparams` accepts `useehf`.
- `-instantsendnotify=<cmd>` `%w` is replaced by wallet name.
Please check `Help -> Command-line options` in Qt wallet or `dashd --help` for
more information.
## JSON-RPC
All JSON-RPC methods accept a new [named parameter][json-rpc] called `args` that can
contain positional parameter values. This is a convenience to allow some
parameter values to be passed by name without having to name every value. The
python test framework and `dash-cli` tool both take advantage of this, so
for example:
```sh
dash-cli -named createwallet wallet_name=mywallet load_on_startup=1
```
Can now be shortened to:
```sh
dash-cli -named createwallet mywallet load_on_startup=1
```
## Switch from Gitian to Guix
Starting from v20.0.0 deterministic builds are going to be produced using the
Guix build system. See [contrib/guix/README.md][guix-readme]. The previously
used
Gitian build system is no longer supported and is not guaranteed to produce any
meaningful results.
## Backports from Bitcoin Core
This release introduces many updates from Bitcoin v0.20-v22.0 as well as
numerous updates from Bitcoin v23.0 and v25.0. Bitcoin changes that do not align
with Dashs product needs, such as SegWit and RBF, are excluded from our
backporting. For additional detail on whats included in Bitcoin, please refer
to their release notes.
# v20.0.0 Change log
See detailed [set of changes][set-of-changes].
# Credits # Credits
Thanks to everyone who directly contributed to this release: Thanks to everyone who directly contributed to this release:
- Ivan Shumkov (shumkov)
- Kittywhiskers Van Gogh (kittywhiskers) - Kittywhiskers Van Gogh (kittywhiskers)
- Konstantin Akimov (knst)
- Munkybooty
- Odysseas Gabrielides (ogabrielides) - Odysseas Gabrielides (ogabrielides)
- PanderMusubi (Pander)
- PastaPastaPasta - PastaPastaPasta
- strophy
- thephez
- UdjinM6 - UdjinM6
- Vijay Das Manikpuri (vijaydasmp)
As well as everyone that submitted issues, reviewed pull requests and helped As well as everyone that submitted issues, reviewed pull requests and helped
debug the release candidates. debug the release candidates.
@ -105,6 +483,7 @@ Dash Core tree 0.12.1.x was a fork of Bitcoin Core tree 0.12.
These release are considered obsolete. Old release notes can be found here: These release are considered obsolete. Old release notes can be found here:
- [v19.3.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.3.0.md) released July/31/2023
- [v19.2.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.2.0.md) released June/19/2023 - [v19.2.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.2.0.md) released June/19/2023
- [v19.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.1.0.md) released May/22/2023 - [v19.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.1.0.md) released May/22/2023
- [v19.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.0.0.md) released Apr/14/2023 - [v19.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.0.0.md) released Apr/14/2023
@ -145,3 +524,11 @@ These release are considered obsolete. Old release notes can be found here:
- [v0.11.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.11.0.md) released Jan/15/2015 - [v0.11.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.11.0.md) released Jan/15/2015
- [v0.10.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.10.0.md) released Sep/25/2014 - [v0.10.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.10.0.md) released Sep/25/2014
- [v0.9.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.9.0.md) released Mar/13/2014 - [v0.9.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.9.0.md) released Mar/13/2014
[DIP-0023]: https://github.com/dashpay/dips/blob/master/dip-0023.md
[DIP-0029]: https://github.com/dashpay/dips/blob/master/dip-0029.md
[i2p]: https://github.com/dashpay/dash/blob/v20.x/doc/i2p.md
[guix-readme]: https://github.com/dashpay/dash/blob/v20.x/contrib/guix/README.md
[json-rpc]: https://github.com/dashpay/dash/blob/v20.x/doc/JSON-RPC-interface.md#parameter-passing
[set-of-changes]: https://github.com/dashpay/dash/compare/v19.3.0...dashpay:v20.0.0

View File

@ -0,0 +1,147 @@
# Dash Core version v19.3.0
Release is now available from:
<https://www.dash.org/downloads/#wallets>
This is a new minor version release, bringing various bugfixes and other
improvements.
This release is optional for all nodes.
Please report bugs using the issue tracker at GitHub:
<https://github.com/dashpay/dash/issues>
# Upgrading and downgrading
## 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/Dash-Qt (on Mac) or
dashd/dash-qt (on Linux). If you upgrade after DIP0003 activation and you were
using version < 0.13 you will have to reindex (start with -reindex-chainstate
or -reindex) to make sure your wallet has all the new data synced. Upgrading
from version 0.13 should not require any additional actions.
## Downgrade warning
### Downgrade to a version < v19.2.0
Downgrading to a version older than v19.2.0 is not supported due to changes
in the evodb database. If you need to use an older version, you must either
reindex or re-sync the whole chain.
# Notable changes
## CoinJoin improvements
This release fixes a couple of issues with mixing on nodes that start with no
wallet loaded initially.
## Wallet GUI improvements
Wallets with 100k+ txes should now be able to rescan without hanging forever
while processing notifications for every tx. Running `keypoolrefill` with a
large number of keys will no longer lockup the GUI and can be interrupted.
Running `upgradetohd` can also be interrupted now.
## Changes in RPCs, commands and config options
- `wipewallettxes`: New RPC command which removes all wallet transactions
- `wipetxes`: New command for `dash-wallet` that removes all wallet transactions
- `masternodelist`: New mode `hpmn` filters only HPMNs/EvoNodes
- `protx list`: New type `hpmn` filters only HPMNs/EvoNodes
- `-blockversion` config option is allowed on non-mainnet networks now
## Other changes
There were a few other minor changes too, specifically:
- Added Kittywhiskers Van Gogh (kittywhiskers) and Odysseas Gabrielides
(ogabrielides) to contributors list in 19.2.0 release notes
- There should be no false "unknown rules activated" warning in GUI and RPCs now
- Empty `settings.json` file no longer results in node startup failure
- Block processing was slightly optimized
- BLS library was updated to version 1.3.0 to fix a couple tiny issues
- Fixed a couple of small issues in tests
# v19.3.0 Change log
See detailed [set of changes](https://github.com/dashpay/dash/compare/v19.2.0...dashpay:v19.3.0).
# Credits
Thanks to everyone who directly contributed to this release:
- Kittywhiskers Van Gogh (kittywhiskers)
- Odysseas Gabrielides (ogabrielides)
- PastaPastaPasta
- UdjinM6
As well as everyone that submitted issues, reviewed pull requests and helped
debug the release candidates.
# Older releases
Dash was previously known as Darkcoin.
Darkcoin tree 0.8.x was a fork of Litecoin tree 0.8, original name was XCoin
which was first released on Jan/18/2014.
Darkcoin tree 0.9.x was the open source implementation of masternodes based on
the 0.8.x tree and was first released on Mar/13/2014.
Darkcoin tree 0.10.x used to be the closed source implementation of Darksend
which was released open source on Sep/25/2014.
Dash Core tree 0.11.x was a fork of Bitcoin Core tree 0.9,
Darkcoin was rebranded to Dash.
Dash Core tree 0.12.0.x was a fork of Bitcoin Core tree 0.10.
Dash Core tree 0.12.1.x was a fork of Bitcoin Core tree 0.12.
These release are considered obsolete. Old release notes can be found here:
- [v19.2.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.2.0.md) released June/19/2023
- [v19.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.1.0.md) released May/22/2023
- [v19.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-19.0.0.md) released Apr/14/2023
- [v18.2.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.2.2.md) released Mar/21/2023
- [v18.2.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.2.1.md) released Jan/17/2023
- [v18.2.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.2.0.md) released Jan/01/2023
- [v18.1.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.1.1.md) released January/08/2023
- [v18.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.1.0.md) released October/09/2022
- [v18.0.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.0.2.md) released October/09/2022
- [v18.0.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-18.0.1.md) released August/17/2022
- [v0.17.0.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.17.0.3.md) released June/07/2021
- [v0.17.0.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.17.0.2.md) released May/19/2021
- [v0.16.1.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.16.1.1.md) released November/17/2020
- [v0.16.1.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.16.1.0.md) released November/14/2020
- [v0.16.0.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.16.0.1.md) released September/30/2020
- [v0.15.0.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.15.0.0.md) released Febrary/18/2020
- [v0.14.0.5](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.5.md) released December/08/2019
- [v0.14.0.4](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.4.md) released November/22/2019
- [v0.14.0.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.3.md) released August/15/2019
- [v0.14.0.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.2.md) released July/4/2019
- [v0.14.0.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.1.md) released May/31/2019
- [v0.14.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.14.0.md) released May/22/2019
- [v0.13.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.13.3.md) released Apr/04/2019
- [v0.13.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.13.2.md) released Mar/15/2019
- [v0.13.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.13.1.md) released Feb/9/2019
- [v0.13.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.13.0.md) released Jan/14/2019
- [v0.12.3.4](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.3.4.md) released Dec/14/2018
- [v0.12.3.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.3.3.md) released Sep/19/2018
- [v0.12.3.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.3.2.md) released Jul/09/2018
- [v0.12.3.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.3.1.md) released Jul/03/2018
- [v0.12.2.3](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.2.3.md) released Jan/12/2018
- [v0.12.2.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.2.2.md) released Dec/17/2017
- [v0.12.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.2.md) released Nov/08/2017
- [v0.12.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.1.md) released Feb/06/2017
- [v0.12.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.12.0.md) released Aug/15/2015
- [v0.11.2](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.11.2.md) released Mar/04/2015
- [v0.11.1](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.11.1.md) released Feb/10/2015
- [v0.11.0](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.11.0.md) released Jan/15/2015
- [v0.10.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.10.0.md) released Sep/25/2014
- [v0.9.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.9.0.md) released Mar/13/2014