Releases: decred/dcrd
dcrd v2.1.3
This is a patch release of dcrd to bump the version number to match the rest of the core Decred software suite.
There is no functional change as compared to v2.1.2.
dcrd v2.1.2
This is a patch release of dcrd which includes the following changes:
- Reduced memory allocations for peer-to-peer network operations
Changelog
This patch release consists of 3 commits from 2 contributors which total to 28
files changed, 176 additional lines of code, and 106 deleted lines of code.
All commits since the last release may be viewed on GitHub here.
Developer-related package and module changes:
- [release-v2.1] wire: Pass pointers by interface to writeElement (decred/dcrd#3582)
Developer-related module management:
- [release-v2.1] main: Use backported wire updates (decred/dcrd#3582)
Misc:
- [release-v2.1] release: Bump for 2.1.2 (decred/dcrd#3583)
Code Contributors (alphabetical order):
- Dave Collins
- Josh Rickmar
dcrd v2.1.1
This is a patch release of dcrd to bump the version number to match the rest of the core Decred software suite.
There is no functional change as compared to v2.1.0.
dcrd v2.1.0
This is a new major release of dcrd. Some of the key highlights are:
- A new consensus vote agenda which allows the stakeholders to decide whether or not to activate a new decentralized treasury maximum expenditure policy
- Exclusion timeouts for disruptive StakeShuffle mixing participants
- Less bandwidth usage for StakeShuffle mixing messages
- Configurable maximum overall memory usage limit
- Higher network throughput
- Faster address decoding
- Hardware optimizations for hashes
- Various updates to the RPC server
- IPv6 zone support
- New JSON-RPC API additions for dynamic profiling server control
- Discrete mining cancellation support
- 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 Proposal (DCP) describes the proposed changes in detail and provides 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 1035288. That is estimated to be around December 9th, 2025.
Notable Changes
New Treasury Maximum Expenditure Policy Vote
A consensus change vote with the id maxtreasuryspend is now available as of this release. After upgrading, stakeholders may set their preferences through their wallet.
The primary goals of this change are to:
- Provide a maximum expenditure policy that is stable for the long term while retaining the primary motivations for having a maximum expenditure policy
- Serve as a preemptive measure to avoid the current overly-restrictive spending limits from potentially resulting in issues with funding ongoing operations
See the following for more details:
Exclusion Timeouts for Disruptive StakeShuffle Mixing Participants
Coins participating in decentralized StakeShuffle mixing that are excluded from ongoing mixes due to failing to complete the entire protocol too many times are now prohibited from participating in any new mixes for a certain period of time.
The exclusion timeout is a matter of policy that may be refined in the future. It is currently set to 24 hours.
This change improves the overall robustness of the system and helps ensure smooth operation for all honest participants in the event of misbehavior, intentional or otherwise.
Less Bandwidth Usage for StakeShuffle Mixing Messages
This release includes various changes to reduce the amount of bandwidth required for decentralized StakeShuffle mixing by approximately 15%.
Aside from generally improving efficiency, it provides the key benefit of lowering the overall resource requirements for full nodes running in bandwidth-constrained environments.
Configurable Maximum Overall Memory Usage Limit
The server automatically calculates a default target maximum memory limit that is sufficient for almost all users and use cases.
System administrators that are comfortable trading off more memory for performance may now optionally set the GOMEMLIMIT environment variable prior to starting drcd in order to increase the target maximum memory limit.
The target limit is logged when the server starts. For example:
Soft memory limit: 1.80 GiB
Note that the value may not be configured to be less than the default calculated value and is potentially influenced by the cache-specific CLI options --sigcachemaxsize and --utxocachemaxsize.
Higher Network Throughput
The primary network syncing infrastructure now uses a model that makes better use of multiple processor cores provided by all modern hardware. The net result is better overall throughput that scales equally well across the entire spectrum of low-end to high-end computing hardware.
Faster Address Decoding
Decoding of Decred payment addresses is now about two times faster on average.
Larger wallets connecting to dcrd via RPC will notice significantly faster load times and mobile wallets using the new code will benefit from less battery usage.
Hardware Optimizations for Hashes
BLAKE-256 hashing is now approximately 70% faster on any modern amd64 hardware.
The primary benefits are:
- Notably reduced overall CPU usage for the same amount of work
- Performance enhancements to nearly all areas such as:
- The initial chain sync process
- Transaction and block validation
- Mixing message validation
- Signature verification
- Key generation
- Lightweight client sync time
- Stakeholder voting lottery selection
- Internal caches
- Payment addresses
RPC Server Changes
The RPC server version as of this release is 8.3.0
IPv6 Zone Support
The RPC server may now be configured to listen on IPv6 addresses with a zone.
This is particularly useful for specifying which scope or interface to bind the listener to in systems with multiple interfaces. For example, link local IPv6 addresses typically require specifying the zone to avoid routing issues since they are otherwise ambiguous on systems with multiple interfaces.
New Dynamic Profiling Server Control RPCs (startprofiler and stopprofiler)
Two new RPCs named startprofiler and stopprofiler are now available. These RPCs can be used to dynamically start and stop the built-in profiling server.
The profiling server is primarily useful for developers working on the software.
See the following for API details:
Discrete Mining Cancellation Support (generate)
The generate RPC used in test environments such as the test and simulation networks to mine a discrete number of blocks now accepts a parameter of 0 to cancel a running active discrete mining instance.
See the following for API details:
Changelog
This release consists of 355 commits from 8 contributors which total to 294 files changed, 25,567 additional lines of code, and 10,534 deleted lines of code.
All commits since the last release may be viewed on GitHub here.
Protocol and network:
- netsync: Request new headers on rejected tip (decred/dcrd#3302)
- server: Support listening on zoned IPv6 link local (decred/dcrd#3322)
- server: Prefer min one mix capable outbound peer (decred/dcrd#3336)
- peer: Randomize inv batching delays (decred/dcrd#3363)
- server: Cache advertised txns (decred/dcrd#3362)
- server: Prefer 3 min mix capable outbound peers (decred/dcrd#3389)
- peer: Add factored poly to stall detector getdata responses (decred/dcrd#3446)
- netsync: Always request initial non-mining state (decred/dcrd#3476)
- netsync: Don't request recently removed mix msgs (decred/dcrd#3494)
- chaincfg: Remove dcrdata.org seeders (decred/dcrd#3495)
- peer: Do not send inventory before version (decred/dcrd#3479)
- chaincfg: Introduce max treasury spend agenda (decred/dcrd#3548)
- multi: Implement DCP0013 max treasury spend vote (decred/dcrd#3549)
- chaincfg: Update assume valid for release (decred/dcrd#3557)
- chaincfg: Update min known chain work for release (decred/dcrd#3558)
- server: Force PoW upgrade to v11 (decred/dcrd#3570)
Mixing message relay (mix pool):
- netsync: Handle notfound mix messages (decred/dcrd#3325)
- netsync: Remove spent PRs from prev block txs (decred/dcrd#3334)
- mixpool: Only ban full nodes for bad UTXO sigs (decred/dcrd#3345)
- mixing: Create new sessions over incrementing runs (decred/dcrd#3343)
- mixpool: Cache recently removed msgs (decred/dcrd#3366)
- netsync: Remove spent PRs from tip block txns (decred/dcrd#3367...
dcrd v2.0.6
This is a patch release of dcrd which includes the following changes:
- Improved reliability for wallets participating in StakeShuffle mixing
- Minor performance enhancement for random number generation on OpenBSD
Changelog
This patch release consists of 3 commits from 2 contributors which total to 8 files changed, 119 additional lines of code, and 68 deleted lines of code.
All commits since the last release may be viewed on GitHub here.
Developer-related package and module changes:
- [release-v2.0] rand: Use stdlib crypto/rand.Read on OpenBSD + Go 1.24 (decred/dcrd#3473)
Developer-related module management:
- [release-v2.0] main: Use backported rand updates (decred/dcrd#3473)
Misc:
- [release-v2.0] release: Bump for 2.0.6 (decred/dcrd#3474)
Code Contributors (alphabetical order):
- Dave Collins
- Josh Rickmar
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.
Protocol and network:
- [release-v2.0] peer: Add factored poly to stall detector (decred/dcrd#3457)
Mixing message relay (mix pool):
- [release-v2.0] mixpool: Do not return early for revealed secrets (decred/dcrd#3458)
Developer-related package and module changes:
- [release-v2.0] mixclient: Avoid jitter calculation panic (decred/dcrd#3458)
- [release-v2.0] mixclient: Detect exited csppsolver processes (decred/dcrd#3458)
- [release-v2.0] mixclient: Sort roots for slot assignment (decred/dcrd#3458)
Developer-related module management:
- [release-v2.0] main: Use backported peer updates (decred/dcrd#3457)
- [release-v2.0] main: Use backported mixing updates (decred/dcrd#3458)
Misc:
- [release-v2.0] release: Bump for 2.0.5 (decred/dcrd#3459)
Code Contributors (alphabetical order):
- Dave Collins
- Josh Rickmar
dcrd v2.0.4
dcrd v2.0.4 Release Notes
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.
Mixing message relay (mix pool):
- [release-v2.0] mixpool: Reject KEs submitted too early (decred/dcrd#3431)
- [release-v2.0] mixclient: Use newest (fewest-PR) KEs to form alt sessions (decred/dcrd#3431)
RPC / gencerts utility changes:
- [release-v2.0] certgen,gencerts: Punycode non-ASCII hostnames (decred/dcrd#3432)
Developer-related package and module changes:
- [release-v2.0] mixclient: Remove completely unused var (decred/dcrd#3431)
- [release-v2.0] mixpool: Remove error which is always returned nil (decred/dcrd#3431)
- [release-v2.0] mixclient: Dont append to slice with non-zero length (decred/dcrd#3431)
- [release-v2.0] mixing: Add missing copyright headers (decred/dcrd#3431)
- [release-v2.0] mixclient: Add missing copyright headers (decred/dcrd#3431)
- [release-v2.0] mixclient: Remove submit queue channel (decred/dcrd#3431)
- [release-v2.0] mixclient: Do not submit PRs holding client mutex (decred/dcrd#3431)
Developer-related module management:
- [release-v2.0] main: Use backported mixing updates (decred/dcrd#3431)
- [release-v2.0] main: Use backported certgen updates (decred/dcrd#3432)
Misc:
- [release-v2.0] mixing: Add missing periods to comments (decred/dcrd#3431)
- [release-v2.0] release: Bump for 2.0.4 (decred/dcrd#3433)
Code Contributors (alphabetical order):
- Dave Collins
- Jamie Holdstock
- Josh Rickmar
dcrd v2.0.3
dcrd v2.0.3 Release Notes
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.
Protocol and network:
- [release-v2.0] peer: Randomize inv batching delays (decred/dcrd#3390)
- [release-v2.0] server: Cache advertised txns (decred/dcrd#3392)
- [release-v2.0] server: Prefer 3 min mix capable outbound peers (decred/dcrd#3392)
Mixing message relay (mix pool):
- [release-v2.0] mixpool: Cache recently removed msgs (decred/dcrd#3391)
- [release-v2.0] mixclient: Introduce random message jitter (decred/dcrd#3391)
- [release-v2.0] netsync: Remove spent PRs from tip block txns (decred/dcrd#3392)
Documentation:
- [release-v2.0] docs: Update for container/lru module (decred/dcrd#3390)
- [release-v2.0] rand: Add README.md (decred/dcrd#3390)
Developer-related package and module changes:
- [release-v2.0] container/lru: Implement type safe generic LRUs (decred/dcrd#3390)
- [release-v2.0] peer: Use container/lru module (decred/dcrd#3390)
- [release-v2.0] crypto/rand: Implement module (decred/dcrd#3390)
- [release-v2.0] rand: Add BigInt (decred/dcrd#3390)
- [release-v2.0] rand: Uppercase N in half-open-range funcs (decred/dcrd#3390)
- [release-v2.0] rand: Add rand.N generic func (decred/dcrd#3390)
- [release-v2.0] rand: Add ShuffleSlice (decred/dcrd#3390)
- [release-v2.0] rand: Add benchmarks (decred/dcrd#3390)
- [release-v2.0] peer: Use new crypto/rand module (decred/dcrd#3390)
- [release-v2.0] mixing: Prealloc buffers (decred/dcrd#3391)
- [release-v2.0] mixpool: Remove Receive expectedMessages argument (decred/dcrd#3391)
- [release-v2.0] mixing: Use new crypto/rand module (decred/dcrd#3391)
- [release-v2.0] mixpool: Remove run from conflicting msg err (decred/dcrd#3391)
- [release-v2.0] mixpool: Remove more references to runs (decred/dcrd#3391)
- [release-v2.0] mixing: Reduce slot reservation mix pads allocs (decred/dcrd#3391)
Developer-related module management:
- [release-v2.0] main: Use backported peer updates (decred/dcrd#3390)
- [release-v2.0] main: Use backported mixing updates (decred/dcrd#3391)
Misc:
- [release-v2.0] release: Bump for 2.0.3 (decred/dcrd#3393)
Code Contributors (alphabetical order):
- Dave Collins
- Josh Rickmar
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.
Protocol and network:
- [release-v2.0] server: Add missing ban reason (decred/dcrd#3352)
- [release-v2.0] server: Prefer min one mix capable outbound peer (decred/dcrd#3352)
Mixing message relay (mix pool):
- [release-v2.0] mixpool: Only ban full nodes for bad UTXO sigs (decred/dcrd#3351)
- [release-v2.0] mixing: Create new sessions over incrementing runs (decred/dcrd#3351)
- [release-v2.0] netsync: Handle notfound mix messages (decred/dcrd#3352)
- [release-v2.0] netsync: Remove spent PRs from prev block txs (decred/dcrd#3352)
Developer-related package and module changes:
- [release-v2.0] peer,server: Hash mix messages ASAP (decred/dcrd#3350)
- [release-v2.0] peer: Add mix message summary strings (decred/dcrd#3350)
- [release-v2.0] mixpool: Debug log all removed messages (decred/dcrd#3351)
- [release-v2.0] mixclient: Unexport ErrExpired (decred/dcrd#3351)
- [release-v2.0] mixclient: Log identities of blamed peers (decred/dcrd#3351)
- [release-v2.0] mixclient: Avoid overwriting prev PRs slice (decred/dcrd#3351)
- [release-v2.0] mixclient: Log reasons for blaming during run (decred/dcrd#3351)
- [release-v2.0] mixpool: Debug log accepted messages (decred/dcrd#3351)
- [release-v2.0] mixpool: Log correct accepted orphans (decred/dcrd#3351)
- [release-v2.0] mixpool: Remove unused entry run field (decred/dcrd#3351)
- [release-v2.0] mixpool: Remove unused exported methods (decred/dcrd#3351)
- [release-v2.0] mixclient: Respect standard tx size limits (decred/dcrd#3351)
- [release-v2.0] mixclient: Fix build (decred/dcrd#3351)
- [release-v2.0] mixpool: Don't alloc error on unknown msg (decred/dcrd#3351)
- [release-v2.0] dcrd: Switch getdata log from trace to debug (decred/dcrd#3352)
- [release-v2.0] server: Remove dup min protocol version check (decred/dcrd#3352)
- [release-v2.0] mempool: Return missing prev outpoints (decred/dcrd#3352)
Developer-related module management:
- [release-v2.0] main: Use backported peer updates (decred/dcrd#3350)
- [release-v2.0] main: Use backported mixing updates (decred/dcrd#3351)
Misc:
- [release-v2.0] release: Bump for 2.0.2 (decred/dcrd#3353)
Code Contributors (alphabetical order):
- Dave Collins
- David Hill
- Josh Rickmar
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
getmixmessagethat 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.
Protocol and network:
- netsync: Request new headers on rejected tip (decred/dcrd#3315)
- dcrd: Make DisableRelayTx also include mixing messages (decred/dcrd#3315)
- server: Add logs on why a peer is banned (decred/dcrd#3318)
RPC:
- dcrjson,rpcserver,types: Add getmixmessage (decred/dcrd#3317)
- rpcserver: Allow getmixmessage from limited users (decred/dcrd#3317)
Mixing message relay (mix pool):
- mixpool: Require 1 block confirmation (decred/dcrd#3317)
Documentation:
- docs: Add getmixmessage (decred/dcrd#3317)
Developer-related package and module changes:
- addrmgr: Give unattempted addresses a chance (decred/dcrd#3316)
- mixpool: Add missing mutex acquire (decred/dcrd#3317)
- mixing: Use stdaddr.Hash160 instead of dcrutil (decred/dcrd#3317)
- mixing: Reduce a couple of allocation cases (decred/dcrd#3317)
- mixpool: Wrap non-bannable errors with RuleError (decred/dcrd#3317)
- mixclient: Do not remove PRs from failed runs (decred/dcrd#3317)
- mixclient: Improve error returning (decred/dcrd#3317)
- server: Make peer banning synchronous (decred/dcrd#3318)
- server: Consolidate ban reason logging (decred/dcrd#3318)
Developer-related module management:
- main: Use backported addrmgr updates (decred/dcrd#3316)
- main: Use backported module updates (decred/dcrd#3317)
Misc:
- release: Bump for 2.0.1 (decred/dcrd#3319)
Code Contributors (alphabetical order):
- Dave Collins
- David Hill
- Josh Rickmar