JoinMarket wants to solve the problem of privacy, fungibility, fees, and scalability in bitcoin. It’s an innovative kind of mixing technology which uses CoinJoin.
Before a deep dive into JoinMarket, it’s important to understand the CoinJoin method which was proposed by Gregory Maxwell, ex-CTO of Blockstream who quit in January 2018 to work on Bitcoin independently.
What is CoinJoin?
CoinJoin allows multiple users to pool in their bitcoins for a common ‘master transaction’ to anonymize the transaction. When a transaction has many inputs and many outputs, it cannot be ascertained which output maps to which inputs, thus making the transaction more private. These transactions are not entirely anonymous and offer relative privacy.
A simple explanation of CoinJoin. Source: Wiki
In such transactions, where mixing of inputs and outputs takes place, if analytical tools have sufficient data from exchanges and merchant sites – can run statistical correlation analysis based on the value of coins and uncover the participants. The amount of transaction cannot be hidden in a CoinJoin transaction.
The main advantages of CoinJoin apart from providing better privacy is twofold:
- Cheaper – Participants can agree to distribute fees charge amongst themselves on the basis of a weighted ratio of the transaction value or by dividing the transaction cost by the number of participants.
- Scalability – By adopting CoinJoin, the space all those transactions would have taken if done separately would be much more than space occupied by a single CoinJoin transaction.
“A CoinJoin transaction requires other people to take part. The right resources (coins) have to be in the right place, at the right time, in the right quantity. This isn’t a software or tech problem, its an economic problem.”
What the Fungibility?
According to Investopedia, the definition of fungibility is:
“Fungibility is a good or asset’s interchangeability with other individual goods or assets of the same type.”
Let’s understand fungibility by an example of a dollar. A dollar is fungible because a dollar is a dollar. There’s no good dollar or bad dollar. One can only check whether the dollar is real or a counterfeit, but can’t check the source or the trail of the dollar. If a person steals a dollar and pays someone with that, they don’t need to care about the source of it, after all, cash is an anonymous, history-less instrument.
Things are not quite same with Bitcoin. All bitcoin transactions are available on a public ledger where anyone who knows public address can check your complete transaction history. Traditional finance instruments are anonymous by design, access to transactions history, balance, and other details are only available to account holders.
A bitcoin should be a bitcoin; it should not be a deep-web bitcoin or a hacked bitcoin. There’s no way to trace whether the cash is ‘bad-cash’ because it was stolen before exchanging hands. Transparency which is one of the main features of the blockchain comes at the cost of the privacy. Since bitcoin is out there to replace banks and institutions, it must at least offer the same benefits they do.
Hence, we can informally define fungibility as a property which makes a unit indistinguishable from other units.
A Bitcointalk user ‘binford 6100′ offered two bitcoins for one bitcoin which can be traced back to famous pizza transaction. Fungibility, not so much?
According to JoinMarket’s founder Chris Belcher, CoinJoin never picked up because of lack of incentives for participants.
“A CoinJoin transaction requires other people to take part. The right resources (coins) have to be in the right place, at the right time, in the right quantity. This isn’t a software or tech problem, its an economic problem. JoinMarket works by creating a new kind of market that would allocate these resources in the best way.” — Github Description
JoinMarket primarily has two participants. A market taker pays a fee to market maker in a typical transaction.
Maker: A person who wants to earn income on their bitcoins by investing them or someone who has time to wait but doesn’t want to pay the fees. Makers will always be available for CoinJoin.
Taker: A person who wants to use CoinJoin for privacy or for reducing the fees. A taker can initiate a transaction at any time.
JoinMarket is trustable because it functions using self-enforcing and self-executing smart contracts and participant’s private keys never leave their system. In the worst case scenario if some participant screws up, the transaction will not happen. Hence, it allows users to do CoinJoin with complete strangers.
In JoinMarket, the liquidity and fees are balanced by the market while the mechanism enables mixing without escrow or custodial parties.
“I’ll still continue to promote JoinMarket as the best CoinJoin implementation, and the best combination of trustlessness + privacy + ease-of-use + liquidity for Bitcoiners who don’t want to use altcoins or OTC trades or mining,” wrote Monero’s Riccardo Spagni about JoinMarket.
To learn more about JoinMarket, check out this video from Chris Belcher.