# Introduction and History
JoinMarket is a CoinJoin protocol implemented in a wallet software which requires Bitcoin Core as the back end. Its novel innovation is to introduce incentive structures to encourage users to mix their coins. One market taker can pay many market makers to create a tailor-made CoinJoin. The software consists of several python scripts, has a graphical user interface, and utilizes IRC communication channels. The mainnet launch was in March 2015, with v0.1.0 released in December 2015 by Chris Belcher, and since then it has gathered steady support by several contributors, most notably Adam Gibson. JoinMarket is an integral part of the Bitcoin privacy infrastructure. The research and implementation by the contributors are invaluable.
# Market Makers
JoinMarket makers are users running the yield generator script and offering their coins as potential inputs in a CoinJoin transaction. These users advertise the total volume of bitcoin they would like to mix [for example a range from 0.1 to 5 bitcoins], as well as the fee they charge for their provided service [for example at least 2000 sats, or 0.02% of the CoinJoin denomination] to a public IRC channel. A maker chooses to offer coins for liquidity knowing that the taker can deanonymize the maker in this one transaction, thus it is advised to do several rounds of making with different takers to gain privacy even against any one taker. The requirement is an always on, stable and relatively high bandwidth internet connection, so as to successfully coordinate many mixes.
Reclaim your privacy & stack sats!
JoinMarket makers get paid to do tailor-made CoinJoins with the taker.
# Market Takers
JoinMarket takers are users who coordinate a tailor-made CoinJoin, and they pay the makers to provide the liquidity. Takers analyze the range and fees of coins offered by makers, specify a transaction where the makers coins are part of the input, and the output creates equal value coins. The number of makers and the value of the outputs is completely up to the taker, it is a tailor-made CoinJoin. Although makers cannot link the input to the output of other makers, the taker knows exactly which maker gets which output.
Create CoinJoins just how you like them!
JoinMarket takers pay for coordinating tailor-made mixes.
# JoinMarket + Wasabi
The advantage of JoinMarket is that the taker can coordinate tailor-made mixes, and that the maker gets paid to join. The problem with JoinMarket is that the maker has no privacy against the coordinating taker. The advantage of Wasabi is that the coordinator cannot spy, and that Wasabi mixes achieve high anonset. The problem with Wasabi is that there are standardized equal value output amounts.
A perfect match!
The problems with Wasabi are the strengths of JoinMarket, and the downsides of JoinMarket are the features of Wasabi!
These two tools can be combined in great effect, thus it is on the long term road-map to implement JoinMarket functionality in Wasabi Wallet. For example such a protocol:
With your non-private coins, make at least two rounds of Wasabi ZeroLink CoinJoins. This means that your pre-mix coins are not tied to the following JoinMarket mixers.
With these anonset coins, run the yield generator as a JoinMarket maker for as long as possible, partaking in many mixes with many different takers. In this step you gain privacy, in that you were part of the initial Wasabi mix. Further, the mixing fees you earn might be enough to pay at least for the transaction and coordination fees of the whole process.
With these JoinMarket coins, make at least two rounds of Wasabi ZeroLink CoinJoins. This will break the JoinMarket history of these coins, thus nobody knows you were a maker.
With these high anonset coins, coordinate a tailor-made CoinJoin as a JoinMarket taker, where you can specify exactly the value you want to actually send.