What Is CoinJoin?
CoinJoin is an anonymization strategy that protects the privacy of Bitcoin users when they conduct transactions with each other, obscuring the sources and destinations of BTC used in transactions.
CoinJoin requires multiple parties to jointly sign a digital smart contract to mix their coins in a new Bitcoin transaction, where the output of the transaction leaves the participants with the same number of coins, but the addresses have been mixed to make external tracking difficult.
The process is also known as coin mixing.
- CoinJoin is a process used to anonymize Bitcoin transactions online.
- CoinJoin involves a multi-party Bitcoin transaction where all parties to the transaction put in and get out the same amount of Bitcoin, but the addresses are mixed in the transaction making the origin of the coins difficult to trace.
- CoinJoin is typically performed automatically by dedicated services that carry it out. Performing a CoinJoin without such a tool is difficult and requires advanced coding skills.
How Does CoinJoin Work?
CoinJoin was developed to introduce a layer of privacy to otherwise public Bitcoin transactions. The phrase was coined by Bitcoin developer Gregory Maxwell in an announcement thread on the Bitcoin Forum.
Why Bitcoin Is Not Exactly Private
Though Bitcoin in its early days had a reputation for being anonymous and so was used for transactions on darknet sites such as Silk Road, the cryptocurrency actually provides very little privacy. Bitcoin addresses do not list users' names and addresses, but they are easily traceable and someone might be able to associate your IP address with your Bitcoin transaction.
Once one user has been identified, researchers can use common digital forensic methods to trace all the contacts in the network. This isn't a bug of Bitcoin, it is the foundation of its "trustless" system: all transactions are public to prevent user fraud.
Other coins have been developed to incorporate user privacy into the code of the coin. Monero, ZCash, and Dash are prominent examples. Monero's privacy technology is similar to CoinJoin, in that it uses ring signatures to mix the spender's signature with the signatures of other users to make tracing addresses nearly impossible.
CoinJoin Is the First-Generation Privacy Measure for Bitcoin
A user that wants to implement CoinJoin in their Bitcoin transaction needs to find another user who also wants to mix coins, and together they initiate a joint transaction. The address a bitcoin is sent from is referred to as an input.
Consider the following transactions made at the same time: A purchases an item from B, C purchases an item from D, and E purchases an item from F. Without CoinJoin, the public blockchain ledger would record three separate transactions for each input-output match. With CoinJoin, only one single transaction is recorded. The ledger would show that bitcoins were paid from A, C, and E addresses to B, D, and F. By masking the deals made by all parties, an observer cannot with full certainty determine who sent bitcoins to whom.
Though the process seems clear in theory, in practice joining transactions is hard for several reasons. In order for the participants in the joining to remain anonymous, they have to connect over a Tor network, they have to know quite a bit about coding, and they have to trust each other.
To overcome these hurdles, CoinJoin developers started early to create tools that would make the process automatic for most users. The first attempts at a CoinJoin tool were incorporated into wallets. The earliest examples were Dark Wallet, JoinMarket, and SharedCoins. These platforms aimed to provide an extra level of data masking for users transacting in Bitcoin.
Later efforts include Wasabi Wallet and Whirlpool from Samourai Wallet. There is some controversy, however, as to how trustworthy and secure these wallets are and how well they anonymize Bitcoin holdings.