Skip to content

Commit e770c25

Browse files
docs: add v23.0.0 release notes and archive v22.1.3
1 parent ee41b18 commit e770c25

File tree

2 files changed

+345
-22
lines changed

2 files changed

+345
-22
lines changed

doc/release-notes.md

Lines changed: 218 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
# Dash Core version v22.1.3
1+
# Dash Core version v23.0.0
22

3-
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.
56

67
Please report bugs using the issue tracker at GitHub:
78

@@ -19,44 +20,239 @@ dashd/dash-qt (on Linux).
1920

2021
## Downgrade warning
2122

22-
### Downgrade to a version < v22.0.0
23+
### Downgrade to a version < v23.0.0
2324

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
2526
likely require a reindex.
2627

27-
# Release Notes
28+
# Notable changes
2829

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
3134

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+
-------------------------------------------------
3337

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.
3639

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)
3848

39-
Performance Improvements
40-
------------------------
49+
### Benefits
4150

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
4354

44-
Documentation Updates
55+
Other notable changes
4556
---------------------
4657

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
76+
`GET /rest/headers/<COUNT>/<BLOCK-HASH>.<bin|hex|json>` (deprecated)
77+
78+
For `/blockfilterheaders/`, use
79+
`GET /rest/blockfilterheaders/<FILTERTYPE>/<BLOCK-HASH>.<bin|hex|json>?count=<COUNT=5>` instead of
80+
`GET /rest/blockfilterheaders/<FILTERTYPE>/<COUNT>/<BLOCK-HASH>.<bin|hex|json>` (deprecated)
81+
82+
P2P and network changes
83+
-----------------------
84+
85+
- `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+
----------
48243

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)
50246

51247
See detailed [set of changes][set-of-changes].
52248

53249
# Credits
54250

55251
Thanks to everyone who directly contributed to this release:
56252

57-
- Jorge Maldonado Ventura
58-
- Konstantin Akimov
59-
- PastaPastaPasta
253+
-
254+
-
255+
-
60256

61257
As well as everyone that submitted issues, reviewed pull requests and helped
62258
debug the release candidates.
@@ -122,4 +318,4 @@ These releases are considered obsolete. Old release notes can be found here:
122318
- [v0.10.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.10.0.md) released Sep/25/2014
123319
- [v0.9.x](https://github.com/dashpay/dash/blob/master/doc/release-notes/dash/release-notes-0.9.0.md) released Mar/13/2014
124320

125-
[set-of-changes]: https://github.com/dashpay/dash/compare/v22.1.2...dashpay:v22.1.3
321+
[set-of-changes]: https://github.com/dashpay/dash/compare/v22.1.3...dashpay:v23.0.0

0 commit comments

Comments
 (0)