Joinmarket refactored to separate client and backend operations
**NOTE: To use current Joinmarket, use the [latest release](https://github.com/AdamISZ/joinmarket-clientserver/releases).
The master branch is upgraded for segwit and to be used only for testing until the next release.**
The master branch is upgraded for segwit and to be used only for that; a new release will be made shortly.**
### Quickstart
You need to follow the [install guide](docs/INSTALL.md).
**You need Bitcoin Core to use; get it running first.**
The above document will point you to the [segwit upgrade guide](docs/SEGWIT-UPGRADE.md) if you need to update your wallet.
Once you've downloaded this repo, either as a zip file, and extracted it, or via `git clone`:
./install.sh
(follow instructions on screen; provide sudo password when prompted)
source jmvenv/bin/activate
cd scripts
You should now be able to run the scripts like `python wallet-tool.py` etc., just as you did in the previous Joinmarket version.
Alternative to this "quickstart": follow the [install guide](docs/INSTALL.md).
### Upgrade for segwit
See the [segwit upgrade guide](docs/SEGWIT-UPGRADE.md) if you need to update your wallet.
### Usage
If you are new, follow and read the links in the [usage guide](docs/USAGE.md).
If you are not new to Joinmarket, the notes in the [scripts readme](scripts/README.md) help to understand what has and hasn't changed about the scripts.
There is a joinmarket-qt GUI included but it's not yet ready for the new segwit version.
### Joinmarket-Qt
Provides single join and multi-join/tumbler functionality (i.e. "Taker") only, in a GUI.
Binaries that are built and signed will be in the Releases page. To run the script
`joinmarket-qt.py` from the command line, pay attention to the note [here](https://github.com/AdamISZ/electrum-joinmarket-plugin#a-note-on-pyqt4-and-virtualenv).
### Notes on architectural changes (can be ignored)
(You have either followed the Quick Install on the readme (`./install.sh`), or have
followed a manual installation as per [here](INSTALL.md)).
### Zeroth step: configuring for Bitcoin Core
Until such time as we have a better solution for a light client, Joinmarket only
realistically supports use with Bitcoin Core to connect to the Bitcoin network.
@ -7,8 +10,23 @@ The node *can* be pruned.
**Use with another interface to the blockchain should be considered highly experimental
(and in most cases it doesn't really work, as well as being terrible for privacy). It is not supported at this time.**
For notes on how to configure your Core node for use with Joinmarket, read [here](https://github.com/JoinMarket-Org/joinmarket/wiki/Running-JoinMarket-with-Bitcoin-Core-full-node#requirements--how-to).
Configuring Joinmarket for Core is now drastically reduced, since there is no longer any `walletnotify` used.
First thing to do: in `scripts/`, run:
python wallet-tool.py generate
This *should* quit with an error, because the rpc is not configured. Open the newly created file `joinmarket.cfg`,
and edit:
[BLOCKCHAIN]
rpc_user = yourusername-as-in-bitcoin.conf
rpc_password = yourpassword-as-in-bitcoin.conf
rpc_host = localhost #default usually correct
rpc_port = 18332 # default for mainnet
Then retry the same `generate` command; it should now not error (see below).
If you still get rpc connection errors, make sure you can connect to your Core node using the command line first.
in the previously linked page. Don't neglect the point mentioned that, if you are planning to do your own coinjoins
(act as "Taker", you must fund multiple different addresses to avoid inconvenience in future. For Makers, that's not necessary.
If you are upgrading from non-Segwit JM, you'll want to read this [upgrade guide](SEGWIT-UPGRADE.md).
### Third step: Try out a coinjoin
To try doing one coinjoin, use the `sendpayment.py` script. See [here](https://github.com/JoinMarket-Org/joinmarket/wiki/Sending-payments-with-CoinJoin#send-payment)