What Is CoinJoin? – Enhancing the Privacy of Bitcoin Transfers
Key Questions Answered
- CoinJoin is an effective method of enhancing your Bitcoin transaction privacy. CoinJoin is a network operation where transaction inputs, i.e., the amounts to be sent, from several senders are combined into a single transaction and sent to multiple recipients on the network.
- By combining the transactions into one, CoinJoin makes it difficult to determine who paid whom and in what precise amounts.
- Currently, the most popular CoinJoin services include Wasabi Wallet, Whirlpool service by Samurai Wallet, and JoinMarket. Among these, Wasabi Wallet is probably the most popular implementation of CoinJoin.
When Bitcoin was launched in 2009, there was no shortage of enthusiasm with regards to its privacy features. Many early adopters of Bitcoin and blockchain believed that the system offered complete transaction anonymity and value storage.
However, it soon became obvious that a Bitcoin user’s identity may be revealed, and as a result, their entire transaction history could become public. Significant effort was dedicated by the Bitcoin community to find new ways to enhance the user community’s privacy.
The concept of CoinJoin was born some four years after Bitcoin’s launch and by now, has a lot of proponents and users.
Privacy of Bitcoin Transactions
Many people believe that Bitcoin (BTC) provides total anonymity of transacting. However, this is a common misconception. Bitcoin is a pseudo-anonymous rather than a completely anonymous network. While your personal details, such as name or address, are never recorded on Bitcoin, your complete transaction history might be revealed if, at any stage, your identity is linked to one of the addresses you have used on the network.
It is true that all asset transfers on the Bitcoin platform are between two addresses, which are not directly linked to any person. A Bitcoin address is a series of hashed characters, and there is no way to confidently claim that an address that received a certain transaction belongs to a particular person.
However, if you decide to use any services outside of the Bitcoin network, you might have your identity revealed in the process. The most common way is through the registration process on centralized crypto exchanges. Many of these exchanges require a new customer to submit identity proof documents as part of their KYC process.
If after registering and using the exchange for crypto trading, you ever transfer any funds to a wallet or address that has been used for other transactions, all these transactions may now be linked to you. Naturally, most crypto exchanges are not out there to track all your dealings. They usually have their own business to worry about.
However, if the exchange is pressured by the government to reveal identity details of its user base, this is when your personal details might become jeopardized in a realistic scenario. Governments often have significant resources and are adept at conducting deep online analyses to track identities.
Another way how your identity might be linked to your Bitcoin wallets and addresses is via the use of online payment systems that accept cryptocurrency as a valid form of payment. Similar to the registration at centralized crypto exchanges, your ID details might be required when you sign up to these payment systems and transfer your Bitcoins to your account.
To be clear, your ID is not going to be automatically linked to your Bitcoin funds and past transactions the moment you register at some online resource and provide your ID documents. However, leaving these “traces” might make revealing your crypto history possible if some entity decides to get their hands dirty with some deep analysis of your crypto dealings.
Potential traceability of your Bitcoin transactions to your identity was one of the key reasons why Bitcoin’s mysterious creator, Satoshi Nakamoto, recommended that you use a new address for each Bitcoin transaction. Even this measure may not completely protect your identity, and still expose your identity.
CoinJoin – A Method of Enhancing the Privacy of Bitcoin Transactions
One effective method of enhancing your Bitcoin transaction privacy is CoinJoin. To understand the concept behind CoinJoin, it is first important to know how a Bitcoin transaction works.
Every Bitcoin transaction has inputs and outputs as the key components. The transaction input is the amount of Bitcoin that the sender wants to transfer to the receiver’s address. Conversely, the transaction output is the amount that gets deposited into the receiver’s address.
How does CoinJoin work?
For example, if a user named Vitalik sends 3 BTC to another network user, called Satoshi, that 3 BTC deducted from Vitalik’s address is the transaction input, while the 3 BTC arriving at Satoshi’s address is the output. Every transaction output in Bitcoin is also an input to a further transaction, when the receiver of the funds decides to spend them by transferring the funds to another address later on.
While Satoshi holds those 3 BTC in his address without immediately spending it, the amount is referred to as an unspent transaction output (UTXO). Since Bitcoin is a public network, any person may view the inputs, outputs, and UTXOs related to any network address.
CoinJoin is a network operation where transaction inputs, i.e., the amounts to be sent, from several senders are combined into a single transaction and sent to multiple recipients on the network. By combining the transactions into one, CoinJoin makes it difficult to determine who paid whom and in what precise amounts.
The image below illustrates the basic logic behind CoinJoin.
An example of a CoinJoin transaction (Source: CoinLab.com)
In this example, three users (A, B, and C) decide to send funds to five recipients (D, E, F, G, and H). The senders each contribute a certain amount of BTC, and the recipients get different amounts, none of which are indicative of who actually paid whom in this operation.
The total amount “pooled in” by the senders is 0.9 BTC, and that is exactly the amount that has been distributed among the recipients. In reality, a small part of that 0.9 BTC is deducted by the CoinJoin service operator.
To be clear, this transaction does not necessarily happen between three different individuals as senders and five people as recipients. Since Bitcoin transfers are carried out between addresses and each person may own more than one address, it is possible that a smaller number of different people are involved. In fact, if you decide to do so, e.g., for privacy enhancement purposes, you may setup a similar CoinJoin operation using your own addresses and send funds to yourself. In other words, the entire CoinJoin operation may involve just one person regardless of how many sender and receiver addresses are used.
While the sender addresses in the example above use different amounts, 0.5, 0.1, and 0.3 BTC, it is advisable to use equal sending amounts in a CoinJoin transaction. That is because using equal amounts makes it even harder to deduce who actually transacted with whom in this entire CoinJoin procedure.
CoinJoin History and Current Offers
The key idea behind CoinJoin is to further enhance the privacy of operations on Bitcoin. From the functional point of view, CoinJoin has always been possible on the Bitcoin blockchain. It was first described as a potential idea by blockchain developer Greg Maxwell in 2013 in a post on the bitcoin.org discussion forum.
While the idea behind CoinJoin is simple, and the Bitcoin network supports it natively, the actual implementation of this procedure is complicated. That is why the Bitcoin community needed not only the idea description but also the actual service implementation by developers.
A year after Maxwell’s post, the first notable CoinJoin project, Dark Wallet, was launched by developers Cody Wilson and Amir Taaki. However, Dark Wallet and some other earlier CoinJoin platforms have largely failed in the last few years.
Currently, the most popular CoinJoin services include Wasabi Wallet, Whirlpool service by Samurai Wallet, and JoinMarket. Among these, Wasabi Wallet is probably the most popular implementation of CoinJoin.
Regardless of which service you choose, be aware that in nearly all cases, you will need to communicate with other individuals willing to use the CoinJoin service jointly with you via secure browsers, primarily the Tor browser. This is because standard browsers and internet protocols do not obfuscate your IP address, and thus, leave you vulnerable to online detection even if you use CoinJoin.
Bitcoin transactions, while offering some degree of confidentiality, are not truly anonymous. If your identity is somewhat linked to a Bitcoin address, your entire history of transactions may be revealed.
Due to these pseudo-anonymity limitations, there has been ongoing research by the Bitcoin community into ways of improving the privacy of transacting. One such privacy-oriented solution is CoinJoin.
In a CoinJoin transaction, several sender addresses pool their BTC funds together, and the pooled funds are sent to several recipient addresses. The reshuffling of the amounts in-between the send and receive functions makes it hard for others to deduce which address actually paid to each recipient.
While CoinJoin is not a 100% guarantee of transaction anonymity, it is still much better than standard Bitcoin transactions from the privacy point of view. The CoinJoin services are implemented in the form of wallets, with the first of these appearing in 2014. At the moment, the leading CoinJoin services are Wasabi Wallet, JoinMarket, and the Whirlpool service provided by Samurai Wallet.