All articles

What is coinjoin?

Trezor's third party coinjoin coordinator zkSNACKs discontinued their service on 1st June 2024. Coinjoin users do not need to move their private funds elsewhere, and all accounts will remain accessible after this date. Learn more.


Bitcoin is not inherently private. This is because transactions and balances are made public on the blockchain, thus rendering them traceable. Moreover, if a user purchases bitcoin from an exchange requiring KYC (know your customer) documentation, the funds are directly linked to a personal identity.
 

Coinjoin is an optional tool that enhances privacy in bitcoin transactions: when bitcoin users conduct transactions with one another using coinjoin, they obscure the origins and destinations of the funds, greatly enhancing their privacy.  

In the simplest terms, coinjoin combines multiple coins (UTXOs) from multiple users into a single transaction. The output of this transaction yields the same value of bitcoin, but the addresses have now been changed. This makes it extremely difficult for external parties to deduce the relationship between the coinjoin transaction's inputs and outputs, because the sources of the UTXOs are obfuscated.

Coinjoin involves multiple rounds, which are an essential component of privacy-enhancing techniques used in bitcoin transactions. In simple terms, each round consists of:
  • Input registration: one or more coins (UTXOs) in your coinjoin account are automatically registered to the coinjoin transaction.
  • Output registration: one or more outputs are created for the coinjoin transaction—these are fresh addresses for where the funds will be sent.
  • Coinjoin transaction creation: a coinjoin transaction is created by combining all user inputs and outputs into a single transaction.
  • Transaction signing: each user signs their part of the coinjoin transaction with their private key.
  • Transaction broadcast: the coinjoin transaction is broadcast to the Bitcoin network and recorded on the blockchain.
 

How private are funds after coinjoin?

Privacy level represents the number of identical amounts used in a coinjoin transaction. If an anonymity level of e.g. 1-in-5 is reached, this means that one UTXO is indistinguishable from 4 other UTXOs of exactly the same amount in the same transaction.


Your sats are considered private whenever the desired privacy threshold has been reached. If you move funds from a coinjoin account to any other standard bitcoin account, the already private coins will be combined with non-private ones, effectively ruining the privacy of your coins.

 
The ‘privacy level’ one can achieve is dependent on the number of other participants with indistinguishable outputs.
 
  • If you send coinjoined coins from your coinjoin account, the receiving party cannot directly trace the origin of the funds.
  • If you receive bitcoin to your coinjoin account and anonymize it, the sender will not be able to tell for certain how you spend the funds.

Coinjoin does not guarantee 100% privacy, but it does improve bitcoin user privacy significantly when compared to transactions made without this protocol.
 

Coinjoin FAQs

Is coinjoin for bitcoin only?

Yes, coinjoin is bitcoin-only.


Do all exchanges accept coinjoined bitcoin?

You may encounter certain exchanges or merchants that require KYC (know your customer) documentation when trading bitcoin which have been part of a coinjoin transaction. To bypass KYC requirements it is recommended to find an alternative service provider that supports privacy.


Can I change (lower) the privacy of other coinjoin participants?

Possibly. Like with any other coinjoin mechanism, if you combine multiple UTXOs from one coinjoin together, you reveal that these UTXOs belong to one identity, reducing privacy levels of coins with the same denomination in this coinjoin.