joinmarket/test
Adam Gibson 23d0b8f39c
BIP78 receiver over a Tor hidden service.
This commit implements a command line script and a GUI
dialog to receive a payment using the BIP78 protocol,
by setting up an ephemeral hidden service.

It also deprecates the pre-existing inter-Joinmarket
protocol for payjoin payments, since we now have
both sending and receiving support for BIP78. Thus,
much code in Maker, Taker and client-daemon protocol
is removed, as is some documentation in docs/PAYJOIN.md.
Also the script `sendpayment.py` is altered to support
only the BIP78 variant.

The test in jmclient/test/test_payjoin now implements
BIP78 over a TCP connection, while the custom tests in
test/payjoinserver.py can support hidden service based
tests, but the latter is not included in the test suite
and may not always work (it is only for manual
investigations).

The following features of BIP78 are supported:
minfeerate
additionalfeeoutputindex - but *only* for single
change output transactions
maxadditionalfeecontribution

The receiver does not have nor request payment
output substitution.

Utxo selection is no longer sophisticated, instead
we only choose a single utxo to keep the size
increase of the transaction minimal. Thus UIH is
not addressed at the moment.

Errors returned are in line with BIP78.

Sequence numbers are checked by receiver, and
kept identical if uniform, otherwise respected.
Receiver uses transaction monitor to shut down
when the payment is seen.

The workflow is almost entirely implemented in
jmclient/payjoin.py and the command line script
is in scripts/receive-payjoin.py. The setup, including
configuration changes for Tor, are documented in
docs/PAYJOIN.md, including a user guide video linked.
2020-09-23 15:04:59 +01:00
..
Dockerfiles install.sh: use python3 virtualenv 2020-04-25 17:26:28 +02:00
travis Move Travis-specific install_bitcoind.sh out of root 2020-03-15 12:59:56 +02:00
bitcoin.conf [test] Update test/bitcoin.conf according to 0.20 release notes 2020-06-25 15:32:52 -04:00
common.py Remove Python 2 compatibility imports and disable Python 2 installation in setuptools. 2020-01-19 11:31:57 -07:00
payjoinclient.py Implement BIP78 payjoin in JoinMarketQt GUI 2020-08-19 22:20:17 +03:00
payjoinserver.py BIP78 receiver over a Tor hidden service. 2020-09-23 15:04:59 +01:00
regtest_joinmarket.cfg Add support for BIP78 payjoins to .onion receivers 2020-07-24 13:01:43 +01:00
run_tests.sh Make scripts compatible with FreeBSD 2020-07-09 19:08:25 +03:00
test_full_coinjoin.py Move all user data to home directory 2020-01-06 13:49:47 +00:00
test_segwit.py Adds libsecp256k1 installation and addresses reviews 2020-07-06 16:44:50 +01:00
tx_segwit_valid.json Modify jmclient tests for new protocol updates 2017-07-22 21:07:17 +03:00
ygrunner.py Refactor: #566 use python3 super() syntax 2020-07-10 12:00:29 -04:00