diff --git a/README.md b/README.md index c5e29b9..b199aa2 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,24 @@ # joinmarket-clientserver + 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.** + +### Quickstart + +You need to follow the [install guide](docs/INSTALL.md). + +The above document will point you to the [segwit upgrade guide](docs/SEGWIT-UPGRADE.md) if you need to update your wallet. + +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. + +### Notes on architectural changes (can be ignored) + Motivation: By separating the code which manages conversation with other Joinmarket participants from the code which manages this participant's Bitcoin wallet actions, we get a considerable gain at a minor cost of an additional layer: @@ -29,8 +47,6 @@ The IRC layer is also implemented here using Twisted, reducing the complexity re The "server" is just a daemon service that can be run as a separate process (see `scripts/joinmarketd.py`), or for convenience in the same process (the default for command line scripts). -To install, follow the instructions [here](docs/INSTALL.md). - -Instructions for running command line scripts are [here](scripts/README.md). +### TESTING Instructions for developers for testing [here](docs/TESTING.md). diff --git a/docs/INSTALL.md b/docs/INSTALL.md index eb00acf..f2e8262 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -50,9 +50,9 @@ Then: sudo pip install virtualenv mkdir jmvenv virtualenv jmvenv - cd jmvenv; source bin/activate; cd .. + source jmvenv/bin/activate -Install this repo in the virtualenv: +Install this repo: git clone https://github.com/AdamISZ/joinmarket-clientserver cd joinmarket-clientserver diff --git a/docs/USAGE.md b/docs/USAGE.md new file mode 100644 index 0000000..e9465b8 --- /dev/null +++ b/docs/USAGE.md @@ -0,0 +1,50 @@ +### Zeroth step: configuring 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. +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). + + +### First step: make a Joinmarket wallet + +Use [this](https://github.com/JoinMarket-Org/joinmarket/wiki/Using-the-JoinMarket-internal-wallet) guide, +BUT: a couple of differences: + +* The `wallet-tool.py` script is in the `scripts/` directory, so start there. +* The output when you "display balance" will look a bit different: the addresses start with '3'. +* The layout is also slightly different, but it's the same information. +* The BIP32 paths look like m/49'/0'/0'/0/000 instead of m/0/0/0/000; that's just a new segwit standard. + +(The new standard *should* be compatible with TREZOR, including the 12 word seed; other wallets, mostly not, although standards haven't settled down yet). + +### Second step: Funding the wallet. + +Read [this section](https://github.com/JoinMarket-Org/joinmarket/wiki/Using-the-JoinMarket-internal-wallet#funding-wallet-and-displaying-balance) +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. + +### 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) + +(Note that the `patientsendpayment` option, also described on that page, is not yet implemented in this version, but probably will be soon). + +(Note also that you can use 'schedule' files in this new version, but that's more advanced so ignore it for now.) + +### 4a step: if you want to be a "Maker" or "yield generator". + +Read the introductory guide [here](https://github.com/JoinMarket-Org/joinmarket/wiki/Running-a-Yield-Generator). + +You can use the `yield-generator-basic.py` script in the `scripts/` directory. +The new script (much simplified) has the same fields at the top you can edit; note +the new offertypes are 'swreloffer', 'swabsoffer' - they function the same, but use segwit. + + +### 4b step: if you want to run the tumbler script. + +Read the instructions [here](tumblerguide.md) \ No newline at end of file diff --git a/jmclient/jmclient/configure.py b/jmclient/jmclient/configure.py index e0ba82a..29570a0 100644 --- a/jmclient/jmclient/configure.py +++ b/jmclient/jmclient/configure.py @@ -105,10 +105,11 @@ daemon_host = localhost use_ssl = false [BLOCKCHAIN] -blockchain_source = blockr -#options: blockr, bitcoin-rpc, regtest, bc.i, electrum-server +#options: bitcoin-rpc, regtest, bc.i, electrum-server +#OPTIONS bc.i, electrum-server ARE EXPERIMENTAL AND MAY NOT WORK # for instructions on bitcoin-rpc read # https://github.com/chris-belcher/joinmarket/wiki/Running-JoinMarket-with-Bitcoin-Core-full-node +blockchain_source = bitcoin-rpc network = mainnet rpc_host = localhost rpc_port = 8332 @@ -116,19 +117,19 @@ rpc_user = bitcoin rpc_password = password [MESSAGING] -host = irc.cyberguerrilla.org -channel = joinmarket-pit -port = 6697 -usessl = true -socks5 = false -socks5_host = localhost -socks5_port = 9050 +host = irc.cyberguerrilla.org, agora.anarplex.net +channel = joinmarket-pit, joinmarket-pit +port = 6697, 14716 +usessl = true, true +socks5 = false, false +socks5_host = localhost, localhost +socks5_port = 9050, 9050 #for tor -#host = 6dvj6v5imhny3anf.onion +#host = 6dvj6v5imhny3anf.onion, cfyfz6afpgfeirst.onion #onion / i2p have their own ports on CGAN -#port = 6698 -#usessl = true -#socks5 = true +#port = 6698, 6667 +#usessl = true, false +#socks5 = true, true [TIMEOUT] maker_timeout_sec = 30