Commit graph

45 commits

Author SHA1 Message Date
Kristaps Kaupe
395050cfa4 Use coins_to_satoshi() and satoshi_to_coins() from bitcointx everywhere 2025-04-16 18:46:40 +03:00
Adam Gibson
524cbda886
update Qt for new tumbler algo 2022-07-31 12:29:01 +01:00
Kristaps Kaupe
8526d73014
Add signet support 2021-01-30 22:12:00 +02:00
Kristaps Kaupe
7414959604
QR code support for BIP78 payjoin receiver in Qt GUI 2020-10-14 19:55:20 +03:00
Adam Gibson
9886553865
Adds close button to BIP78 receiver dialog
Prior to this commit, the cancel button remained
activated when the BIP78 payjoin processing had
completed, either successfully or unsuccessfully
which could be confusing for the user.
After this commit, when the processing is complete,
the JMBIP78ReceiverManager object fires the shutdown
callback, which Qt uses to signal the dialog, which
then updates to disable the Cancel button and show
the Close button.
Additionally, line breaks were added to make tooltips
more readable.
2020-09-24 17:09:47 +01:00
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
Kristaps Kaupe
2401c83c45
Implement BIP78 payjoin in JoinMarketQt GUI
Co-authored-by: Adam Gibson <ekaggata@gmail.com>
2020-08-19 22:20:17 +03:00
Jules Comte
3316542e1e Qt: Add change wallet passphrase feature 2020-07-23 16:26:08 -04:00
jules23
0bef681288 Refactor: #566 use python3 super() syntax 2020-07-10 12:00:29 -04:00
Adam Gibson
118c8ac803
Merge #588: QValidator port number restriction only for ports
3cd54cb Adds JMIntValidator to ensure exact integer range (Adam Gibson)
48f5ddf QValidator port number restriction only for ports (Adam Gibson)
2020-06-02 19:41:27 +01:00
Adam Gibson
3cd54cb4c3
Adds JMIntValidator to ensure exact integer range
Makes BitcoinSatValidator a derived class with a specific
range. Makes all port fields respond correctly to correct
or incorrect entries of port numbers. Changes badly named
'qt' variable to 'sf' in getSettingsFields.
2020-06-02 15:55:43 +01:00
Kristaps Kaupe
b1ee2f0891
Make BitcoinAmountEdit behave the same on resize as QLineEdit 2020-05-25 21:55:46 +03:00
Kristaps Kaupe
d1323f65b8
BitcoinAmountEdit Qt widget 2020-05-19 18:08:50 +03:00
James Hilliard
4bf1f50d4e Remove Python 2 compatibility imports and disable Python 2 installation in setuptools. 2020-01-19 11:31:57 -07:00
Adam Gibson
f949ee9e08
add tooltips for freeze_reuse config to Qt 2020-01-03 14:24:37 +00:00
Adam Gibson
c57161303c
Make Qt check config fee filters as well as checktx
Prior to this commit, the user was prompted to check for
the acceptability of fees in Qt via a dialog, but settings
used in CLI (max_cj_fee_***) were not also being used the
same way in Qt.
After this commit, if the user has not added those settings,
a dialog is presented with new randomised defaults (as for
CLI), and otherwise any settings in the config file are read
and used.
2019-11-24 15:17:19 +00:00
chris-belcher
c52d1fb0d6
Merge #387: Implement 2/2019 plan to improve tumbler privacy
32479ae Modify tumbler defaults to improve privacy (chris-belcher)
b79d34a Remove amountpower and use uniform distn instead (chris-belcher)
f40ef2c Occasionally round amounts in tumbler schedule (chris-belcher)
35f23eb Add sweep coinjoins to start of tumbler schedule (chris-belcher)

Tree-SHA512: 8b1dc978b69deccc62cec43d22254a18f4860aae6fd87026e7b86d8f537a302ec5ed34f26efa04e1e29648cabe9dac57e0b452fa9fe6f74f6a22b0ce6b2be04a
2019-11-23 11:07:27 +00:00
chris-belcher
32479ae510
Modify tumbler defaults to improve privacy
This is part of the 2/2019 Plan to improve the privacy of JoinMarket's
tumbler script:
https://gist.github.com/chris-belcher/7e92810f07328fdfdef2ce444aad0968

Also text for the eventual release notes is provided
2019-11-23 09:05:24 +00:00
Adam Gibson
32da0f557c
Merge #440: Preserve comments in config file when using Qt
5d4fc41 Preserve comments in config file when using Qt (AdamISZ)
2019-11-18 13:55:10 +00:00
chris-belcher
b79d34a348
Remove amountpower and use uniform distn instead
Remove the power law generation for amount_fractions, instead use
a uniform distribution

This is part of the 2/2019 Plan to improve the privacy of JoinMarket's
tumbler script:
https://gist.github.com/chris-belcher/7e92810f07328fdfdef2ce444aad0968
2019-11-14 17:49:07 +00:00
chris-belcher
f40ef2c795
Occasionally round amounts in tumbler schedule
The schedule format gets an extra field added denoting the number of
significant figures to round the coinjoin amounts to, with 16 meaning
no rounding.

