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.
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.