As new privacy-enhancing tools are becoming available, Bitcoin can be used more privately now than ever before.
Bitcoin is trustless and permissionless — anyone can use it without having to provide their real-world identity. This leads many people to think of Bitcoin as an anonymous network, where transactions are private, however in reality this is far from the truth. Bitcoin can work without a trusted third party in part because it is radically transparent — the entire transaction history is recorded and verified by everyone (well, every full node) and so is publicly available for anyone to analyze.
This full transaction history provides a structure known as the ‘transaction graph’ which is essentially how transactions are connected together, and shows how the bitcoin has moved between different addresses.
This public information can reveal a lot about the nature of transactions and be used to track the movement of funds and de-anonymize individual addresses. For example, although an individual bitcoin wallet address can be generated and used anonymously, much of the activity on Bitcoin is linked to real-world identities via regulated exchanges and custodians who are required to share customer information with authorities.
Using this information, companies that specialise in blockchain analysis can link any purchases or transactions back to the identity of the person who first purchased the coins.
The public nature of the transaction graph threatens the promise of Bitcoin as a fungible currency, where all coins have equal value, and can be used privately. Fortunately, there are several techniques that can be used to significantly improve the privacy of transacting with bitcoin that work by essentially obscuring and breaking the transaction graph.
What is a CoinJoin?
The most well known of these is called a ‘CoinJoin’ — this is essentially a combination of many separate individual transactions into a single larger one, such that it is not possible to link the transaction inputs (the origin of the coins) to the outputs (the destination addresses of the coins) with the on-chain data.