Releases: decred/decred-binaries
v2.0.5
Install
To install Decrediton desktop wallet, download, uncompress, and run Decrediton Linux AppImage or Decrediton Linux tar or Decrediton macOS amd64 or Decrediton macOS arm64 or Decrediton Windows.
To install the command-line tools, please see dcrinstall.
See decred-v2.0.5-manifest.txt and the other manifest files for SHA-256 hashes and the associated .asc signature files to confirm those hashes.
See README.md for more info on verifying the files.
Contents
dcrd v2.0.5
This is a patch release of dcrd which includes the following changes:
- Improved StakeShuffle mixing robustness against misbehaving peers
- Peers are no longer intermittently disconnected when serving factored polynomial data
Upgrade Required To Participate in StakeShuffle Mixing
Although upgrading to this latest release is not required for continued operation of the core network, it is required for anyone who wishes to participate in StakeShuffle mixing with the highest anonymity set guarantees and fastest matching.
Changelog
This patch release consists of 8 commits from 2 contributors which total to 8 files changed, 83 additional lines of code, and 56 deleted lines of code.
All commits since the last release may be viewed on GitHub here.
See dcrd's own release notes for a categorized breakdown of all commits since the last release.
Code Contributors (alphabetical order):
- Dave Collins
- Josh Rickmar
dcrwallet v2.0.5
This release includes fixes to increase the mixing reliability and improves startup syncing when operating in in SPV mode.
All mixing users should upgrade to this release to maintain the maximum anonymity set.
Bug fixes
-
When secrets are revealed in a mix, blame assignment is delayed until all expected messages for the current stage of the run have been received (decred/dcrd#3454).
-
A rare crash that could occur calculating mixing message jitter was fixed (decred/dcrd#3448).
-
A started but killed
csppsolver
child process is now detected. If this occurs, wallets will fall back to depending on other peers' published root solutions and will stop advertising root solving capabilities to other peers (decred/dcrd#3451). -
A missing check that published roots in the mixing protocol are in the proper order was added (decred/dcrd#3453).
-
When mixed tickets are purchased using the
purchasetickets
JSON-RPC method, the mix change is returned to the configured change account (b22f59b3
). -
When mixing is disabled and no other voting account has been specified, voting addresses are derived from the purchasing account rather than the unset voting account (
bf73f3c2
). -
The
mixaccount
JSON-RPC method, which was unusable since the introduction of P2P mixing, was fixed (cb88e4f0
). -
The
--ticketsplitaccount
option, used when converting an unmixed ticketbuyer gradually over to a mixing buyer, was not being used since the introduction of P2P mixing (e45749aa
). -
The voting account, a required argument during mixed ticketbuying, is now always used when mixing is enabled, even when
UseVotingAccount
in a ticket purchasing request is not set true (c1b1ac0b
). -
A hang occuring at the end of initial SPV sync has been fixed (
7def7850
).
Other Improvements
-
Peers who send too few headers, which could slow down initial sync time, are disconnected (
59a40408
). -
Peers who send headers before being requested are disconnected earlier in the sync process (
58585aa5
). -
Peers who send headers that do not connect to the block locators are disconnected earlier in the sync process (
fdd9e0b2
). -
An error determining the block to rescan from is no longer a permanent ticket autobuyer failure (
8c660622
). -
Background mixing client operations are more reliably stopped when
dcrd
is disconnected in RPC sync mode (01f1e12e
). -
Compatibility with older VSP software has been improved (
3bbc7781
).
Changelog
The following lists all commits since dcrwallet v2.0.4:
563b6779
: [release-v2.0] version: Update for v2.0.55a0c93f7
: [release-v2.0] Update to latest mixing module7def7850
: [release-v2.0] spv: Accept cfilters from more peers.3bbc7781
: [release-v2.0] multi: Send empty VSP policy fields01f1e12e
: [release-v2.0] Add context wrapping for syncer disconnections45d78411
: [release-v2.0] rescan: add missing db update error checkc1b1ac0b
: [release-v2.0] Always use configured voting account when mixinge45749aa
: [release-v2.0] Use correct account for mixed ticket split txns.8c660622
: [release-v2.0] ticketbuyer: Dont terminate if RescanPoint fails.cb88e4f0
: [release-v2.0] jsonrpc: Allow mixaccount RPC to actually mix.bf73f3c2
: [release-v2.0] wallet: Use purchase acct for voting if not mixingb22f59b3
: [release-v2.0] jsonrpc: Use correct change account when mixing.fdd9e0b2
: [release-v2.0] p2p: Move check for getheaders locators earlier in the call58585aa5
: [release-v2.0] p2p: Move headers requested check earlier in the call59a40408
: [release-v2.0] p2p: Disconnect from peers that sent too few headers
Code Contributors (alphabetical order):
- David Hill (@dajohi)
- Matheus Degiovani (@matheusd)
- Jamie Holdstock (@jholdstock)
- @JoeGruffins
- Josh Rickmar (@jrick)
Decrediton v2.0.5
This release solely resolves an issue in the underlying dcrwallet software as well as updating to DCRDEX 1.0.2.
Changelog
All commits since the last release may be viewed on GitHub here.
Code Contributors (alphabetical order):
- Alex Yocom-Piatt (@alexlyp)
- @buck54321
- @dev-warrior
v2.0.4
Install
To install Decrediton desktop wallet, download, uncompress, and run
Decrediton Linux AppImage or Decrediton Linux tar or Decrediton macOS amd64 or Decrediton macOS arm64 or Decrediton Windows.
To install the command-line tools, please see dcrinstall.
See decred-v2.0.4-manifest.txt and the other manifest files for SHA-256 hashes and the associated .asc signature files to confirm those hashes.
See README.md for more info on verifying the files.
Contents
dcrd v2.0.4
This is a patch release of dcrd which includes the following changes:
- Improved session formation for StakeShuffle mix transactions
- Support for Internationalized Domain Names (IDNs) in hostnames
- StakeShuffle mixing performance enhancements
Changelog
This patch release consists of 14 commits from 3 contributors which total to 17 files changed, 201 additional lines of code, and 97 deleted lines of code.
All commits since the last release may be viewed on GitHub here.
Code Contributors (alphabetical order):
- Dave Collins
- Jamie Holdstock
- Josh Rickmar
dcrwallet v2.0.4
This release includes improvements to the mixing session agreement, along with various bug fixes and minor performance improvements.
Bug Fixes
-
An issue where SPV wallets would stall block processing the latest block and only resume requesting additional new blocks after the next block is announced was fixed (
39fd48b8
). -
A potential crash in the VSP client was removed (
2c7e4dcf
). -
A deadlock in the mixing client that could trigger after reconnecting to a restarted dcrd was fixed (dcrd/3401).
-
Automatic RPC TLS certificate generation no longer errors when the local hostname contains non-ASCII Unicode characters (dcrd#3432).
Other Improvements
-
Mix session agreement was improved by ignoring key exchange messages received too early before the calculated epoch time (dcrd/3403).
-
Mix session agreement was improved by only considering a mixing identity's most recent key exchange messages (dcrd/3404).
Changelog
All commits since the last release may be viewed on GitHub here.
The following lists all commits since dcrwall
Code Contributors (alphabetical order):
- Matheus Degiovani (@matheusd)
- Jamie Holdstock (@jholdstock)
- Josh Rickmar (@jrick)
Decrediton v2.0.4
This release of Decrediton includes numerous dependency updates that were flagged as possible vulnerabilities, as well
as an update to the DCRDEX infrastructure for the recent v1.0.0 Bison Wallet release.
Changelog
All commits since the last release may be viewed on GitHub
here.
Code Contributors (alphabetical order):
- Alex Yocom-Piatt (@alexlyp)
- @buck54321
v2.0.3
Install
To install Decrediton desktop wallet, download, uncompress, and run
Decrediton Linux AppImage or Decrediton Linux tar or Decrediton macOS amd64 or Decrediton macOS arm64 or Decrediton Windows.
To install the command-line tools, please see dcrinstall.
See decred-v2.0.3-manifest.txt and the other manifest files for SHA-256 hashes and the associated .asc signature files to confirm those hashes.
See README.md for more info on verifying the files.
Contents
dcrd v2.0.3
This is a patch release of dcrd which includes the following changes:
- Improved sender privacy for transactions and mix messages via randomized
announcements - Nodes now prefer to maintain at least three mixing-capable outbound connections
- Recent transactions and mix messages will now be available to serve for longer
- Reduced memory usage during periods of lower activity
- Mixing-related performance enhancements
Changelog
This patch release consists of 26 commits from 2 contributors which total to 37
files changed, 4527 additional lines of code, and 499 deleted lines of code.
All commits since the last release may be viewed on GitHub
here.
See dcrd's own release notes for a categorized breakdown of all commits since the last release.
Code Contributors (alphabetical order):
- Dave Collins
- Josh Rickmar
dcrwallet v2.0.3
This release includes several important privacy and performance improvements for mixing users. All 2.0.2 users are advised to upgrade.
Bug Fixes
- Ending the initial wallet setup prompts before the birthday prompt has been completed will no longer panic the wallet (
37e81f87
).
Other Improvements
-
The mixing client was modified to space out the publishing of pair request messages throughout the entire duration up until 30s before and after the epoch, and to add a small random delay before the broadcast of all messages. Together these changes reduce the ability to deanonymize which messages belong to the same wallets depending on when they were seen or received (dcrd/3388).
-
In SPV mode, a uniform random 100-500ms of per-peer delay is added to each inventory broadcast. This also has the effect of batching recent inventory into fewer
inv
messages (fee60562
). -
In SPV mode, a minimum of 3 (out of 8 total) full node peers which implement the mix message broadcasting protocol version will be targeted. If too many connected peers do not support this protocol version, they will be disconnected for other peers which do (
7830dd64
).
Changelog
All commits since the last release may be viewed on GitHub here.
Code Contributors (alphabetical order):
- @JoeGruffins
- Josh Rickmar (@jrick)
v2.0.2
Install
To install Decrediton desktop wallet, download, uncompress, and run Decrediton Linux AppImage or Decrediton Linux tar or Decrediton macOS amd64 or Decrediton macOS arm64 or Decrediton Windows.
To install the command-line tools, please see dcrinstall.
See decred-v2.0.2-manifest.txt and the other manifest files for SHA-256 hashes and the associated .asc signature files to confirm those hashes.
See README.md for more info on verifying the files.
Contents
dcrd v2.0.2
This is a patch release of dcrd which includes the following key changes:
- Nodes now prefer to maintain at least one mixing-capable outbound connection
- Peers will no longer potentially be improperly banned due to missing mix messages
- Mixing messages that are not available will now be obtained from elsewhere
- Improves mixing message availability during network propagation
Changelog
This patch release consists of 26 commits from 3 contributors which total to 18 files changed, 468 additional lines of code, and 451 deleted lines of code.
All commits since the last release may be viewed on GitHub here.
See dcrd's own release notes for a categorized breakdown of all commits since the last release.
Code Contributors (alphabetical order):
- Dave Collins
- David Hill
dcrwallet v2.0.2
This release includes several important bug fixes for mixing users. All 2.0.1 users are advised to ugrade.
Bug Fixes
-
The mixing client will no longer attempt to create mixes that, when signed, exceed the standardness rules set by dcrd mempool (dcrd/3338).
-
A change was made to how reruns are handled after blame is assigned. Rather than incrementing the run, a new session is formed. This reduces unexpected behavior by requiring the stricter message acceptance checks that were only performed during run-0 (dcrd/3343).
Other improvements
-
Peers who send mix messages when disablerelaytx is enabled (this includes dcrd version 2.0.0, but not 2.0.1 or 2.0.2) will be temporarily banned (
48c59f55
). -
Debug logging of mixing activity has been improved through changes in both the mixpool and mixclient packages (dcrd/3326, dcrd/3331, dcrd/3333, dcrd/3339, dcrd/3340).
Changelog
All commits since the last release may be viewed on GitHub here.
Code Contributors (alphabetical order):
v2.0.1
Install
To install Decrediton desktop wallet, download, uncompress, and run
Decrediton Linux AppImage or Decrediton Linux tar or Decrediton macOS amd64 or
Decrediton macOS arm64 or Decrediton Windows.
To install the command-line tools, please see dcrinstall.
See decred-v2.0.1-manifest.txt and the other manifest files for SHA-256 hashes and the associated .asc signature files to confirm those hashes.
See README.md for more info on verifying the files.
Contents
dcrd v2.0.1
This is a patch release of dcrd which includes the following key changes:
- Provides a new JSON-RPC API method named
getmixmessage
that can be used to query decentralized StakeShuffle mixing messages - No longer relays mixing messages when transaction relay is disabled
- Transaction outputs with one confirmation may now be used as part of a mix
- Improves best network address candidate selection
- More consistent logging of banned peers along with the reason they were banned
Changelog
This patch release consists of 19 commits from 3 contributors which total to 18 files changed, 388 additional lines of code, and 187 deleted lines of code.
All commits since the last release may be viewed on GitHub here.
See dcrd's own release notes for a categorized breakdown of all commits since the last release.
Code Contributors (alphabetical order):
- Dave Collins
- David Hill
- Josh Rickmar
dcrwallet v2.0.1
This release includes several important bug fixes for mixing users. All 2.0.0 users are advised to ugrade.
Bug Fixes
-
A panic that could be caused from a reconnecting RPC link to
dcrd
when mixing is enabled was fixed (9a954c35
). -
The initial mixing pair request sync in RPC syncing mode has been changed to operate more similarly to how it is done in SPV mode, by watching at least a full epoch for peers sending key exchange messages, and fetching their pair requests (only) when they are not known. This is a better solution than using the
getmixpairrequests
JSON-RPC method, which would return all unremoved pair requests known todcrd
, including stale ones (d5d5ef76
). -
An issue where change addresses derived for inclusion in mixing pair requests were not properly persisted to the database was fixed (
f977db4e
). -
This release includes a newer version of the mixpool and mixclient packages from dcrd's mixing module. Among other improvements, this fixes an issue where pair requests were being improperly removed from the wallet's mixpool during some sessions that did not run to completion.
Other improvements
-
An error log was added to record the failed transaction send of any mixed coinjoin transaction (
8b47dedb
). -
The VSP client package has been made available as a non-internal package (
9df1e498
).
Changelog
All commits since the last release may be viewed on GitHub here.
Code Contributors (alphabetical order):
- @buck54321
- Josh Rickmar (@jrick)
v2.0.0
Install
To install Decrediton desktop wallet, download, uncompress, and run Decrediton Linux AppImage or Decrediton Linux tar or Decrediton macOS amd64 or Decrediton macOS arm64 or Decrediton Windows.
To install the command-line tools, please see dcrinstall.
See decred-v2.0.0-manifest.txt and the other manifest files for SHA-256 hashes and the associated .asc signature files to confirm those hashes.
See README.md for more info on verifying the files.
Contents
dcrd v2.0.0
This is a new major release of dcrd. Some of the key highlights are:
- Decentralized StakeShuffle mixing
- Higher network throughput
- Lightweight client sync time reduced by around 50%
- Improved initial peer discovery
- Reject protocol message removal
- Various updates to the RPC server:
- Dynamic TLS certificate reload
- Proof-of-Work hash in block information
- New JSON-RPC API additions related to decentralized StakeShuffle mixing
- Quality assurance changes
Upgrade Required To Continue Participating in StakeShuffle Mixing
Although upgrading to this latest release is not absolutely required for continued operation of the core network, it is required for anyone who wishes to continue participating in StakeShuffle mixing.
Notable Changes
Decentralized StakeShuffle Mixing
The StakeShuffle mixing process is now fully decentralized via the peer-to-peer network as of this release. All core software has been upgraded to make use of the new decentralized coordination facilities.
This release introduces several new peer-to-peer protocol messages to provide the decentralized coordination. The following is a brief summary of the new messages:
Message | Overall Purpose |
---|---|
mixpairreq |
Request to participate in a mix with relevant data and proofs. |
mixkeyxchg |
Publishes public keys and commitments for blame assignment. |
mixcphrtxt |
Enables quantum resistant (PQ) blinded key exchange. |
mixslotres |
Establishes slot reservations used in the blinding process. |
mixfactpoly |
Encodes solution to the factored slot reservation polynomial. |
mixdcnet |
Untraceable multi-party broadcast (dining cryptographers). |
mixconfirm |
Provides partial signatures to create the mix transaction. |
mixsecrets |
Reveals secrets of an unsuccessful mix for blame assignment. |
Higher Network Throughput
This release now supports concurrent data requests (getdata
) which allows for higher network throughput, particularly when the communications channel is experiencing high latency.
A couple of notable benefits are:
- Reduced vote times since it allows blocks and transactions to propagate more quickly throughout the network
- More responsive during traffic bursts and general network congestion
Lightweight client sync time reduced by around 50%
Lightweight clients may now request version 2 compact filters in batches as opposed to one at a time. This has the effect of drastically reducing the initial sync time for lightweight clients such as Simplified Payment Verification (SPV) wallets.
This release introduces a new pair of peer-to-peer protocol messages named getcfsv2
and cfiltersv2
which provide the aforementioned capability.
Improved Initial Peer Discovery
Peers will now continue to query unreachable seeders in the background with an increasing backoff timeout when they have not already discovered a sufficient number of peers on the network to achieve the target connectivity.
This primarily improves the experience for peers joining the network for the first time and those that have not been online for a long time since they do not have a known list of good peers to use.
Reject Protocol Message Removal (reject
)
The previously deprecated reject
peer-to-peer protocol message is no longer available.
Consequently, the minimum required network protocol version to participate on the network is now version 9.
Note that all nodes on older protocol versions are already not able to participate in the network due to consensus changes that have passed.
Recall from previous release notes that this message is being removed because it is a holdover from the original codebase where it was required, but it really is not a useful message and has several downsides:
- Nodes on the network must be trustless, which means anything relying on such a message is setting itself up for failure because nodes are not obligated to send it at all nor be truthful as to the reason
- It can be harmful to privacy as it allows additional node fingerprinting
- It can lead to security issues for implementations that don't handle it with proper sanitization practices
- It can easily give software implementations the fully incorrect impression that it can be relied on for determining if transactions and blocks are valid
- The only way it is actually used currently is to show a debug log message, however, all of that information is already available via the peer and/or wire logging anyway
- It carries a non-trivial amount of development overhead to continue to support it when nothing actually uses it
RPC Server Changes
The RPC server version as of this release is 8.2.0.
Dynamic TLS Certificate Reload
The RPC server now checks for updates to the TLS certificate key pair (rpc.cert
and rpc.key
by default) on new connections and dynamically reloads them if needed. Similarly, the authorized client certificates (clients.pem
by default) when running with the client certificate authorization type mode (--authtype=clientcert
).
Some key highlights of this change:
- Certificates can now be updated without needing to shutdown and restart the process which enables things such as:
- Updating the certificates to change the allowed domain name and/or IP addresses
- Dynamically adding or removing authorized clients
- Changing the cryptographic primitives used to newer supported variants
- All existing connections will continue to use the certificates that were loaded at the time the connection was made
- The existing working certs are retained if any errors are encountered when loading the new ones in order to avoid breaking a working config
New Proof-of-Work Hash Field in Block Info RPCs (getblock
and getblockheader
)
The verbose results of the getblock
and getblockheader
RPCs now include a powhash
field in the JSON object that contains the Proof-of-Work hash for the block. The new field will be exactly the same as the hash
(block hash) field for all blocks prior to the activation of the stakeholder vote to change the PoW hashing algorithm(DCP0011).
See the following for API details:
New StakeShuffle Mixing Pool (mixpool) Message Send RPC (sendrawmixmessage
)
A new RPC named sendrawmixmessage
is now available. This RPC can be used to manually submit all mixing messages to the mixpool and broadcast them to the network.
See the following for API details:
New StakeShuffle Mixing Pool (mixpool) Message WebSocket Notification RPCs (notifymixmessages
)
WebSocket notifications for mixing messages accepted to the mixpool are now available.
Use notifymixmessages
to request mixmessage
notifications and stopnotifymixmessages
to stop receiving notifications.
See the following for API details:
- notifymixmessages JSON-RPC API Documentation
- stopnotifymixmessages JSON-RPC API Documentation
- mixmessage JSON-RPC API Notification Documentation
Changelog
This release consists of 168 commits from 11 contributors which total to 265 files changed, 18292 additional lines of code, and 2978 deleted lines of code.
All commits since the last release may be viewed on GitHub here.
See dcrd's own release notes for a categorized breakdown of all commits since the last release.
Code Contributors (alphabetical order):
- Billy Zelani Malik
- Dave Collins
- David Hill
- Matheus Degiovani
- Nicola Larosa
- peicuiping
- Peter Zen
- Jamie Holdstock
- Jonathan Chappelow
- Josh Rickmark
- SeedHammer
v1.8.1
Install
To install Decrediton desktop wallet, download, uncompress, and runDecrediton Linux AppImage or Decrediton Linux tar or Decrediton macOS amd64 or Decrediton macOS arm64 or Decrediton Windows.
To install the command-line tools, please see dcrinstall.
See decred-v1.8.1-manifest.txt and the other manifest files for SHA-256 hashes and the associated .asc signature files to confirm those hashes.
See README.md for more info on verifying the files.
Contents
dcrd v1.8.1
This is a patch release of dcrd that includes some updates to the RPC server and JSON-RPC API in light of the changes made by DCP0011 as follows:
- The
getblock
andgetblockheader
RPCs now have an additionalpowhash
field for the new Proof-of-Work hash - The
getnetworkhashps
RPC now treats -1 for the blocks parameter as the default number of blocks versus the previous behavior that is no longer applicable to the new difficulty ajustement algorithm
The RPC server version as of this release is 8.1.0.
Changelog
This patch release consists of 5 commits from 2 contributors which total to 7 files changed, 47 additional lines of code, and 29 deleted lines of code.
All commits since the last release may be viewed on GitHub here.
RPC:
- rpc: Add PoWHash to getblock/getblockheader (verbose) results (decred/dcrd#3192)
- rpcserver: Modify getnetworkhashps -1 blocks logic (decred/dcrd#3193)
Developer-related package and module changes:
- jsonrpc/types: Add powhash to verbose block output (decred/dcrd#3192)
- main: Use backported rpc types updates (decred/dcrd#3192)
Misc:
- release: Bump for 1.8.1 (decred/dcrd#3194)
Code Contributors (alphabetical order):
- Dave Collins
- Jonathan Chappelow
dcrwallet v1.8.1
This release contains important bug fixes for VSP users.
Bug fixes
-
A warning is logged if a VSP fee payment could not be created due to a locked wallet (
1c1bcfbd
). -
VSP fee payments started by RPC requests are no longer cancelled early after the RPC returns (
07854e37
). -
The random duration interval during which ticket fee payment operations occur was fixed using the correct calculation of when a ticket goes live (
c4c6c421
). -
Fee payment confirmations are no longer assumed to be valid after they receive 6 confirmations, and the VSP is contacted to ensure that it has also confirmed the payment (
7c551ce6
). -
Block heights for ticket liveness and expiry are recalculated properly whenever unmined tickets are processed by the VSP client (
1319da0b
).
New features
- The verbose
getblock
andgetblockheader
JSON-RPC results now include apowhash
field with the hash calculated for the Proof-of-Work algorithm.
Changelog
The following lists all commits since dcrwallet v1.8.0:
1c1bcfbd
: vsp: Dont ignore locked wallet errs07854e37
: vsp: Hardcode background ctxc4c6c421
: vsp: Fix blocksUntilLive calc7c551ce6
: vsp: Only remove confirmed payments1319da0b
: vsp: Recalculate live/expiry heightbc7f095c
: Bump patch version for upcoming 1.8.1 releasea02926a8
: Update dcrd JSON-RPC types module7cb12ad4
: Update decred dependencies
Code Contributors (alphabetical order):
- Jamie Holdstock (@jholdstock)
- Josh Rickmar (@jrick)
Decrediton v1.8.1
This is a minor Decrediton release that updates DEX to the most recent release and fixes a few critical bugs.
Bug fixes
- Fix response buffer size for logging into DEX on v1.8.0
Changelog
All commits since the last release may be viewed on GitHub here.
v1.8.0
Install
To install Decrediton desktop wallet, download, uncompress, and run Decrediton Linux AppImage or Decrediton Linux tar or Decrediton macOS amd64 or Decrediton macOS arm64 or Decrediton Windows.
To install the command-line tools, please see dcrinstall.
See decred-v1.8.0-manifest.txt and the other manifest files for SHA-256 hashes and the associated .asc signature files to confirm those hashes.
See README.md for more info on verifying the files.
Contents
dcrd v1.8.0
This is a new major release of dcrd. Some of the key highlights are:
- Two new consensus vote agendas which allow stakeholders to decide whether or not to activate support for the following:
- Changing the Proof-of-Work hashing algorithm to BLAKE3 and the difficulty algorithm to ASERT
- Changing the Proof-of-Work and Proof-of-Stake subsidy split from 10%/80% to 1%/89%
- Separation of block hash from Proof-of-Work hash
- BLAKE3 CPU mining support
- Initial sync time reduced by about 20%
- Runtime memory management optimizations
- Faster cryptographic signature validation
- Low fee transaction rejection
- Unspent transaction output set size reduction
- No more checkpoints
- Improved network protocol message responsiveness
- Header proof commitment hash storage
- Address index removal
- Several CLI options deprecated
- Various updates to the RPC server:
- Total coin supply output correction
- More stable global communication over WebSockets
- Winning ticket notifications when unsynced mining on test networks
- Several other notable updates, additions, and removals related to the JSON-RPC API
- Infrastructure improvements
- Miscellaneous network and protocol optimizations
- Quality assurance changes
For those unfamiliar with the voting process in Decred, all code needed in order to support each of the aforementioned consensus changes is already included in this release, however it will remain
dormant until the stakeholders vote to activate it.
For reference, the consensus change work was originally proposed and approved for initial implementation via the following Politeia proposal:
The following Decred Change Proposals (DCPs) describe the proposed changes in detail and provide full technical specifications:
Upgrade Required
It is extremely important for everyone to upgrade their software to this latest release even if you don't intend to vote in favor of the agenda. This particularly applies to PoW miners as failure to upgrade will result in lost rewards after block height 777240. That is estimated to be around June 29th, 2023.
Downgrade Warning
The database format in v1.8.0 is not compatible with previous versions of the software. This only affects downgrades as users upgrading from previous versions will see a one time database migration.
Once this migration has been completed, it will no longer be possible to downgrade to a previous version of the software without having to delete the database and redownload the chain.
The database migration typically takes around 4-6 minutes on HDDs and 2-3 minutes on SSDs.
Notable Changes
Two New Consensus Change Votes
Two new consensus change votes are now available as of this release. After upgrading, stakeholders may set their preferences through their wallet.
Change PoW to BLAKE3 and ASERT
The first new vote available as of this release has the id blake3pow
.
The primary goals of this change are to:
- Increase decentralization of proof of work mining by obsoleting the current specialized hardware (ASICs) that is only realistically available to the existing highly centralized mining monopoly
- Improve the proof of work mining difficulty adjustment algorithm responsiveness
- Provide more equal profitability to steady state PoW miners versus hit and run miners
See the following for more details:
Change PoW/PoS Subsidy Split to 1/89 Vote
The second new vote available as of this release has the id changesubsidysplitr2
.
The proposed modification to the subsidy split in tandem with the change to the PoW hashing function is intended to break up the mining cartel and further improve decentralization of the issuance process.
See the following for more details:
Separation of Block Hash from Proof-of-Work Hash
A new Proof-of-Work (PoW) hash that is distinct from the existing block hash is now used for all consensus rules related to PoW verification.
Block hashes have historically served multiple roles which include those related to proof of work (PoW). As of this release, the roles related to PoW are now solely the domain of the new PoW hash.
Some key points related to this change are:
- The new PoW hash will be exactly the same as the existing block hash for all blocks prior to the activation of the stakeholder vote to change the PoW hashing algorithm
- The block hash continues to use the existing hashing algorithm
- The block hash will no longer have the typical pattern of leading zeros upon activation of the PoW hashing algorithm
- The PoW hash will have the typical pattern of leading zeros both before and after the activation of the new PoW hashing algorithm
BLAKE3 CPU Mining Support
The internal CPU miner has been significantly optimized to provide much higher hash rates, especially when using multiple cores, and now automatically mines using the BLAKE3 algorithm when the blake3pow
agenda is active.
Initial Sync Time Reduced by About 20%
The amount of time it takes to complete the initial chain synchronization process with default settings has been reduced by about 20% versus the previous release.
Runtime Memory Management Optimizations
The way memory is managed has been optimized to provide performance enhancements to both steady-state operation as well as the initial chain sync process.
The primary benefits are:
- Lower maximum memory usage during transient periods of high demand
- Approximately a 10% reduction to the duration of the initial sync process
- Significantly reduced overall total memory allocations (~42%)
- Less overall CPU usage for the same amount of work
Faster Cryptographic Signature Validation
Similar to the previous release, this release further improves some aspects of the underlying crypto code to increase its execution speed and reduce the number of memory allocations. The overall result is a 52% reduction in allocations and about a 1% reduction to the verification time for a single signature.
The primary benefits are:
- Improved vote times since blocks and transactions propagate more quickly throughout the network
- Approximately a 4% reduction to the duration of the initial sync process
Low Fee Transaction Rejection
The default transaction acceptance and relay policy is no longer based on priority and instead now immediately rejects all transactions that do not pay the minimum required fee.
This provides a better user experience for transactions that do not pay enough fees.
For some insight into the motivation for this change, prior to the introduction of support for child pays for parent (CPFP), it was possible for transactions to essentially become stuck forever if they didn't pay a high enough fee for miners to include them in a block.
In order to prevent this, a policy was introduced that allowed relaying transactions that do not pay enough fees based on a priority calculated from the fee as well as the age of coins being spent. The result is that the priority slowly increased over time as the coins aged to ensure such transactions would eventually be relayed and mined. In order to prevent abuse the behavior could otherwise allow, the policy also included additional rate-limiting of these types of transactions.
While the policy served its purpose, it had some downsides such as:
- A confusing user experience where transactions that do not pay enough fees and also are not old enough to meet the dynamically changing priority requirements are rejected due to having insufficient priority instead of not paying enough fees as the user might expect
- The priority requirements dynamically change over time which leads to non-deterministic behavior and thus ultimately results in what appear to be intermittent/transient failures to users
The policy is no longer necessary or desirable given such transactions can now use CPFP to increase the overall fee of the e...
v1.7.7
Install
To install Decrediton desktop wallet, download, uncompress, and run Decrediton Linux AppImage or Decrediton Linux tar or Decrediton macOS amd64 or Decrediton macOS arm64 or Decrediton Windows.
To install the command-line tools, please see dcrinstall.
See decred-v1.7.7-manifest.txt and the other manifest files for SHA-256 hashes and the associated .asc signature files to confirm those hashes.
See README.md for more info on verifying the files.
Contents
dcrd v1.7.7
This is a patch release of dcrd that includes the following changes:
- Use the latest network protocol version
- Reduce bandwidth usage in certain scenarios by avoiding requests for inventory that is already known
- Mitigate excessive CPU usage in some rare scenarios specific to the test network
- Improve best address candidate selection efficiency
Changelog
This patch release consists of 19 commits from 3 contributors which total to 92 files changed, 1357 additional lines of code, and 1191 deleted lines of code.
All commits since the last release may be viewed on GitHub here.
Protocol and network:
- peer: Use latest pver by default (decred/dcrd#3083)
- peer: Correct known inventory check (decred/dcrd#3083)
Documentation:
- peer: Go 1.19 doc comment formatting (decred/dcrd#3083)
- addrmgr: Go 1.19 doc comment formatting (decred/dcrd#3084)
- multi: Go 1.19 doc comment formatting (decred/dcrd#3087)
- docs: Update README.md to required Go 1.19/1.20 (decred/dcrd#3087)
Developer-related package and module changes:
- peer: Support module graph prune and lazy load (decred/dcrd#3083)
- main: Use backported peer updates (decred/dcrd#3083)
- addmrgr: Use TempDir to create temp test dirs (decred/dcrd#3084)
- addrmgr: Support module graph prune and lazy load (decred/dcrd#3084)
- addrmgr: Break after selecting random address (decred/dcrd#3084)
- addrmgr: Set min value and optimize address chance (decred/dcrd#3084)
- main: Use backported addrmgr updates (decred/dcrd#3084)
- main: Update to use latest sys module (decred/dcrd#3087)
Testing and Quality Assurance:
- build: Enable run_tests.sh to work with go.work (decred/dcrd#3087)
- build: Update to latest action versions (decred/dcrd#3087)
- build: Update golangci-lint to v1.51.1 (decred/dcrd#3087)
- build: Test against Go 1.20 (decred/dcrd#3087)
Misc:
- release: Bump for 1.7.7 (decred/dcrd#3085)
Code Contributors (alphabetical order):
- Dave Collins
- Eng Zer Jun
- Jonathan Chappelow
dcrwallet v1.7.7
This release includes many bug fixes and performance improvements that, in particular, benefits ticketbuying and other heavily-used wallets that contain many transactions.
Bug fixes
-
A deadlock during address discovery was corrected.
-
SPV peer selection no longer requires excessive CPU usage when few quality
peers are known. -
A data race during rescanning in SPV mode was corrected.
-
A logic race that could result in failing to watch addresses after purchasing tickets, and subsequently missing transactions paying to these addresses, was corrected.
-
A duplicate log message when failing to watch addresses after purchasing tickets was removed.
-
Account balances are no longer calculated by the automatic ticket buyer if the
ticketbuyer.balancetomaintainabsolute
flag is unset or zero. Calculating balances is a expensive operation on wallets with many transactions, and avoiding this unnecessary task can provide a significant performance boost. -
The hardcoded maximum number of UTXOs that can be concurrently mixed during account mixing was removed and replaced with a maximum value that scales with the
mixsplitlimit
config option. -
Mixed ticket buying and account mixing no longer creates change that is smaller than the minimum amount needed to mix a UTXO at the smallest common denomination during change account mixing. Previously, change that was too small to mix was only discarded (i.e. included in the transaction fee) during mixing at the smallest common denomination.
New features
-
A
watchlast
config setting was included to configure the maximum number of recent addresses on an account branch are watched at startup. -
A new UTXO selection algorithm was implemented to pick UTXOs at random. Previously, randomization was implemented by reading all UTXOs into memory and shuffling. The new algorithm reads UTXOs from the database directly without needing to read all UTXOs into memory, which provides both performance and memory improvements over the previous algorithm.
Changelog
All commits since the last release may be viewed on GitHub here.
Decrediton v1.7.7
This release includes a various new features and bug fixes. Users are now able to choose individually on each TSpend instead of by pubkey. Launcher views have been totally revamped and improved. Trezor views have also had an improved UX introduced. And last but not least, DEX has been upgraded to 0.6.0 which now allows for trading with ETH.
New Features
-
DEX has been updated to 0.6.0 which now allows access to the dcr-eth trading pair. You can find the full rundown of improvements to DEX for 0.6.0 here.
-
TSpends can now be voted on individually instead of by the overall signing pubkey. This gives stakeholders more control over their voting rights when it comes to treasury expenditures.
-
Launching views have been redesigned and should allow for more interactivity and learning while waiting for the wallet to fully load in. Ideally this should reduce the number of support questions we receive overall.
-
Trezor wallet creation views have been fully revamped and should allow for a much better user experience. The new views can be seen here.
Bug fixes
-
Resend vote choices to recently updated VSPs. If a user updates their local vote preference before the VSP that controls their ticket, this was required to ensure that the User's vote choices were maintained after they update to the new version.
-
Fix Dex Window not launching after wallet reload.
-
Speed up and refine wallet start up process. There were a few extraneous processes that were occurring durign startup that could cause delays in the wallet fully opening.
-
Fix an issue with the send form that would cause incorrect amounts to be used as the final value. Eg. User enters 50 to send, but only would register 5.
-
Fix time remaining estimation during block syncing.
-
Fix various minor CSS issues throughout.
Changelog
All commits since the last release may be viewed on GitHub here.
v1.7.6
2022-11-16
Install
To install Decrediton desktop wallet, download, uncompress, and run Decrediton Linux AppImage or Decrediton Linux tar or Decrediton macOS amd64 or Decrediton macOS arm64 or Decrediton Windows.
To install the command-line tools, please see dcrinstall.
See decred-v1.7.6-manifest.txt and the other manifest files for SHA-256 hashes and the associated .asc signature files to confirm those hashes.
See README.md for more info on verifying the files.
Contents
Decrediton v1.7.6
This is a small release that contains no changes to the Decrediton base, but fixes an issue with the underlying DEX. This also fixes an issue with Decrediton v1.7.5 on Windows resolving alternative DNS servers (8.8.8.8 etc).
Changelog
All commits since the last release may be viewed on GitHub here.
Code Contributors (alphabetical order)
- Jonathan Chappelow (@chappjc)