# JoinMarket

# Overview

JoinMarket is software to create a special kind of bitcoin transaction called a "CoinJoin". Its aim is to improve the confidentiality and privacy of bitcoin transactions. JoinMarket differs from other popular CoinJoin implementations in a few ways.

The most important differences are:

  1. Open: Users can choose to act as a market "taker" and initiate a CoinJoin transaction on demand, or they can act as a market "maker" (and potentially earn fees) by leaving a JoinMarket wallet connected to the network for others to CoinJoin with.
  2. Decentralized: JoinMarket has no central coordinator.

JoinMarket was created by Chris Belcher in 2015, and is currently maintained by Adam Gibson here. For a quick introduction to Joinmarket you can watch this demonstration of installation and usage given by Adam Gibson during the Understanding Bitcoin conference on April 6 2019.

# General Usage

Joinmarket is installed in MyNode and must be run via the command line. There are several Joinmarket scripts and configurations that can be utilized for various purposes, and it is important to fully understand the proper usage of each of them. Users are strongly urged to first read this usage guide.

To get a MyNode command line window you will need to open an SSH session from another computer.

Instructions for doing that while on the same network as your MyNode can be found here.

There are two ways to run JoinMarket - by using JoinMarket scripts directly or by using a minimal terminal interface provided by JoinInBox.

# Usage - JoinInBox

Once you have opened a terminal window in your MyNode, there is a convenient script for setting up and running JoinMarket.

sudo mynode-joininbox

You will be prompted for your password and should now see this in your terminal window:

joinmarket_cli

You should now have access to JoinMarket through the interface provided by JoinInBox.

# Usage - JoinMarket

Once you have opened a terminal window in your MyNode, there is a convenient script for setting up and running JoinMarket.

sudo mynode-joinmarket

You will be prompted for your password and should now see this in your terminal window:

joinmarket_cli

You are now ready to run any of the Joinmarket scripts, located at:

/home/joinmarket/joinmarket-clientserver/scripts

You can find the main configuration file, joinmarket.cfg at:

/home/joinmarket/.joinmarket

To exit, simply type and enter exit.

TIP: If you are planning to use JoinMarket as a "maker", you will need to leave your maker script running for an extended period of time. This would normally require you to leave an open SSH session to your MyNode to keep your JoinMarket session running. This is impractical at best, and potentially unsecure if others might have access to your computer.

A better way is to run your JoinMarket maker script inside of a TMUX window. You can start TMUX (after connecting to MyNode via SSH) by entering:

tmux

Next, you start the JoinMarket virtual environment as described earlier, and then your desired maker script.

This will allow you to end your SSH session with your MyNode while leaving your JoinMarket maker/offer actively running. Without using TMUX, if you exit your SSH connection to your MyNode, any JoinMarket script that you have running will stop.

# Specs