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.
a70329126b Bump coveragepy to fix pytest on python 3.8 (Alessio Caiazza)
Pull request description:
Python 3.8 was not supported before coveragepy v5.0a4
https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst#version-50a4-----2018-11-25
The bump is big, but tests are green
ACKs for top commit:
jules23:
TestedACK a703291 I am now able to run the test suite with Python 3.8.5. Thanks for taking care of this!
kristapsk:
ACK a70329126b. Tested that it fixes tests with Python 3.8.2 and didn't break anything with Python 3.6.10.
Tree-SHA512: 97c2c17f79943d0d3fb1ff50051712a7116bec4769672081f5d270c4b868c083c0c9c99fdccbf40d43f1650d9dc092157414a3aa1c6c375aaaa5220cac8adf7c
Error message about missing matplotlib is only correct in case of
exception during `import matplotlib`. If there is fatal exception
later, it is some other issue and it's better display it as is. On a
RaspiBolt for me `import matplotlib.pyplot as plt` causes
"ImportError: libopenjp2.so.7: cannot open shared object file: No such file or directory".
5ca78c29ea install.sh now works on macOS, no need to follow more complicated guide (Kristaps Kaupe)
Pull request description:
Top commit has no ACKs.
Tree-SHA512: 1e28e8b6c907429e488cbb284fccb7934cd8be83b92bf18e09169feaf31ca0729e70cbd4894259505e87cffd34e55773abf46fa4229cbb47c5396f285f86c2cb
fd9d98fd09Fixes#639. Allow export of private keys in Qt. (Adam Gibson)
Pull request description:
Additionally, we add a note to wif_to_privkey()
in jmclient.cryptoenging.BTCEngine because the
'keytype' variable constructed there is not currently
usabe, and we remove a check of that keytype in
the add_utxo script used for PoDLE (it is not relevant).
ACKs for top commit:
kristapsk:
ACK fd9d98fd09
Tree-SHA512: 161c8cfab80b7eef04ce0f22253946530121e4827769096e80e3019529a6736c2a5525188ef04c695c8f0db704da144648732d5cea026667fbf4b047db973abd
Additionally, we add a note to wif_to_privkey()
in jmclient.cryptoenging.BTCEngine because the
'keytype' variable constructed there is not currently
usabe, and we remove a check of that keytype in
the add_utxo script used for PoDLE (it is not relevant).
In this commit, the jmclient.payjoin module now supports
sending payments to BIP21 URIs where the pj= parameter is
to a hidden service address.
Additionally, the test/payjoinclient and test/payjoinserver
modules are edited to support optionally testing payments to
an ephemeral hidden service.
73b0edc219 Update macOS installation instructions (Jules Comte)
Pull request description:
This should be merged after #536, and is a followup to #629
It includes build instructions for libsecp256k1 for those who don't use `install.sh`
@AdamISZ I was wrong, it turns out that `install.sh` does need some modifications to work on mac os from scratch.
My biggest question at this point is whether I have the list of darwin dependencies correct in `install.sh: line 44`
With the current list, I was able to build, and pass the testsuite on fresh installations of Mac OS Catalina with Apple Command Line Tools and Homebrew installed.
Top commit has no ACKs.
Tree-SHA512: f9feed9d6052cefd043a025212e27347669aa6a082a4543d2f19a64f74ceb51694fa33efb5a92b79f7fc15a70efead4ac32cee3ab78acb6badd894f8b616aede