While making transactions through credit cards or online banking, we take the privacy of our financial transactions for granted. However, various platforms on the Internet track the time, amount of a transaction, your personal information (name, place, etc.) when you make the online transaction their payment gateways. The credit and debit history of individuals is sensitive data. It’s availability to various third parties, puts our privacy in jeopardy.
In the traditional banking system, only the government has the power to access transaction history. But when the Internet and banks mix together, the credit/debit information also reaches the e-commerce websites, social media platforms, etc. This is an old prevailing problem in the infrastructure. The Cryptocurrencies do claim to provide privacy but in the case of Bitcoin (and various other digital currencies), all the transactions can be tracked down to individual addresses.
Also, in traditional banking, only the government and private companies can track your transactions. But in the cryptocurrencies, the data is stored on the ledger (Blockchain; shared history of transactions) and it is public by default. Which means the transactions related to a particular public address can be easily traced. A Blockchain analysis can reveal how much coins are in possession of the individual accounts and all the transactions they have ever made. This is where CoinJoin comes in to solve the problem by anonymizing the transactions.
Let’s suppose that you wish to donate money to the non-profit that you support. On making transactions using the traditional banking system, the bank and respective authorities have power and access to read your past transactions. But this information is sensitive to you. Similarly in Bitcoin, if people are using it to donate money, the transaction can be tracked down to a single public address.
However, in a truly private transaction, only the participating parties will know the amount of money being sent and received in between. Along with obfuscating the amount, the sender and receiver should not be trackable. In other words, no third party will get to know the receiver, sender, and the amount involved in the transaction. CoinJoin is one popular strategy that can bring complete privacy to cryptocurrency transactions.
There are many projects, implemented solutions, and fully functional cryptocurrencies that offer privacy in transactions. Monero and Z-cash are popular examples that implemented the algorithms like Confidential Transaction, Zero-knowledge proofs, and Ring Signature to achieve privacy and security. “Confidential Transactions” for one is a solution that hides the number of coins being sent from one person to the other. CoinJoin takes it a step further by anonymizing the senders and receivers too.
Here, suppose Alice wants to send 1BTC from address A to address B. And Bob wants to send 1BTC from address C to address D. A normal Bitcoin transaction will have the inputs and outputs as amounts of BTC and addresses. All these transactions are stored in the ledger (the Blockchain) and the entire data is public to maintain the integrity of the Blockchain. CoinJoin transactions can obfuscate and make it harder to analyze and find the two parties involved in a transaction.
Alice wants to transfer 1 BTC from address A to address B. Bob wants to transfer 1 BTC from address C to address D.
CoinJoin gives them a way to combine their transfers into a single transaction that has two inputs (A and C) and two outputs (B and D). Someone observing the Blockchain no longer knows which one of the outputs is Alice's and which one is Bob's.
Because of the cryptographic magic behind the CoinJoin, the participants of a shared transaction (there can be more than two of them) do not have to trust each other. Thus, CoinJoin is a trustless transaction. Compared to traditional Bitcoin mixers, there is no possibility of coins being stolen. Also, CoinJoin transactions are compact and incur no extra fees besides the usual transaction fees.
Above is the snippet of a CoinJoin transaction. As you can notice that there are a number of senders and receivers. The number of senders and receivers needs not to be the same. In other words, one person may send to many and vice versa one person may receive form many. The meta-data that matters at the end of the transactions is that the total amount of input should match the total amount of output.
In other words, the CoinJoin Strategy would mix a lot of transactions from senders and send them to the respective recipients in a black box. The actual amount being sent will reach the respective receiver. An analysis of the transaction by outsiders will show them the amounts but it is hard to find two matching amounts in a sea of transactions.
Many popular media outlets reported that such wallets can make money laundering possible and that it should not be ignored instead of implemented. Also, many implementations of CoinJoin deploy a server that creates virtual addresses and uses them to mix transactions. A server will partially make the Bitcoin centralized and that is one reason why the developers have not been as receptive to the CoinJoin. Another kind of implementation can make the entire thing decentralized but that too will require an upgrade in the Blockchain.
As fancy as it sounds, a request was put up on Bitcoins’s GitHub repository regarding the implementation of CoinJoin and after several discussions, it was dropped. Later, the introduction of Confidential Transactions steered a debate of CoinJoin vs. CT. But the essence of CoinJoin is that it hides the links between transactions and CT hides the amount being transferred. Though, if both the strategies are applied together, it would make a powerful combo. Still, people can make use of these privacy tools via third-party wallets. Some of the implementations are Dark Wallet, Sharedcoin, Shufflepuff, and JoinMarket.
For now, there are many new solutions that need to be taken care of in Bitcoin and other digital currencies. Because of the possibility of partial centralization, less demand, and overloaded development timelines, CoinJoin is not on priority for various coins. It doesn’t mean that privacy coins and private transactions are problems of low priority. The third party apps are already in the ecosystem to give the end users a taste of every new fancy upgrade in the crypto space. The most important advancements will stay and some will be overshadowed by the better implementations.