Releases: dashpay/dash
Dash Core v0.16.0.0 RC2
This is a release candidate and not meant for production. It is only meant for testnet deployments.
This release was signed by keybase.io/codablock.
Dash Core v0.16.0.0 RC1
This is a release candidate and not meant for production. It is only meant for testnet deployments.
This release was signed by keybase.io/pasta.
Dash Core 0.15.0.0 Release Announcement
We are happy to announce the release of 0.15.0.0. This release includes binaries, which can be downloaded above.
About this Release
Dash Core 0.15.0.0 is the first major release of the Dash Core 0.15.x.x series.
This major release contains new features, improvements and bugfixes and we consider this a stable release.
Notable changes
Removal of the p2p alert system
The p2p alert system was designed to send messages to all nodes supporting it by someone who holds
so called alert keys to notify such nodes in case of severe network issues. This version removes the alert
p2p message and --alert
option. Internal alerts, partition detection warnings and the --alertnotify
option features remain.
Removal of the legacy InstantSend system
Version 0.14 introduced the new LLMQ-based InstantSend system which is designed to be much more scalable than the legacy one without sacrificing security. The new system also allows all transactions to be treated as InstantSend transactions. The legacy system was disabled together with the successful deployment of ChainLocks, but we had to keep supporting the legacy system for a while to ensure a smooth transition period. This version finally drops the legacy system completely.
Read more about ChainLocks: https://github.com/dashpay/dips/blob/master/dip-0008.md
Read more about LLMQ-based InstantSend: https://github.com/dashpay/dips/blob/master/dip-0010.md
Sporks
The security level of ChainLocks and LLMQ-based InstantSend made sporks SPORK_5_INSTANTSEND_MAX_VALUE
and SPORK_12_RECONSIDER_BLOCKS
obsolete, so they are removed now. Sporks SPORK_15_DETERMINISTIC_MNS_ENABLED
, SPORK_16_INSTANTSEND_AUTOLOCKS
and SPORK_20_INSTANTSEND_LLMQ_BASED
have no code logic behind them anymore because they were used as part of the DIP0003, DIP0008 and DIP0010 activation process which is finished now. They are still kept and relayed only to ensure smooth operation of v0.14 clients and will be removed in some future version.
Mempool sync improvements
Nodes joining the network will now try to sync their mempool from other v0.15+ peers via the mempool
p2p message. This behaviour can be disabled via the new --syncmempool
option. Nodes serving such requests will now also push inv
p2p messages for InstandSend locks which are held for transactions in their mempool. These two changes should help new nodes to quickly catchup on start and detect any potential double-spend as soon as possible. This should also help wallets to slightly improve UX by showing the correct status of unconfirmed transactions locked via InstandSend, if they were sent while the receiving wallet was offline. Note that bloom-filters still apply to such inv
messages, just like they do for transactions and locks that are relayed on a regular basis.
PrivateSend improvements
This version decouples the so called "Lite Mode" and client-side PrivateSend mixing, which allows client-side mixing on pruned nodes running with --litemode
option. Such nodes will have to also specify the newly redefined --enableprivatesend
option. Non-prunned nodes do not have to do this but they can use --enableprivatesend
option to disable mixing completely instead. Please note that specifying this option does not start mixing automatically anymore (which was the case in previous versions). To automatically start mixing, use the new --privatesendautostart
option in addition to --enableprivatesend
. Additionally, PrivateSend can always be controlled with the privatesend
RPC.
Thanks to LLMQ-based InstantSend and its ability to lock chains of unconfirmed transactions (and not only a single one like in the legacy system), PrivateSend mixing speed has improved significantly. In such an environment Liquidity Provider Mode, which was introduced a long time ago to support mixing volume, is no longer needed and is removed now. As such the --liquidityprovider
option is not available anymore.
Some other improvements were also introduced to speed up mixing, e.g. by joining more queues or dropping potential malicious mixing participants faster by checking some rules earlier etc. Lots of related code was refactored to further improve its readability, which should make it easier for someone to re-implement PrivateSend correctly in other wallets if there is a desire to do so.
Wallet changes
Wallet internals were optimized to significantly improve performance which should be especially notable for huge wallets with tens of thousands of transactions or more. The GUI for such wallets should be much more responsive too now.
Running Masternodes from local wallets was deprecated a long time ago and starting from this version we disable wallet functionality on Masternodes completely.
GUI changes
The Qt GUI went through a refresh to follow branding color guides and to make it feel lighter. All old themes besides the Traditional one (the one with a minimal styling) were removed and instead a new Dark theme was added.
In this version we made a lot of optimizations to remove various lags and lockups, the GUI in general should feel much more smoother now, especially for huge wallets or when navigating through the masternode list. The latter has a few new columns (collateral, owner and voting addresses) which give more options to filter and/or sort the list. All issues with hi-dpi monitors should also be fixed now.
The "Send" popup dialog was slightly tweaked to improve the language and provide a bit more information about inputs included in the transaction, its size and the actual resulting fee rate. It will also show the number of inputs a PrivateSend transaction is going to consume and display a warning regarding sender privacy if this number is 10 or higher.
Changes in regtest and devnet p2p/rpc ports
Default p2p and rpc ports for devnets and regtest were changed to ensure their consistency and to avoid
any potential interference with bitcoin's regtests. New default p2p/rpc ports for devnet are 19799/19798,
for regtest - 19899/19898 respectively.
ZMQ changes
Added two new messages rawchainlocksig
and rawtxlocksig
which return the raw data of the block/transaction concatenated with the corresponding clsig
/islock
message respectively.
Crash reports and stack traces
Binaries built with Gitian (including all official releases) will from now on always have crash reports and
crash hooks enabled. This means, that all binaries will print some information about the stack trace at the
time of a crash. If no debug information is present at crash time (which is usually the case), the binaries
will print a line that looks like this:
2020-01-06 14:41:08 Windows Exception: EXCEPTION_ACCESS_VIOLATION
No debug information available for stacktrace. You should add debug information and then run:
dashd.exe -printcrashinfo=bvcgc43iinzgc43ijfxgm3yba....
If you encounter such a crash, include these lines when you report the crash and we will be able to debug it
further. Anyone interested in running the specified -printcrashinfo
command can do so after copying the debug info file from the Gitian build to the same place where the binary is located. This will then print a detailed stack trace.
RPC changes
There are a few changes in existing RPC interfaces in this release:
- no more
instantsend
field in various RPC commands use-IS
,use_is
andinstantsend
options are deprecated in various RPC commands and have no effect anymore- added new
merkleRootQuorums
field ingetblock
RPC results - individual Dash-specific fields which were used to display soft-fork progress in
getblockchaininfo
are replaced with the backportedstatistics
object privatesend_balance
field is shown in all related RPC results regardless of the Lite Mode or PrivateSend state- added
pubKeyOperator
field for each masternode inquorum info
RPC response
There are also new RPC commands:
getbestchainlock
getmerkleblocks
getprivatesendinfo
getpoolinfo
was deprecated in favor of getprivatesendinfo
and no longer returns any data.
There are also new RPC commands backported from Bitcoin Core 0.15:
abortrescan
combinerawtransaction
getblockstats
getchaintxstats
listwallets
logging
uptime
Make sure to check Bitcoin Core 0.15 release notes in a section below for more RPC changes.
See help command
in rpc for more info.
Command-line options
Changes in existing cmd-line options:
--enableprivatesend
option has a new meaning now, see PrivateSend section for more info
New cmd-line options:
--printcrashinfo
--syncmempool
--privatesendautostart
Few cmd-line options are no longer supported:
--alerts
--masternode
, deprecated, specifying--masternodeblsprivkey
option alone is enough to enable masternode mode now--liquidityprovider
--enableinstantsend
, dropped due to removal of the Legacy InstantSend
Make sure to check Bitcoin Core 0.15 release notes in a section below for more changes in command-line options.
See Help -> Command-line options
in Qt wallet or dashd --help
for more info.
Build system
This version always includes stacktraces in binaries now, --enable-stacktraces
option is no longer available. Instead you can choose if you want to hook crash reporting into various types of crashes by using --enable-crash-hooks
option (default is no
). When using this option on macOS make sure to build binaries with make -C src osx_debug
.
Backports from Bitcoin C...
Dash Core v0.15.0.0 RC4
This is a release candidate and not meant for production. It is only meant for testnet deployments.
Dash Core v0.15.0.0 RC3
This is a release candidate and not meant for production. It is only meant for testnet deployments.
Dash Core 0.14.0.5 Release Announcement
We are happy to announce the release of 0.14.0.5. This release includes binaries, which can be downloaded above.
About this Release
Dash Core 0.14.0.5 is a minor release of the Dash Core 0.14.0.x series.
This is a new minor version release, bringing various bugfixes and improvements. We consider this a stable release. We suggest every node (including masternodes and non-masternode) operator to upgrade to 0.14.0.5 as this release contains a fix for a serious DoS vector.
Notable changes
Fix for a DoS vector
This release fixes a serious DoS vector which allows to cause memory exhaustion until the point of out-of-memory related crashes. We highly recommend upgrading all nodes. Thanks to Bitcoin ABC developers for finding and reporting this issue to us.
Better handling of non-locked transactions in mined blocks
We observed multiple cases of ChainLocks failing on mainnet. We tracked this down to a situation where PrivateSend mixing transactions were first rejected by parts of the network (0.14.0.4 nodes) while other parts (<=0.14.0.3) accepted the transaction into the mempool. This caused InstantSend locking to fail for these transactions, while non-upgraded miners still included the transactions into blocks after 10 minutes which in its turn caused blocks to not get ChainLocked for at least 10 minutes. This release improves an already existent fallback mechanism (retroactive InstantSend locking) to also work for transaction which are already partially known in the network. This should cause ChainLocks to succeed in such situations.
Credits
Thanks go out to all Dash Core contributors, everyone who submitted issues, reviewed pull requests or helped translating on Transifex and also to Bitcoin Core Developers.
Dash Core 0.14.0.4 Release Announcement
We are happy to announce the release of 0.14.0.4. This release includes binaries, which can be downloaded above.
About this Release
Dash Core 0.14.0.4 is a minor release of the Dash Core 0.14.0.x series.
This is a new minor version release, bringing various bugfixes and improvements. We consider this a stable release. We suggest every masternode operator to upgrade to 0.14.0.4 as this release contains multiple improvements in regard to mempool consistency and orphan handling, which is important for InstantSend stability. These fixes and improvements are the results of the stress tests which were performed by an unknown actor in the last few weeks.
We also suggest to upgrade regular nodes as this release also includes a fix to CVE-2017-18350.
Notable changes
Fix respends of freshly received InstantSend transactions
A bug in Dash Core caused respends to not work before a received InstantSend transaction was confirmed in at least one block. This is fixed in this release, so that InstantSend locked mempool transactions can be respent immediately in Dash Core (other wallets were not affected).
Deprecation of SPORK_16_INSTANTSEND_AUTOLOCKS
With the activation of SPORK_20_INSTANTSEND_LLMQ_BASED a few month ago, all transactions started to be locked via InstantSend, which already partly deprecated SPORK_16_INSTANTSEND_AUTOLOCKS. This release removes the last use of SPORK_16_INSTANTSEND_AUTOLOCKS, which caused InstantSend to stop working when the mempool got too large.
Improve orphan transaction limit handling
Instead of limiting orphan transaction by number of transaction, we limit orphans by total size in bytes now. This allows to have thousands of orphan transactions before hitting the limit.
Discrepancies in orphan sets between nodes and handling of those was one of the major limiting factors in
the stress tests performed by an unknown entity on mainnet.
Improve re-requesting for already known transactions
Previously, Dash would re-request old transactions even though they were already known locally. This happened when the outputs were respent very shortly after confirmation of the transaction. This lead to wrongly handling these transactions as orphans, filling up the orphan set and hitting limits very fast. This release fixes this for nodes which have txindex enabled, which is the case for all masternodes. Normal nodes (without txindex) can ignore the issue as they are not involved in active InstantSend locking.
Another issue fixed in this release is the re-requesting of transactions after an InstantSend lock invalidated a conflicting transaction.
Multiple improvements to PrivateSend
Multiple improvements to PrivateSend are introduced in this release, leading to faster mixing and more reasonable selection of UTXOs when sending PrivateSend funds.
Fix for CVE-2017-18350
Bitcoin silently implemented a hidden fix for CVE-2017-18350 in Bitcoin v0.15.1. This release of Dash Core includes a backport of this fix.
Credits
Thanks go out to all Dash Core contributors, everyone who submitted issues, reviewed pull requests or helped translating on Transifex and also to Bitcoin Core Developers.
Dash Core 0.14.0.3 Release Announcement
We are happy to announce the release of 0.14.0.3. This release includes binaries, which can be downloaded above.
About this Release
Dash Core 0.14.0.3 is a minor release of the Dash Core 0.14.0.x series.
This is a new minor version release, bringing various bugfixes and improvements. We consider this a stable release. We suggest every masternode operator to upgrade to 0.14.0.3 as this release contains multiple improvements in regard to disk-space usage and banning behavior. These fixes and improvements are the results of the stress tests which were performed by an unknown actor in the last few weeks.
Notable changes
Database space usage improvements
Version 0.13.0.0 introduced a new database (evodb) which is found in the datadir of Dash Core. It turned
out that this database grows quite fast when a lot of changes inside the deterministic masternode list happen,
which is for example the case when a lot PoSe punishing/banning is happening. Such a situation happened
immediately after the activation LLMQ DKGs, causing the database to grow a lot. This release introduces
a new format in which information in "evodb" is stored, which causes it grow substantially slower.
Version 0.14.0.0 also introduced a new database (llmq) which is also found in the datadir of Dash Core.
This database stores all LLMQ signatures for 7 days. After 7 days, a cleanup task removes old signatures.
The idea was that the "llmq" database would grow in the beginning and then stay at an approximately constant
size. The recent stress test on mainnet has however shown that the database grows too much and causes a risk of out-of-space situations. This release will from now also remove signatures when the corresponding InstantSend lock is fully confirmed on-chain (superseded by a ChainLock). This should remove >95% of all signatures from the database. After the upgrade, no space saving will be observed however as this logic is only applied to new signatures, which means that it will take 7 days until the whole "llmq" database gets to its minimum size.
DKG and LLMQ signing failures fixed
Recent stress tests have shown that masternodes start to ban each other under high load and specific situations. This release fixes this and thus makes it a highly recommended upgrade for masternodes.
MacOS: macOS: disable AppNap during sync and mixing
AppNap is disabled now when Dash Core is syncing/reindexing or mixing.
Signed binaries for Windows
This release is the first one to include signed binaries for Windows.
New RPC command: quorum memberof
This RPC allows you to verify which quorums a masternode is supposed to be a member of. It will also show
if the masternode succesfully participated in the DKG process.
More information about number of InstantSend locks
The debug console will now show how many InstantSend locks Dash Core knows about. Please note that this number does not necessarily equal the number of mempool transactions.
The "getmempoolinfo" RPC also has a new field now which shows the same information.
Credits
Thanks go out to all Dash Core contributors, everyone who submitted issues, reviewed pull requests or helped translating on Transifex and also to Bitcoin Core Developers.
Dash Core 0.14.0.2 Release Announcement
We are happy to announce the release of 0.14.0.2. This release includes binaries, which can be downloaded above.
About this Release
Dash Core 0.14.0.2 is a minor release of the Dash Core 0.14.0.x series.
This is a new minor version release, bringing various bugfixes and we consider this a stable release.
We suggest everyone to upgrade who encounters issues with initial sync or reindexes being very slow or crashing.
Notable changes
Performance improvements
Slow startup times were observed in older versions. This was due to sub-optimal handling of old
deterministic masternode lists which caused the loading of too many lists into memory. This should be
fixed now.
Fixed excessive memory use
Multiple issues were found which caused excessive use of memory in some situations, especially when
a full reindex was performed, causing the node to crash even when enough RAM was available. This should
be fixed now.
Fixed out-of-sync masternode list UI
The masternode tab, which shows the masternode list, was not always up-to-date as it missed some internal
updates. This should be fixed now.
Release Notes
You can find detailed release notes at https://github.com/dashpay/dash/blob/v0.14.0.2/doc/release-notes.md. The release notes also contain instructions and links to further documentation for masternode operators and miners.
Credits
Thanks go out to all Dash Core contributors, everyone who submitted issues, reviewed pull requests or helped translating on Transifex and also to Bitcoin Core Developers.
Dash Core 0.14.0.1 Release Announcement
Dash Core 0.14.0.1 Release Announcement
We are happy to announce the release of 0.14.0.1. This release includes binaries, which can be downloaded above.
About this Release
Dash Core 0.14.0.1 is a minor release of the Dash Core 0.14.0.x series.
This is a new minor version release, bringing various bugfixes and we consider this a stable release.
Notable changes
Fixed governance votes pruning for invalid masternodes
A community member reported a possible attack that involves DoSing masternodes to force the network
to prune all governance votes from this masternodes. This could be used to manipulate vote outcomes.
This vulnerability is currently not possible to execute as LLMQ DKGs and PoSe have not activated yet on
mainnet. This version includes a fix that requires to have at least 51% masternodes to upgrade to 0.14.0.1, after which superblock trigger voting will automatically fix the discrepancies between old and new nodes. This also means that we will postpone activation of LLMQ DKGs and thus PoSe until at least 51% of masternodes have upgraded to 0.14.0.1.
Fixed a rare memory/db leak in LLMQ based InstantSend
We fixed a rare memory/db leak in LLMQ based InstantSend leak which would only occur when reorganizations
would happen.
Release Notes
You can find detailed release notes at https://github.com/dashpay/dash/blob/v0.14.0.1/doc/release-notes.md. The release notes also contain instructions and links to further documentation for masternode operators and miners.
Credits
Thanks go out to all Dash Core contributors, everyone who submitted issues, reviewed pull requests or helped translating on Transifex and also to Bitcoin Core Developers.