You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a new minor version release, bringing various bugfixes and performance improvements.
4
-
This release is **optional** for all nodes, although recommended.
3
+
This is a new major version release, bringing new features, various bugfixes and other improvements.
4
+
This release is **mandatory** for all masternodes.
5
+
This release is optional but recommended for all other nodes.
5
6
6
7
Please report bugs using the issue tracker at GitHub:
7
8
@@ -19,44 +20,239 @@ dashd/dash-qt (on Linux).
19
20
20
21
## Downgrade warning
21
22
22
-
### Downgrade to a version < v22.0.0
23
+
### Downgrade to a version < v23.0.0
23
24
24
-
Downgrading to a version older than v22.0.0 may not be supported, and will
25
+
Downgrading to a version older than v23.0.0 may not be supported, and will
25
26
likely require a reindex.
26
27
27
-
# Release Notes
28
+
# Notable changes
28
29
29
-
Bug Fixes
30
-
----------
30
+
EvoDB migration
31
+
---------------
32
+
33
+
This release introduces a new internal format for masternode state data to support extended addresses and make future updates of this data seamless. Nodes will automatically migrate to the new format. Downgrading to an earlier version would require a full reindex. #6813
31
34
32
-
- Fixed crash when processing invalid masternode payment destinations, replacing unsafe assertion with proper error handling (dash#6740).
35
+
Breaking Change: Block Filter Index Format Update
36
+
-------------------------------------------------
33
37
34
-
RPC and Logging Improvements
35
-
----------------------------
38
+
The compact block filter index format has been updated to include Dash special transaction data, providing feature parity with bloom filters for SPV client support. This change is incompatible with existing blockfilter indexes. Existing blockfilter indexes will automatically be re-created with the new version.
36
39
37
-
- Fixed misleading error logs that were triggered by legitimate RPC queries for non-existent transaction data, reducing log noise and preventing false alarms (dash#6744).
40
+
- The blockfilter index now includes fields from Dash special transactions:
41
+
- ProRegTx (masternode registration)
42
+
- ProUpServTx (masternode service updates)
43
+
- ProUpRegTx (masternode operator updates)
44
+
- ProUpRevTx (masternode revocation)
45
+
- AssetLockTx (platform credit outputs)
46
+
- A versioning system has been added to detect incompatible indexes on startup
47
+
- The index version is now 2 (previously unversioned)
38
48
39
-
Performance Improvements
40
-
------------------------
49
+
### Benefits
41
50
42
-
- Optimized versionbits calculation to avoid unnecessary computations during block operations, significantly improving performance during blockchain reorganizations (dash#6632).
51
+
- SPV clients can now detect and track Dash-specific transactions
52
+
- Feature parity between bloom filters and compact block filters
53
+
- Protection against serving incorrect filter data to light clients
43
54
44
-
Documentation Updates
55
+
Other notable changes
45
56
---------------------
46
57
47
-
- Updated translation documentation with current Transifex links and fixed typos to help contributors properly access translation resources (dash#6739).
58
+
* Dash Core will no longer permit the registration of new legacy scheme masternodes after the deployment of the v24
59
+
fork. Existing basic scheme masternodes will also be prohibited from downgrading to the legacy scheme after the
60
+
deployment is active. (#6729)
61
+
* To help prevent fingerprinting transactions created by the Dash Core wallet, change output
62
+
amounts are now randomized. (#6685)
63
+
* Dash Core will no longer migrate EvoDb databases generated in v19 and v20, users upgrading
64
+
from these versions are recommended to run `-reindex` to rebuild all databases and indexes. (#6579)
65
+
66
+
Updated REST APIs
67
+
-----------------
68
+
69
+
- The `/headers/` and `/blockfilterheaders/` endpoints have been updated to use
70
+
a query parameter instead of path parameter to specify the result count. The
71
+
count parameter is now optional, and defaults to 5 for both endpoints. The old
72
+
endpoints are still functional, and have no documented behaviour change. (#24098)
73
+
74
+
For `/headers`, use
75
+
`GET /rest/headers/<BLOCK-HASH>.<bin|hex|json>?count=<COUNT=5>` instead of
-`MIN_PEER_PROTO_VERSION` has been bumped to `70221`. (#6877)
86
+
-`cycleHash` field in `isdlock` message will now represent a DKG cycle starting block of the signing quorum instead of a DKG cycle starting block corresponding to the current chain height. While this is fully backwards compatible with older versions of Dash Core, other implementations might not be expecting this, so the P2P protocol version was bumped to 70237. (#6608)
87
+
- UNIX domain sockets can now be used for proxy connections. Set `-onion` or `-proxy` to the local socket path with the prefix `unix:` (e.g. `-onion=unix:/home/me/torsocket`). UNIX socket paths are now accepted for `-zmqpubrawblock` and `-zmqpubrawtx` with the format `-zmqpubrawtx=unix:/path/to/file`. (#6634)
88
+
89
+
Updated RPCs
90
+
------------
91
+
92
+
* The keys `platformP2PPort` and `platformHTTPPort` have been deprecated for the following RPCs, `decoderawtransaction`,
93
+
`decodepsbt`, `getblock`, `getrawtransaction`, `gettransaction`, `masternode status` (only the `dmnState` key),
94
+
`protx diff`, `protx listdiff` and has been replaced with the key `addresses`.
95
+
* The deprecated key is still available without additional runtime arguments but is liable to be removed in future versions
96
+
of Dash Core. (#6811)
97
+
98
+
*`protx revoke` will now use the legacy scheme version for legacy masternodes instead of the defaulting to the
99
+
highest `ProUpRevTx` version. (#6729)
100
+
101
+
* The RPCs `protx register_legacy`, `protx register_fund_legacy`, `protx register_prepare_legacy` and
102
+
`protx update_registrar_legacy` have been deprecated in Dash Core v23 and may be removed in a future version.
103
+
They can be re-enabled with the runtime argument `-deprecatedrpc=legacy_mn`.
104
+
105
+
* The argument `legacy` in `bls generate` has been deprecated in Dash Core v23 and may be ignored in a future version.
106
+
It can be re-enabled with the runtime argument `deprecatedrpc=legacy_mn`. (#6723)
107
+
108
+
* A new optional field `submit` has been introduced to the `protx revoke`, `protx update_registrar`, `protx update_service` RPCs. It behaves identically to `submit` in `protx register` or `protx register_fund`. (#6720)
109
+
110
+
* The `instantsendtoaddress` RPC was deprecated in Dash Core v0.15 and is now removed. (#6686)
111
+
112
+
* The input field `ipAndPort` has been renamed to `coreP2PAddrs`.
113
+
*`coreP2PAddrs` can now, in addition to accepting a string, accept an array of strings, subject to validation rules.
114
+
115
+
* The key `service` has been deprecated for some RPCs (`decoderawtransaction`, `decodepsbt`, `getblock`, `getrawtransaction`,
116
+
`gettransaction`, `masternode status` (only for the `dmnState` key), `protx diff`, `protx listdiff`) and has been replaced
117
+
with the key `addresses`.
118
+
* This deprecation also extends to the functionally identical key, `address` in `masternode list` (and its alias, `masternodelist`).
119
+
* The deprecated key is still available without additional runtime arguments but is liable to be removed in future versions
120
+
of Dash Core.
121
+
* This change does not affect `masternode status` (except for the `dmnState` key) as `service` does not represent a payload
122
+
value but the external address advertised by the active masternode. (#6665)
123
+
124
+
* The input field `platformP2PPort` has been renamed to `platformP2PAddrs`. In addition to numeric inputs (i.e. ports),
125
+
the field can now accept a string (i.e. an addr:port pair) and arrays of strings (i.e. multiple addr:port pairs),
126
+
subject to validation rules.
127
+
128
+
* The input field `platformHTTPPort` has been renamed to `platformHTTPSAddrs`. In addition to numeric inputs (i.e. ports),
129
+
the field can now accept a string (i.e. an addr:port pair) and arrays of strings (i.e. multiple addr:port pairs),
130
+
subject to validation rules.
131
+
132
+
* The field `addresses` will now also report on platform P2P and platform HTTPS endpoints as `addresses['platform_p2p']`
133
+
and `addresses['platform_https']` respectively.
134
+
* On payloads before extended addresses, if a masternode update affects `platformP2PPort` and/or `platformHTTPPort`
135
+
but does not affect `netInfo`, `protx listdiff` does not contain enough information to report on the masternode's
136
+
address and will report the changed port paired with the dummy address `255.255.255.255`.
137
+
138
+
This does not affect `protx listdiff` queries where `netInfo` was updated or diffs relating to masternodes that
139
+
have upgraded to extended addresses.
140
+
141
+
* If the masternode is eligible for extended addresses, `protx register{,_evo}` and `register_fund{,_evo}` will continue
142
+
allowing `coreP2PAddrs` to be left blank, as long as `platformP2PAddrs` and `platformHTTPSAddrs` are also left blank.
143
+
* Attempting to populate any three address fields will make populating all fields mandatory.
144
+
* This does not affect nodes ineligible for extended addresses (i.e. all nodes before fork activation or legacy BLS nodes)
145
+
and they will have to continue specifying `platformP2PAddrs` and `platformHTTPSAddrs` even if they wish to keep
146
+
`coreP2PAddrs` blank.
147
+
148
+
* If the masternode is eligible for extended addresses, `protx register{,_evo}` and `register_fund{,_evo}` will no longer
149
+
default to the core P2P port if a port is not specified in the addr:port pair. All ports must be specified explicitly.
150
+
* This does not affect nodes ineligible for extended addresses, continuing to default to the core P2P port if provided an
151
+
addr without a port.
152
+
153
+
*`protx register{,_evo}` and `register_fund{,_evo}` will continue to allow specifying only the port number for `platformP2PAddrs`
154
+
and `platformHTTPSAddrs`, pairing it with the address from the first `coreP2PAddrs` entry. This mirrors existing behavior.
155
+
* This method of entry may not be available in future releases of Dash Core and operators are recommended to switch over to
156
+
explicitly specifying (arrays of) addr:port strings for all address fields. (#6666)
157
+
158
+
* When reporting on extended address payloads, `platformP2PPort` and `platformHTTPPort` will read the port value from
159
+
`netInfo[PLATFORM_P2P][0]` and `netInfo[PLATFORM_HTTPS][0]` respectively as both fields are subsumed into `netInfo`.
160
+
* If `netInfo` is blank (which is allowed by ProRegTx), `platformP2PPort` and `platformHTTPPort` will report `-1` to indicate
161
+
that the port number cannot be determined.
162
+
*`protx listdiff` will not report `platformP2PPort` or `platformHTTPPort` if the legacy fields were not updated (i.e.
163
+
changes to `netInfo` will not translate into reporting). This is because `platformP2PPort` or `platformHTTPPort` have
164
+
dedicated diff flags and post-consolidation, all changes are now affected by `netInfo`'s diff flag.
165
+
166
+
To avoid the perception of changes to fields that not serialized by extended address payloads, data from `netInfo` will
167
+
not be translated for this RPC call. (#6666)
168
+
169
+
*`quorum rotationinfo` will now expect the third param to be a JSON array. (#6628)
170
+
171
+
*`getislocks` will now return request `id` for each InstantSend Lock in results. (#6607)
172
+
173
+
*`coinjoin status` is a new RPC that reports the status message of all running mix sessions. `coinjoin start` will no longer
174
+
report errors from mix sessions; users are recommended to query the status using `coinjoin status` instead. (#6594)
175
+
176
+
* The RPCs `masternode current` and `masternode winner` were deprecated in Dash Core v0.17 and are now removed. The `getpoolinfo` RPC was deprecated in Dash Core v0.15 and is now removed. (#6567)
177
+
178
+
* The `-deprecatedrpc=addresses` configuration option has been removed. RPCs `gettxout`, `getrawtransaction`, `decoderawtransaction`, `decodescript`, `gettransaction verbose=true` and REST endpoints `/rest/tx`, `/rest/getutxos`, `/rest/block` no longer return the `addresses` and `reqSigs` fields, which were previously deprecated in 21.0. (#22650)
179
+
180
+
* The `getblock` RPC command now supports verbosity level 3 containing transaction inputs `prevout` information. The existing `/rest/block/` REST endpoint is modified to contain this information too. Every `vin` field will contain an additional `prevout` subfield. (#22918)
181
+
182
+
* A new RPC `newkeypool` has been added, which will flush (entirely clear and refill) the keypool. (#23093)
183
+
184
+
* The return value of the `pruneblockchain` method had an off-by-one bug and now returns the height of the last pruned block as documented. (#24629)
185
+
186
+
* The `listdescriptors` RPC now includes an optional coinjoin field to identify CoinJoin descriptors. (#6835)
187
+
188
+
Updated settings
189
+
----------------
190
+
191
+
- BIP157 compact block filters are now automatically enabled for masternodes. This improves privacy for light clients
192
+
connecting to masternodes and enables better support for pruned nodes. When a node is configured as a masternode
193
+
(via `-masternodeblsprivkey`), both `-peerblockfilters` and `-blockfilterindex=basic` are automatically enabled.
194
+
Note that this feature requires approximately 1GB+ of additional disk space for the block filter index.
195
+
Regular nodes keep the previous defaults (disabled). Masternodes can still explicitly disable these features
196
+
if needed by setting `-peerblockfilters=0` or `-blockfilterindex=0` (#6711).
197
+
198
+
- Setting `-maxconnections=0` will now disable `-dnsseed` and `-listen` (users may still set them to override) (#6649).
199
+
200
+
- Ports specified in `-port` and `-rpcport` options are now validated at startup. Values that previously worked and were considered valid can now result in errors. (#6634)
201
+
202
+
Statistics
203
+
----------
204
+
205
+
- IPv6 hosts are now supported by the StatsD client.
206
+
-`-statshost` now accepts URLs to allow specifying the protocol, host and port in one argument.
207
+
- Specifying invalid values will no longer result in silent disablement of the StatsD client and will now cause errors at startup. (#6837)
208
+
209
+
- The arguments `-statsenabled`, `-statsns`, `-statshostname` have been removed. They were previously deprecated in v22.0 and will no longer be recognized on runtime. (#6505)
210
+
211
+
Build System
212
+
------------
213
+
214
+
GCC 11.1 or later, or Clang 16.0 or later, are now required to compile Dash Core. (#6389)
215
+
216
+
Command-line Options
217
+
--------------------
218
+
219
+
### Changes in Existing Command-line Options
220
+
221
+
-`-platform-user` removed in v23 (deprecated in v22 and never used by platform). (#6482)
222
+
223
+
Wallet
224
+
------
225
+
226
+
- Wallet passphrases and mnemonic passphrases may now contain null characters. (#6780#6792)
227
+
228
+
-`receivedby` RPCs now include coinbase transactions. Previously, the following wallet RPCs excluded coinbase transactions: `getreceivedbyaddress`, `getreceivedbylabel`, `listreceivedbyaddress`, `listreceivedbylabel`. The previous behaviour can be restored using `-deprecatedrpc=exclude_coinbase` (may be removed in a future release). A new option `include_immature_coinbase` (default=`false`) determines whether to account for immature coinbase transactions. (#6601)
229
+
230
+
### Mobile CoinJoin Compatibility
231
+
232
+
- Fixed an issue where CoinJoin funds mixed in Dash Android wallet were invisible when importing the mnemonic into Dash Core. Descriptor Wallets now include an additional default descriptor for mobile CoinJoin funds, ensuring seamless wallet migration and complete fund visibility across different Dash wallet implementations.
233
+
- This is a breaking change that increases the default number of descriptors from 2 to 3 on mainnet (internal, external, mobile CoinJoin) for newly created descriptor wallets only - existing wallets are unaffected. (#6835)
234
+
235
+
GUI changes
236
+
-----------
237
+
238
+
- Added governance proposal voting functionality to the Qt interface. Users with masternode voting keys can now vote on governance proposals directly from the governance tab via right-click context menu. Added masternode count display to governance tab showing how many masternodes the wallet can vote with. (#6690)
239
+
- Added a menu item to restore a wallet from a backup file. (#6648)
240
+
241
+
RPC Wallet
242
+
----------
48
243
49
-
# v22.1.3 Change log
244
+
-`unloadwallet` now fails if a rescan is in progress. (#6759)
245
+
-`gettransaction`, `listtransactions`, `listsinceblock` now return the `abandoned` field for all transactions. (#25158)
50
246
51
247
See detailed [set of changes][set-of-changes].
52
248
53
249
# Credits
54
250
55
251
Thanks to everyone who directly contributed to this release:
56
252
57
-
- Jorge Maldonado Ventura
58
-
- Konstantin Akimov
59
-
- PastaPastaPasta
253
+
-
254
+
-
255
+
-
60
256
61
257
As well as everyone that submitted issues, reviewed pull requests and helped
62
258
debug the release candidates.
@@ -122,4 +318,4 @@ These releases are considered obsolete. Old release notes can be found here:
122
318
-[v0.10.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.10.0.md) released Sep/25/2014
123
319
-[v0.9.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.9.0.md) released Mar/13/2014
0 commit comments