by Joseph Young
JoinMarket is a mechanism based on CoinJoin, an anonymization method for bitcoin transactions proposed by Gregory Maxwell. The core concept of JoinMarket is to enable bitcoin holders to allow their coins to be mixed in return for a fee as CoinJoin transactions, and allow owners of bitcoin to earn a stable income.
Currently, popular bitcoin wallet platform and payment solutions provider Mycelium is leading the development of a CoinJoin solution, to enable Mycelium wallet users to anonymize transactions, and make them unknown to third parties. In theory, the CoinJoin method is relatively simple. If a user wants to make a CoinJoin or anonymous payment, the wallet platform, in this case Mycelium, finds another user who wants to make a CoinJoin payment and combine the two payments together. The two payments will be then known as a joint payment, which will have a distorted direction and origin, becoming virtually impossible to be traced.
By implementing the CoinJoin method of mixing transactions, the JoinMarket team released the third version of its mechanism with a vision to improve the general privacy of the network. Since its initial launch of the mechanism, the JoinMarket team has been continuously conducting pilot tests to evaluate the limitations of its security and user interface. The last update called JoinMarket version 3.0 released on February 16, 2016, improved the Confirm Transaction dialog, an integration of a default re-sync wallet requirement, and added a critical security update.
The fast-paced development of JoinMarket has begun to entice many developers in the cryptocurrency community who support CoinJoin transactions and anonymous payments into contributing to the creation of a user-friendly application by implementing the latest version of the JoinMarket mechanism. Interestingly. the community has seen developers collaborating with bitcoin experts to develop a user interface for JoinMarket since October 2015 when they were convinced by an infographic published about the potential application of JoinMarket and its core idea. A section of the infographic is seen below:
As a response to the growing demand of bitcoin developers and users, JoinMarket lead developer Adam Gibson recently released a graphical user interface (GUI) which can be utilized for sending out CoinJoin payments.
At this stage of the development, the GUI is still simple, with minimal functionalities. Using the interface, users can create JoinMarket wallets, generate passwords for encryption and automatically load from the blockchain. Once a user sends bitcoins to the JoinMarket wallet, it begins to display the external addresses used and the balance of the wallet after syncing with the blockchain.
As shown above, the JoinMarket GUI displays both external and internal addresses. The difference between the addresses are that the external address is used for paying in, while the internal address is used to pay out to another bitcoin wallet.
Using the GUI, Gibson tested to see if JoinMarket’s CoinJoin transaction would be sent out successfully. The JoinMarket mechanism can deal with up to 20 counterparties, or transactions, being combined into one. However, Gibson explains that users may experience problems when the number of counterparties reach 8, because the transaction fee becomes too large.
“The number of counterparties can be anything from 2 up to 20; realistically, numbers greater than about 8 can sometimes get a bit problematic, for a number of reasons, e.g. the fact that the transaction fee gets large, there might not be enough counterparties with sensible fees, messaging delays etc. Having said that, joins with 10-15 counterparties can be done, and have been. But for ordinary working, I’d recommend a figure between 3 and 6 as fine,” explained Gibson.
After confirming the CoinJoin transaction, the number of counterparties are shown and the total CoinJoin fee is displayed as a percentage. For example, in the example above, a CoinJoin fee of three counterparties would amount to around 0.5 percent — a fee that is substantially lower than other alternatives. Upon seeing this notification, users have the choice to decline the CoinJoin transaction if they believe the fee is too high. If the users accept the transaction, the CoinJoin payment is synced with the blockchain and broadcast to the network.
Once the transaction is broadcast, it is saved as a transaction history in the TX History tab of the application. Gibson and the JoinMarket team will continue to update and improve the interface to allow bitcoin users to use the application to access and send out private CoinJoin payments.
As of now, there are six implementation of the CoinJoin mechanism in existence. The Mycelium CoinJoin wallet, CoinShuffle, JoinMarket, Dark Wallet, Darksend of Dash and SharedCoins.