<p>Whirlpool (and Chaumian Coinjoin in particular) creates a new transaction where your coins are mixed with other users coins while allowing you to ensure you receive the same amount of coins out of the transaction that you put into the transaction (less transaction fees, of course).</p>
<p>The Samourai Wallet team documents how their implementation works quite nicely <a href="https://code.samourai.io/whirlpool/Whirlpool/-/blob/whirlpool/THEORY.md" rel="nofollow noreferrer">here</a>.  From that page:</p>
<blockquote>
<p>Chaumian CoinJoin was briefly described by Maxwell:</p>
<p>Using chaum blind signatures: The users connect and provide inputs (and change addresses) and a cryptographically-blinded version of the address they want their private coins to go to; the server signs the tokens and returns them. The users anonymously reconnect, unblind their output addresses, and return them to the server. The server can see that all the outputs were signed by it and so all the outputs had to come from valid participants. Later people reconnect and sign.</p>
<p>Simplified workflow:</p>
<ol>
<li>User provides its input and a blinded output to the Tumbler.</li>
<li>Tumbler signs the blinded output and gives it back to the User.</li>
<li>User unblinds the signed blinded output and provides the server the signed output through a different anonymity network identity.</li>
<li>The Tumbler constructs the CoinJoin transaction and gives out to the Users for signing.</li>
</ol>
<p>Every mix via Chaumian CoinJoin comes with a guarantee that Tumbler can neither violate anonymity, nor steal bitcoins. Furthermore Chaumian CoinJoin is by no means complex. Its simplicity allows it to be one of the most, if not the most performant on-chain mixing technique. A mixing round can be measured in seconds or minutes.</p>
</blockquote>

CC BY-SA 4.0
2023-12-15T04:48:44.747Z
2023-12-15T04:48:44.747Z
Hannah Vernon
<p>Looking to potentially run a CoinJoin via <a href="https://sparrowwallet.com/docs/mixing-whirlpool.html" rel="nofollow noreferrer">Whirlpool</a> in sparrow but am confused how the safety of my funds is guaranteed. While the documentation states that I 'retain full ownership of my funds at all times' I am confused how this is actually the case. It is required that I use a hot wallet to execute, so that Whirlpool can sign the mixing transactions, but I am confused re: safety as a result.</p>
<ol>
<li>If Whirlpool can sign the mixing transaction couldn't they also sign a txn to a different wallet?</li>
<li>How is ownership retained at all times?</li>
</ol>
<p>Note: I understand Whirlpool and Sparrow are FOSS but I am not technically sophisticated enough to read through/compile/analyze the code myself to answer these questions.</p>

<mixing><coinjoin><sparrow-wallet>
Is Whirlpool safe to use?
Runeaway3
# Is Whirlpool safe to use?

(Asked by: username_0 on 2023-12-11)

Looking to potentially run a CoinJoin via [Whirlpool](https://sparrowwallet.com/docs/mixing-whirlpool.html) in sparrow but am confused how the safety of my funds is guaranteed. While the documentation states that I 'retain full ownership of my funds at all times' I am confused how this is actually the case. It is required that I use a hot wallet to execute, so that Whirlpool can sign the mixing transactions, but I am confused re: safety as a result.

1. If Whirlpool can sign the mixing transaction couldn't they also sign a txn to a different wallet?
2. How is ownership retained at all times?

Note: I understand Whirlpool and Sparrow are FOSS but I am not technically sophisticated enough to read through/compile/analyze the code myself to answer these questions.

**Tags:** mixing, coinjoin, sparrow-wallet


---

## 1 answers

### Answer by username_1 on 2023-12-15. Score: 3 | Accepted answer

Whirlpool (and Chaumian Coinjoin in particular) creates a new transaction where your coins are mixed with other users coins while allowing you to ensure you receive the same amount of coins out of the transaction that you put into the transaction (less transaction fees, of course).

The Samourai Wallet team documents how their implementation works quite nicely [here](https://code.samourai.io/whirlpool/Whirlpool/-/blob/whirlpool/THEORY.md). From that page:

> Chaumian CoinJoin was briefly described by Maxwell:
>
> Using chaum blind signatures: The users connect and provide inputs (and change addresses) and a cryptographically-blinded version of the address they want their private coins to go to; the server signs the tokens and returns them. The users anonymously reconnect, unblind their output addresses, and return them to the server. The server can see that all the outputs were signed by it and so all the outputs had to come from valid participants. Later people reconnect and sign.
>
> Simplified workflow:
>
> 1. User provides its input and a blinded output to the Tumbler.
> 2. Tumbler signs the blinded output and gives it back to the User.
> 3. User unblinds the signed blinded output and provides the server the signed output through a different anonymity network identity.
> 4. The Tumbler constructs the CoinJoin transaction and gives out to the Users for signing.
>
> Every mix via Chaumian CoinJoin comes with a guarantee that Tumbler can neither violate anonymity, nor steal bitcoins. Furthermore Chaumian CoinJoin is by no means complex. Its simplicity allows it to be one of the most, if not the most performant on-chain mixing technique. A mixing round can be measured in seconds or minutes.


---

