How CoinJoin actually works¶
Bitcoin privacy, explained
Every Bitcoin transaction is public forever. CoinJoin is one way to make the transaction graph harder to follow — clearly explained, down to the byte, with the honest limitations and a source-available reference implementation you can verify.
The combined transaction¶
Instead of paying alone, many participants combine their payments into a single transaction. A coordinator assembles it but never holds your keys. An observer can't reliably tell which input paid which output.
inputs
equal outputs
The four steps¶
- Register — you submit the coins you want to join and a destination address into a pool of a chosen size.
- Batch — the coordinator waits until at least five participants have chosen the same output size, then groups them into one candidate transaction. Your round won't broadcast below that floor; a larger set is stronger.
- Sign offline — each participant signs only their own inputs, on their own machine. No key ever reaches the coordinator.
- Broadcast — the fully-signed transaction goes to the network: one transaction, many indistinguishable equal outputs.
Why equal denominations¶
If outputs are all different amounts, anyone can match them back to inputs by value. Equal-value outputs are the whole trick: with ten identical 0.05 BTC outputs, an observer faces ten equally-likely explanations for where each coin came from.
Note
A CoinJoin doesn't move your coins anywhere — you keep custody throughout. It only changes how the transaction looks to someone analysing the chain.
Ready to try it?
Continue: what it hides — and what it doesn't →
Prefer the unvarnished version first? Read what CoinJoin can't hide →.