decred / dcrwallet

A secure Decred wallet daemon written in Go (golang).
https://decred.org
ISC License
211 stars 153 forks source link

Replace client-server with peer-to-peer mixing #2351

Closed jrick closed 1 month ago

jrick commented 1 month ago

This commit converts dcrwallet from the CoinShuffle++ mixing server to perform a similar protocol over peer-to-peer messages that propagate the Decred network. Besides the swap between the different client libraries, this commit also adds support for sending and receiving mixing messages over RPC and SPV modes.

The existing --csppserver option will no longer enable mixing using the server. Instead, the option has been deprecated in favor of a --mixing option. However, until the option is removed, a configured --csppserver will imply using the new mixing protocol.

It is recommend, but not required, to build csppsolver and either install it to PATH, or provide the path to the executable with dcrwallet's --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 this way), and once these dependencies are met, csppsolver can be installed with:

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