This is part of the 2/2019 Plan to improve the privacy of JoinMarket's
tumbler script:
https://gist.github.com/chris-belcher/7e92810f07328fdfdef2ce444aad0968
2019-11-14 17:49:06 +00:00
chris-belcher
35f23eb6b7
Add sweep coinjoins to start of tumbler schedule
The tumbler schedule is split into two stages. Stage 2 is the same
as before while stage 1 attempts to fully spend each mixdepth in a
sweep coinjoin with no change address.

The wait time between these stage 1 coinjoins is longer than for
stage 2 coinjoins, the increase is determined by a new parameter
called `stage1_timelambda_increase`.

This is part of the 2/2019 Plan to improve the privacy of JoinMarket's
tumbler script:
https://gist.github.com/chris-belcher/7e92810f07328fdfdef2ce444aad0968
2019-11-14 17:49:04 +00:00
AdamISZ
5d4fc412ab
Preserve comments in config file when using Qt
Since ConfigParser does not sufficiently support comments
in config objects, in order to support dynamic update of
the config from within a run, this PR edits the config
file at the same time as updating the config object, so
as to prevent the earlier problem that all comments in the
config file were lost whenever Qt updated the file with
the new config object.
2019-11-08 16:09:41 +00:00
AlexCato
5c0b9ebcfc Remove txfee_default: used as user estimation for initial
tx_fee estimate, but removing this option and replacing
    it by the existing estimation (using tx_fee config setting)
    makes more sense.
2019-10-30 22:40:42 +01:00
AdamISZ
8e5826d4ea
Convert JoinmarketQt to PySide2 2018-12-11 17:13:40 +01:00
James Hilliard
6dc3504f8a Convert jmclient to py3 style 2018-12-06 02:40:36 +08:00
undeath
1451c9e3ae remove unused imports 2018-08-19 18:21:28 +02:00
Adam Gibson
2ea4df400b
GUI updates and blockr removal
Add more tooltips and some deletions
Update version numbers of GUI
Remove blockr and bc.i interface classes
2017-08-20 16:46:47 +03:00
Adam Gibson
5018e28e61
Refactored wallet printout, reusing WalletView
Add extpub keys for branches to wallet view
Make extpub keys copyable via context menu
Fix bug in seedwords display
Make all wallet view columns resizable
hexseed only for regtest
2017-08-16 13:32:36 +03:00
Adam Gibson
fbbf85c851
Qt: reset tumbler defaults to normal (non-test) values 2017-03-01 22:05:02 +02:00
Adam Gibson
ad16bafb12
Qt: Wallet() respects gaplimit, port setting is string 2017-03-01 21:55:39 +02:00
Adam Gibson
537ae872be
Qt tumble no longer aborts or blocks on too-new commitments 2017-03-01 19:48:05 +02:00
Adam Gibson
a61b18abc9
Qt: warnings with large text use scrollable MessageBox 2017-03-01 16:10:03 +02:00
Adam Gibson
d56a15353b
Fix Qt tumble restart to prompt for options 2017-02-27 16:28:50 +02:00
Adam Gibson
97ac9c485f
Bugfix destaddr check; wrap tooltips 2017-02-27 13:08:09 +02:00
Adam Gibson
c5eb4b405c
Qt: no. of dest. addresses controlled by mixdepthcount
Wallet maxmixdepth must be amended upwards and resync if needed;
user is warned to do this; may be a more seamless way.
2017-02-27 00:18:08 +02:00
Adam Gibson
cdd072eb8c
Support maxcjfee settings for tumble in Qt
Also refactor tumbler offer filter callback to tumble_support
Add default values for first page of tumbler wizard (Qt)
2017-02-26 20:46:39 +02:00
Adam Gibson
5d7b89a4af
disable single join donation 2017-02-24 15:49:57 +02:00
Adam Gibson
2ea1b27f43
maintain INTERNAL flag for tweaks, remove wallet sync between runs 2017-02-23 21:36:28 +02:00
Adam Gibson
5148a5062b
add advanced tumbler options 2017-02-21 23:33:46 +02:00
Adam Gibson
78dd815b79 refactor tumble callback code to be shared with GUI, other impls.
Also add detailed function definitions for Taker callbacks in
taker.py comments. Modifications to joinmarket-qt, tumbler
working but these modifications not yet complete.
2017-02-17 22:28:00 +02:00
Adam Gibson
bdfe7c5083
add bc.i interface (debug messages left in) 2017-01-23 09:04:17 +07:00
Adam Gibson
2abe11adb0
HelpLabel bugfix 2017-01-08 12:26:39 +02:00
Adam Gibson
12ffe32adc
bugfix for checkoffers 2017-01-06 20:47:36 +02:00
Adam Gibson
99b8415ceb
refactor generic Qt code to qtsupport.py
Also, rationalize button enable/disable for single/multiple join
2017-01-06 19:50:07 +02:00