Skip to content

Releases: decred/dcrwallet

v2.0.5

12 Nov 16:44
release-v2.0.5
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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):

v2.0.0

21 May 14:23
release-v2.0.0
Compare
Choose a tag to compare

dcrwallet v2.0.0

This release is a major release for dcrwallet, adding many new features, improvements, and bug fixes. It is the first release to integrate peer-to-peer StakeShuffle mixing (sometimes also referred to as CoinShuffle++ or CSPP), replacing the previous mixing features that required communicating through a central server as a coordination point.

Configuration for the new mixing protocol requires no changes from previous dcrwallet versions, except that the enabling the feature is done with a boolean --mixing option instead of setting --csppserver.

When mixing, it is recommend, but not required, to build csppsolver and either install it to PATH, or provide the path to the executable with the --csppsolver option. The solver is a necessary component to complete a mix, but only one participant in the mix is required to provide it. The solver requires the C library libflint (including its development headers, if your distribution creates separate -dev packages), and once these dependencies are met, csppsolver can be built and installed with:

$ go install decred.org/cspp/v2/cmd/csppsolver@latest

Beyond the mixing changes, this release includes major performance and reliability improvements for both JSON-RPC and SPV syncing modes. Rescan performance has likewise been greatly improved upon over previous releases. Several issues affecting VSP users have been identified and corrected.

Downgrade Warning

The database format in v2.0.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.

Bug fixes

  • The configured mixed split account and branch is now properly used when purchasing mixed tickets using the purchasetickets JSON-RPC method (7a31751b).

  • Unsigned transactions created by the purchasetickets JSON-RPC method are no longer published or recorded by the wallet (7e5c5f2f, a021248f).

  • An invalid usage of a synchronization primitive by the SPV syncer was corrected (d5a07ae6).

  • Additional addresses are no longer fetched from peers in SPV mode when their services are deemed insufficient. This reduces the number of TCP connections currently open, preventing resource exhaustion if the wallet is using a Tor proxy and hitting the maximum circuit limit (ab6da249).

  • An issue stalling the SPV syncing during the fetching of compact filters for sidechain blocks was fixed by adding a watchdog timer to the fetch (66a3e69d).

  • A logic race that could result in missing relevant transactions in block connected at initial sync was corrected in the JSON-RPC syncing mode (9873543d).

  • An off-by-one error during address discovery was corrected (3c1d19e1).

  • The redeemmultisigout JSON-RPC method now returns with the complete field of the result set to false when the caller-provided transaction already contained invalid signatures (0a63be64).

  • VSP fees are now calculated properly depending on the activation of DCP0012 (90232ed6).

  • Several error-handling issues that could cause some tickets to be skipped over by the VSP client were corrected (35c6ac0f, a38abe28, a87fa843).

  • The VSP client now confirms acceptance of fee payment for tickets before removing their internal tracking in the client, instead of simply assuming the fee payment was accepted after six confirmations (35c6ac0f).

New features

  • The client-server StakeShuffle mixing has been replaced with a peer-to-peer variant of the same protocol (bb04b755).

  • Wallet creation now prompts if a birthday (as either a block height or date) is known for a restored wallet (5e8f1328).

  • Wallet creation now prompts for any extended public keys are available to create additional new xpub accounts (25b8ae63).

  • A --spvdisablerelaytx option has been added to inform full nodes not to announce transactions (eb5b1b72).

  • It is now possible to configure TLS certificate authentication to authenticate the JSON-RPC connection made to dcrd (0c735a70).

  • A new JSON-RPC method named spendoutputs has been introduced, which provides an easier-to-use alternative (over the existing create/sign/sendrawtransaction calls) to create and send transactions in a single RPC call with manual UTXO selection (ad140d26).

  • The currently-configured VSP URL has been added to the walletinfo JSON-RPC result object (bed109b0).

  • An --offline option has been added for air-gapped wallets to disable syncing through a JSON-RPC or SPV network backend (3b708125).

  • The gettickets JSON-RPC method is now usable under SPV mode (1e6f8917).

  • Any transaction changes that are performed during non-startup rescans (e.g. those manually started by the rescanwallet JSON-RPC method) are now logged (0be25dbc).

