Skip to content

Releases: decred/dcrwallet

v2.1.3

31 Dec 14:32
release-v2.1.3

Choose a tag to compare

This is a bug fix release addressing a mixing reliability issue.

Bug fixes

  • Mixing wallets now validate all SR and DC mixing vector dimensions and blame peers who submit messages with incorrect dimensions (decred/dcrd#3593).

Changelog

The following lists all commits since dcrwallet v2.1.2:

  • 99ca1779: [release-v2.1] Bump version to 2.1.3+release.local.
  • 3f669a36: [release-v2.1] Bump mixing to v6.0.1

Code Contributors (alphabetical order):

v2.1.2

10 Dec 14:36
release-v2.1.2

Choose a tag to compare

This is a bug fix release addressing regressions in mixing and VSP interaction.

Bug fixes

  • Mixing no longer ceases to function after network syncers are recreated following the lost of the network connection.

  • The VSP client no longer creates invalid requests when updating the treasury policy through the settreasurypolicy and settspendpolicy JSON-RPC methods.

Changelog

The following lists all commits since dcrwallet v2.1.1:

  • a40f3cdb: [release-v2.1] Bump version to 2.1.2+release.local.
  • 49d978d7: [release-v2.1] Bump wire to v1.7.2
  • f5f862db: [release-v2.1] Bump vspd client to 4.0.2
  • 0da1ec6f: [release-v2.1] Create new mix clients in Wallet.Run.
  • 5586c2d0: [release-v2.1] Print nice address string not raw struct.

Code Contributors (alphabetical order):

v2.1.1

27 Nov 23:39
release-v2.1.1

Choose a tag to compare

This is an emergency release fixing broken SPV mode in the 2.1.0 release.

Bug fixes

  • An error which broke all SPV usage caused by an incorrect update to the addrmgr/v3 module was corrected.

  • An unintended change in behavior created by a bug in a Go source code analyzer, causing "message count must be positive" errors being logged by the mixing client, was reverted.

Changelog

The following lists all commits since dcrwallet v2.1.0:

  • 4d70680c: [release-v2.1] Bump version to 2.1.1+release.local.
  • 8ad61d35: [release-v2.1] Call the addrmgr.NetAddress ctor
  • 9e43765e: [release-v2.1] Fix loop iteration broken by modernize linter

Code Contributors (alphabetical order):

v2.1.0

26 Nov 14:58
release-v2.1.0

Choose a tag to compare

This release implements the new stake version for voting on the maxtreasuryspend agenda as defined by DCP0013. As usual, it also includes a wide variety of other performance, reliability and usability improvements.

All users must upgrade due to the vote on new consensus rules.

Bug fixes

  • A long-standing bug which would cause transactions in blocks that get reorged out and back again into the best chain was identified and fixed (#2527).

  • Unmined tickets purchased at the end of a ticket price window are no longer incorrectly removed from the wallet due to pruning tickets with the wrong stake difficulty price (#2528).

  • In RPC sync mode, repeated blockconnected notifications from dcrd for the same block during multiple reorgs are no longer processed. This fixes the wallet's internal sidechain management and prevents identical blocks from being removed and reattached unnecessarily (#2526).

  • Several lock ordering bugs which would deadlock the process were corrected (#2508, #2560).

  • A check that mixing is enabled was moved earlier into the ticket purchasing codepath, preventing the mixed purchase from being attempted (#2484).

  • A check that mixing is enabled was added early to the mixoutput JSON-RPC method, preventing the mixing attempt when disabled (#2473).

  • The mixing client received the following fixes:

    • Errors during address generation are properly handled by aborting out of the mix session (decred/dcrd#3484).
    • A nil dereference panic caused by the logger trying to include relevant session information was fixed by always returning the current run state on unactionable errors (decred/dcrd#3505).
    • Local mixing peers that have canceled their request are no longer served by the client, avoiding a slew of "context canceled" error messages being logged (decred/dcrd#3507).
    • A busy loop causing 100% CPU usage when all local peer requests in a session had been canceled was avoided with improved error management (decred/dcrd#3511).
  • Interaction with VSPs has been improved:

    • Unmined tickets which are pruned by the wallet no longer remain handled by the VSP client (#2525).
    • Failed database updates changing the status of VSP tickets are retried later (#2524).
    • Actively managed tickets are only removed from the VSP client after a successful removal from the database (#2524).
    • Batched ticket processing no longer fails to process all tickets when one ticket in the batch already has a confirmed fee payment (#2519).
    • Fee payments which must split an existing output no longer overestimate the required payment amount by failing to consider change amounts that would otherwise be dust (#2494).
    • Hardcoded VSP fee rates have been removed, and the config option is used instead (#2439).
  • The consolidate JSON-RPC method now respects the max transaction size limit (#2513).

  • The consolidate JSON-RPC method now refuses to continue if the output it would create is also a dust output (#2490).

  • Under RPC sync mode, the existsaddresses calls performed at startup sync are now batched to prevent exceeded the maximum request size (#2504).

  • A data race starting gRPC services was corrected (#2532).

  • A data race counting the number of addresses processed at sync startup was corrected (#2517).

  • A variety of instances of incorrect error handling were corrected by returning the proper error to the caller (#2474, #2577).

Other improvements

  • The mixing client received the following improvements:

    • Slot reservation and DC-net secret messages, and the addresses to mix, are now generated at peer creation rather than generating these lazily after the mixing epoch occurs and the session starts. This improves the publish time for initial KE messages, leading to improved peer agreement (decred/dcrd#3533).
    • Mix session are now allowed to continue longer and concurrently with later sessions started at later epochs (decred/dcrd#3553).
    • Mixing peers who repeatedly disrupt mixes, either by timeout or discovered during blame assignment, are now excluded from client session forming for a period (decred/dcrd#3554).
  • The getstakeinfo JSON-RPC method now provides an estimate of the live ticket pool size when operating in SPV mode (#2523).

  • Requesting transaction notifications for the wallet's seed-derived addresses has been sped up by fixing the code concurrency (#2516).

  • Background rescans started by the JSON-RPC server are now cleanly stopped on server shutdown (#2434).

  • Config option descriptions have removed references to the no-longer-used CoinShuffle++ server (#2548).

  • A new wallet method has been added to set the birthday block or date on existing wallets (#2385).

API changes

The module has been bumped to major version 5. Some users will need to make changes for the following API changes:

  • The wallet.OutputSelectionPolicy type has been removed and (*Wallet).SelectInputs method no longer takes it as an argument. The (*Wallet).UnspentOutputs method and the types it returned were not observed to be used by anything, and were removed (#2535).

  • The UseVotingAccount field of the ticket purchase request was removed. The VotingAccount field will always be used and callers always set this value to the intended voting account (#2483).

  • All manual ticket revoking functionality has been removed. Tickets are automatically revoked by consensus rules now.

  • All legacy stakepool code has been removed (#2403).

In addition the following changes have been made to the RPC servers:

  • The spend limit parameters have been removed from both the purchasetickets JSON-RPC and WalletService.PurchaseTicket gRPC requests (#2542).

Changelog

All commits to the v2.1.0 release since the v2.0.6 release may be viewed on GitHub
here.

All commits to the v2.1.0 release since the v2.0.0 release may be viewed on GitHub
here.
Most of these commits were previously backported to 2.0.x patch releases.

Code Contributors (alphabetical order):

v2.0.6

04 Mar 15:25
release-v2.0.6

Choose a tag to compare

This release includes reliability fixes for mixing users and fixes to both the RPC and SPV syncers.

All users are advised to upgrade. Additionally, users of csppsolver are advised to upgrade to the latest release (v2.4.0) of that tool.

Bug fixes

  • The websocket JSON-RPC client library has been updated to fix several data races and properly reconnect the RPC syncer if the connection is ever lost (jrick/wsrpc#9, jrick/wsrpc#11, jrick/wsrpc#12).

  • The SPV syncer will be recreated and reperform initial sync after all peers are lost (c11c84f2).

  • To prevent spinning the CPU at 100%, the SPV syncer now adds per-peer incrementing backoffs after failed connection attempts (ba7027e8).

Other improvements

  • When forming an initial common set of mixing peers, all attempted sessions will now be considered, rather than only considering the most recent formation attempt. This can result in peer agreement occurring sooner and with a larger set of peers (decred/dcrd#3463).

  • When wallet is in the process of being shutdown, any ongoing mixes will be completed before the client and wallet process closes (decred/dcrd#3467, b9bd675e). For csppsolver users, this feature depends on deploying with the latest csppsolver release as well.

  • The version JSON-RPC method now includes the dcrwallet version (9e3cbe03).

  • The debuglevel JSON-RPC method has been introduced, allowing the debug level of all or individual subsystems to be dynamically changed at runtime (c9d7e6a0).

Changelog

The following lists all commits since dcrwallet v2.0.5:

  • 5d29910b: [release-v2.0] Prevent hang when dcrd connection is lost
  • 8e4b1da0: [release-v2.0] loader: Only create mix client if mixing enabled.
  • b47c4de7: [release-v2.0] version: Crank to 2.0.6
  • 08c2d3dd: [release-v2.0] Update wsrpc module
  • ba7027e8: [release-v2.0] spv: Implement per-peer increasing backoffs
  • c11c84f2: [release-v2.0] spv: Teardown syncer after all peers are lost
  • b9bd675e: [release-v2.0] Order mixclient and syncer shutdown
  • 9e3cbe03: [release-v2.0] Add dcrwallet version to version JSON-RPC result
  • 90e5291d: [release-v2.0] jsonrpc: Let client handle empty VSP policy fields
  • 61e7fbc4: [release-v2.0] Do not specify TLS curve preferences
  • c9d7e6a0: [release-v2.0] Implement the debuglevel JSON-RPC method

Code Contributors (alphabetical order):

v2.0.5

12 Nov 16:44
release-v2.0.5

Choose a tag to compare

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.5
  • 5a0c93f7: [release-v2.0] Update to latest mixing module
  • 7def7850: [release-v2.0] spv: Accept cfilters from more peers.
  • 3bbc7781: [release-v2.0] multi: Send empty VSP policy fields
  • 01f1e12e: [release-v2.0] Add context wrapping for syncer disconnections
  • 45d78411: [release-v2.0] rescan: add missing db update error check
  • c1b1ac0b: [release-v2.0] Always use configured voting account when mixing
  • e45749aa: [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 mixing
  • b22f59b3: [release-v2.0] jsonrpc: Use correct change account when mixing.
  • fdd9e0b2: [release-v2.0] p2p: Move check for getheaders locators earlier in the call
  • 58585aa5: [release-v2.0] p2p: Move headers requested check earlier in the call
  • 59a40408: [release-v2.0] p2p: Disconnect from peers that sent too few headers

Code Contributors (alphabetical order):

v2.0.4

03 Sep 14:23
release-v2.0.4

Choose a tag to compare

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

The following lists all commits since dcrwallet v2.0.3:

  • 650a7c01: [release-v2.0] version: Update for v2.0.4
  • 9074d7fd: [release-v2.0] Update to latest dcrd modules
  • 09ec255d: [release-v2.0] Update to latest vspd modules.
  • ec74c62a: [release-v2.0] wallet: Remove unused ctx from makeTicketSummary.
  • 2c7e4dcf: [release-v2.0] vsp: Prevent nil pointer dereference.
  • dcde8979: [release-v2.0] Update to latest mixing module
  • 39fd48b8: [release-v2.0] spv: Fix request of new blocks after initial sync

Code Contributors (alphabetical order):

v2.0.3

20 Jun 14:51
release-v2.0.3

Choose a tag to compare

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

The following lists all commits since dcrwallet v2.0.2:

  • e176480e: [release-v2.0] version: Update for v2.0.3
  • 42318906: [release-v2.0] Update to latest dcrd modules
  • 37e81f87: [release-v2.0] walletsetup: Return birthday prompt error.
  • 7830dd64: [release-v2.0] Attempt cxns to >=3 mixing-capable peers
  • fee60562: [release-v2.0] Add 100-500ms of per-peer inventory delay
  • 434d7f94: [release-v2.0] Use rand.ShuffleSlice
  • b0e19ee5: [release-v2.0] Replace additional rand funcs
  • 477f1888: [release-v2.0] Replace hand rolled shuffle with rand.Shuffle
  • fdcde4c3: [release-v2.0] Use dcrd's crypto/rand module

Code Contributors (alphabetical order):

v2.0.2

05 Jun 13:40
release-v2.0.2

Choose a tag to compare

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

The following lists all commits since dcrwallet v2.0.1:

  • 660e2f60: [release-v2.0] version: Update for v2.0.2
  • 609e1b49: [release-v2.0] Update to latest mixing module
  • 48c59f55: [release-v2.0] p2p: Ban peer with mix inv when disablerelaytx is active

Code Contributors (alphabetical order):

v2.0.1

29 May 17:02
release-v2.0.1

Choose a tag to compare

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 to dcrd, 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

The following lists all commits since dcrwallet v2.0.0:

  • 3b46b151: [release-v2.0] version: Update for v2.0.1
  • e0829f0e: [release-v2.0] Update to latest dcrd modules
  • 8b47dedb: [release-v2.0] Log any errors publishing mix transactions
  • f977db4e: [release-v2.0] Record derived mixing change addresses
  • d5d5ef76: [release-v2.0] chain: Fetch unknown PRs of notified orphan KEs
  • c18f2b0e: [release-v2.0] Update mixing module for client race fixes
  • 9a954c35: [release-v2.0] chain: Wait for errgroup before returning from sync
  • 9df1e498: externalize vsp client

Code Contributors (alphabetical order):