# Joinmarket support JoinMarket is software to create a special kind of bitcoin transaction called a CoinJoin transaction. Its aim is to improve the confidentiality and privacy of bitcoin transactions. You will be able to use your bitcoin to help other protect their privacy, while earning a yield for this service. See [the documentation of the joinmarket project](https://github.com/JoinMarket-Org/JoinMarket-Docs/blob/master/High-level-design.md) for more details. This is a very advanced functionality, and there is no easy way to recover if something goes wrong. For hardcore bitcoiners only. ## How to use ```bash BTCPAYGEN_ADDITIONAL_FRAGMENTS="$BTCPAYGEN_ADDITIONAL_FRAGMENTS;opt-add-joinmarket" . btcpay-setup.sh -i ``` Then you need to setup your default joinmarket wallet: ```bash jm.sh wallet-tool-generate jm.sh set-wallet ``` Once done, you will need to send some money to the joinmarket wallet: ```bash jm.sh wallet-tool ``` ## How to change joinmarket configuration? Connect to your container, and edit your configuration: ```bash jm.sh bash vim $CONFIG ``` ## Managing your wallet By running `jm.sh` without parameter, you will get a bunch of command that you can run such as: ``` Usage: ------ Tooling to setup your joinmarket yield generator wallet-tool: Run wallet-tools.py on the wallet wallet-tool-generate: Generate a new wallet set-wallet: Set the wallet that the yield generator need to use bash: Open an interactive bash session in the joinmarket container receive-payjoin: Receive a payjoin payment sendpayment: Send a payjoin through coinjoin (password needed) Example: * jm.sh wallet-tool-generate * jm.sh set-wallet wallet.jmdat mypassword * jm.sh wallet-tool * jm.sh receive-payjoin * jm.sh sendpayment
* jm.sh wallet-tool history * jm.sh bash ``` Note `jm.sh` commands are wrapper around joinmarket scripts. Those are just convenience command, you can always directly connect to the container via `jm.sh bash` and achieve the same result with the joinmarket python scripts. ## Getting command prompt into the container You can connect to the container and have direct access to joinmarket scripts such as: ```bash jm.sh bash sendpayment.py wallet.jmdat ... ``` ## Managing the services such as yield generators First connect to the container's bash ```bash jm.sh bash ``` You can list available services to run: ```bash supervisorctl status ``` Which might show you ```bash root> supervisorctl status ob-watcher STOPPED Not started yg-privacyenhanced STOPPED Not started yield-generator-basic STOPPED Not started ``` You can start a yield generator with: ```bash supervisorctl start yg-privacyenhanced ``` *** Note that services will NOT be restarted automatically if the container restart. *** If you want to automatically restart the service when the container restart, ```bash vim $AUTO_START ``` Then remove the comment `#` in front of the service name you want to automatically restart. ## OB-Watcher The `ob-watcher` service allows you to [see an order book](https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/orderbook.md). You can activate it: ```bash supervisorctl start ob-watcher ``` Then you can browse it by browsing `https://.com/obwatch/` ## Troubleshooting ### Error: Failed to load wallet, you need to remove the lock file You might sometimes get the following error when running a python script for joinmarket: ``` Failed to load wallet, error message: RetryableStorageError('File is currently in use (locked by pid 12822). If this is a leftover from a crashed instance you need to remove the lock file `/root/.joinmarket/wallets/.wallet.jmdat.lock` manually.') ``` This is because a service using the wallet is running, so you need to shut it down before running the command. Check which service is running: ```bash supervisorctl status ``` And stop it ```bash supervisorctl stop yg-privacyenhanced ``` ### Read the logs of services You can use the `supervisorctl tail` command: ```bash supervisorctl tail yg-privacyenhanced ``` You can also check the logs in the `$DATADIR/logs` folder.