Other improvements

  • During initial sync in SPV mode, unsynced peers will now be disconnected from if they are overtaken by the wallet as it syncs from its other peers (6f510a51).

  • Compact filters in SPV mode are now fetched from multiple peers, and will continue to be fetched after the announcing peer has disconnected adba0d1c.

  • Compact filters in SPV mode are now fetched in batches from peers who support this protocol addition (1920377b).

  • Headers are now requested from peers in SPV mode after initial sync has completed, improving resyncing performance after temporary network loss (b9fd1a79).

  • Headers sync in SPV mode has been modified to request headers and compact filters in batches, improving sync performance (ab15d980).

  • JSON-RPC sync logic has been improved by waiting for dcrd to finish syncing before wallet begins its own syncing logic (e4acd44b).

  • Performance of and memory usage during initial sync in both SPV and JSON-RPC modes has been improved by iterating wallet's main chain blocks by height rather than following the previous headers through the hash (947fcaf7).

  • Rescan performance is greatly improved due to improved batching of the database updates (14c704a1).

  • On OpenBSD, dcrwallet no longer links to the syscall symbol, which has been removed from libc.so in OpenBSD 7.5 (49941c3d).

Changelog

The following lists all commits included in dcrwallet v2.0.0 that were not backported to a prior 1.8.x release:

  • ade2a17b: version: Prepare v2.0.0 release
  • 4618df87: Improve error message for initial csppsolver check
  • 645032b4: Bump version to 2.0.0-pre
  • 1920377b: spv: Add batched cfilter fetching
  • bb04b755: Replace client-server with peer-to-peer mixing
  • 475b13a5: Update Decred dependencies to latest releases
  • 5e8f1328: wallet: Add birthday.
  • 7a31751b: assign mixedSplitAccount for rpc tickets
  • f314a44c: rpc: allow syncing older tips on simnet
  • eb5b1b72: multi: Expose disablerelaytx
  • 44c0f78d: Introduce VSPTicket struct.
  • d2eddb1a: jsonrpc: Require hash for processUnmanagedTicket
  • 0c735a70: Allow client certificate authentication to dcrd RPC
  • ad140d26: Implement spendoutputs JSON-RPC method
  • 7e5c5f2f: Do not record unsigned split txs from purchasetickets
  • d374979e: bump jsonrpc semver minor
  • [bed109b0](https://github.com...
Read more

v1.8.1

27 Sep 18:48
release-v1.8.1
Compare
Choose a tag to compare

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 and getblockheader JSON-RPC results now include a powhash 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 errs
  • 07854e37: vsp: Hardcode background ctx
  • c4c6c421: vsp: Fix blocksUntilLive calc
  • 7c551ce6: vsp: Only remove confirmed payments
  • 1319da0b: vsp: Recalculate live/expiry height
  • bc7f095c: Bump patch version for upcoming 1.8.1 release
  • a02926a8: Update dcrd JSON-RPC types module
  • 7cb12ad4: Update decred dependencies

Code Contributors (alphabetical order):

v1.8.0

13 Jun 20:46
release-v1.8.0
Compare
Choose a tag to compare

This release enables the votes for and implements the necessary features to follow the upcoming hard forks described by DCP0011 and DCP0012. As always, other minor feature additions and bug fixes have been included.

Bug fixes

  • Manual ticket revocations are no longer performed by the VSP client (c9fc99b2).

  • A data race on the fee transaction pointer in the VSP client was corrected (a8f2b058).

  • VSP options in the config file are validated at startup to prevent invalid configurations that do not specify all required settings (6cc8d053).

  • Ticket purchasing performed through the JSON-RPC server now respects the configured maximum VSP fee (a19dcb43).

  • A data race on rescanned block hashes in SPV mode was corrected (dfcac12f).

  • New addresses can no longer be generated and returned externally for an imported voting account. This does not affect address generation when paying to voting account addresses during ticket buying (d9945563).

New features

  • Blocks are now validated according to either the initial proof-of-work algorithm or the difficulty and proof-of-work hash algorithm specified by DCP0011 (3a52f00a).

  • Votes created by the wallet will use the subsidy split described by DCP0012 if the agenda is active (8374bd52).

  • Mixed ticket purchasing now trickles the ticket purchases with random delays to harden against profiling specific buyers by their ticket timings (e71decbd).

  • Mixed ticket purchasing was implemented by the WalletService.PurchaseTickets gRPC method (5b6ab6da, 4c697648).

  • A WalletService.Address gRPC method was added to query the wallet for details about its addresses (80a0e716, a333c1f5).

  • A WalletService.DumpPrivateKey gRPC method was added to dump private keys of wallet addresses (c609d558, 12b9c552).

  • A VotingService.SetTSpendPolicy gRPC method was added to set a voting policy for a specific TSpend transaction. A VotingService.TSpendPolicies gRPC method was added to query the voting policies of these specific TSpends (7352c1cb).

  • In SPV mode, TSpends are now fetched at wallet startup (eab54c36).

  • A --cpuprofile config flag was added to write a pprof CPU profile for the entire process execution. The --memprofile flag was changed to also profile the entire process execution rather than stopping after 5 minutes (39a379eb).

  • An additional newline character is no longer required when providing the seed during seed restore when entering seeds in hexadecimal form (f31e848f).

  • The passphrase confirmation can now be piped during the --create prompts (dd93c2f6).

Changelog

The following lists all commits included in dcrwallet v1.8.0 that were not backported to a prior 1.7.x release:

  • e71decbd: Trickle tickets during mixed buying
  • 82f59828: Update version prerelease and metadata for release-v1.8 branch
  • 92529a4b: Prepare v1.8.0 release
  • 3a52f00a: Validate that blocks satisfy either V1 or V2 PoW
  • 85b48444: Bump deps.
  • 96817277: Remove features marked deprecated
  • 8374bd52: Follow DCP0012 once activated.
  • 99be2039: Remove jsonrpc/types module replacement
  • 1683d3ae: multi: Fix "the the" comment typos.
  • c9fc99b2: vsp: Don't revoke tickets.
  • a8f2b058: vsp: Add missing mutex locks.
  • b6467521: multi: Introduce AgendaChoices type.
  • 816f16d6: vsp: Don't export Policy.
  • d95475b1: vsp: Unparam Policy.
  • bf8e7a09: vsp: Don't export Wallet.
  • 6cc8d053: Validate VSP configs on startup.
  • a19dcb43: jsonrpc: Respect configured VSPMaxFee.
  • c6933a35: Move logger subsystem variables to internal package
  • 7cd8248f: linter: fixes
  • 72eefbed: Revert unintentional context change from previous commit
  • dc38eb65: Unexport wallet SaveRescanned method
  • 0aeb02cd: vsp: Use client provided by vspd package.
  • 89623dc9: build: Test against Go 1.20
  • 69d8b47b: multi: linter cleanup
  • dfcac12f: Avoid spv data race on rescanned block hashes
  • 86898358: Bump remaining golang.org/x/* modules
  • e89da321: Bump golang.org/x/sys module
  • 904a6db4: cmd: update to latest deps
  • 5b6ab6da: multi: Modify PurchaseTickets method.
  • 4c697648: rpc: Add parameters to PurchaseTickets.
  • c609d558: server: Add DumpPrivateKey.
  • 12b9c552: rpc: Add DumpPrivateKey method type.
  • 80a0e716: server: Add Address method.
  • a333c1f5: rpc: Add address method type.
  • eab54c36: Fetch tspends in SPV mode
  • 39a379eb: dcrwallet: Add --cpuprofile option
  • 7352c1cb: rpc: Add TSpendPolicies and SetTSpendPolicy requests
  • f31e848f: Do not require additional newline prompting a hex seed
  • dd93c2f6: Allow passphrase confirmation to be read from non-tty
  • 566eff83: multi: Remove some unused code
  • 183083d6: multi: Update dcrd pkgs to wip major versions
  • 5e7d5e73: multi: Bump major module version to 3
  • b16f7ca0: vsp: Pass the context to feepayment instead of creating a new one.
  • fe1bb25f: tests: Use a single context in tests.
  • 3b3e9e04: build: Test against Go 1.19
  • 3d518eab: whack a comment
  • ed842ec8: Run go fmt from Go 1.19 over the tree
  • 7cdfb44a: Bump development version
  • 4ed5a4c6: Prevent panic in RPC-mode getstakeinfo
  • 4c162c4f: Fix compatibility with latest development dcrd
  • 04d8d0f6: Fix regen.sh return code if $UID is unset
  • 736efd2a: Make default fee amount constant more readable
  • 185f9cd7: Update to latest gRPC
  • 4941af16: Updates for Go 1.18
  • 80bcd2f3: Switch away from deprecated terminal package
  • d9945563: wallet: No taking voting addresses.

Code Contributors (alphabetical order):

Read more

v1.6.3

17 May 14:07
Compare
Choose a tag to compare
release-v1.6.3

release-v1.6.3

v1.6.2

17 May 14:07
Compare
Choose a tag to compare
release-v1.6.2

release-v1.6.2