In this release, we are taking a significant step towards enhancing the Dash wallet's usability by enabling Hierarchical
Deterministic (HD) wallets by default. This change aligns the behavior of `dashd` and `dash-qt` with the previously
optional `-usehd=1` flag, making HD wallets the standard for all users.
While HD wallets are now enabled by default to improve user experience, Dash Core still allows for the creation of
non-HD wallets by using the `-usehd=0` flag. However, users should be aware that this option is intended for legacy
support and will be removed in future releases. Importantly, even with an HD wallet, users can still import non-HD
private keys, ensuring flexibility in managing their funds.
## Windows release signing
Windows releases are signed by a new certificate that replaces the expired one used previously.
## Removal of Non-Deterministic InstantSend
Legacy InstantSend was deprecated with the activation of Deterministic InstantSend, but we kept the underlying logic for some time to ensure a smooth transition. v20.1 finally removes all Legacy InstantSend logic and will no longer support sending and receiving islock p2p messages and inv p2p messages with id 30. Such messages will be seen as unknown by v20.1 nodes. The protocol version was incremented to 70231 to indicate a change in network protocol. Please note that the -llmqinstantsend and -llmqtestinstantsend command line options have also been removed as part of this change.
## RPC changes
-`protx info`: It's now possible to get historical data at a specific block by providing its blockhash.
-`gettxchainlocks`: will now return the status `mempool` indicating whether the transaction is in the mempool.
or not.
- Exposed transaction version numbers are now treated as unsigned 16-bit integers instead of signed 16-bit integers.
This matches their treatment in consensus logic. Versions greater than 3 continue to be non-standard (matching previous
behavior of smaller than 1 or greater than 3 being non-standard). Note that this includes the joinpsbt command, which
combines partially-signed transactions by selecting the highest version number.
-`getpeerinfo`: now returns a `connection_type` field. This indicates the type of connection established with
the peer. It will return one of six options. For more information, see the `getpeerinfo` help documentation.
-`getpeerinfo`: now has additional `last_block` and `last_transaction` fields that return the UNIX epoch time
of the last block and the last valid transaction received from each peer.
-`getblockchaininfo`: now returns a new `time` field that provides the chain tip time.
-`fundrawtransaction` and `walletcreatefundedpsbt`: when used with the `lockUnspents` argument now lock manually
selected coins, in addition to automatically selected coins. Note that locked coins are never used in automatic coin
selection, but can still be manually selected.
-`testmempoolaccept`: returns `vsize` and a `fee` object with the `base` fee if the transaction passes
validation. The `testmempoolaccept` RPC now accepts multiple transactions (still experimental at the moment, API may be
unstable).
## Added RPCs
-`submitchainlock`: allows the submission of a ChainLock signature. Note: This RPC is whitelisted for the Platform
RPC user.
-`getassetunlockstatuses`: allows fetching of Asset Unlock txs by their withdrawal index. The RPC accepts an array
of indexes and an optional block height. The possible outcomes per each index are: `chainlocked`, `mined`, `mempooled`,
`unknown`. Note: If a specific block height is passed on request, then only `chainlocked` and `unknown` outcomes are
possible. This RPC is whitelisted for the Platform RPC user.
-`quorum dkginfo`: returns information about DKGs: `active_dkgs` and `next_dkg`.
-`getrawtransactionmulti`: allows requesting a batch of up to 100 raw transactions per request.