As per discussion in #569 the use of options.txfee
to set fee rates conflicted with its earlier use
to make a first guess of fees for user warnings.
Now this connection is removed, the guess for warning
calculation is done independent of this option setting.
To facilitate easier management by users and to
follow generally accepted standards, this PR moves
the following all to user home directory, subdir
.joinmarket :
joinmarket.cfg file
wallets/ directory
logs/ directory
cmtdata/ directory
commitmentlist file
User can override location with --datadir option.
An info message is added on startup showing location.
PR #367 and follow up edits were designed to give a sanity
check to users for fees, but require specifying a payment
amount, this could be generalised to custom schedules but
for now the simplest change is to remove this check for
schedules. Thanks to @roshii for flagging the error.
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
in the JM TX's instead of just for preliminary
estimations. Now it is a way to temporarily override
the tx_fees setting in joinmarket.cfg and behaves
exactly the same way as describes there.
Introduces WalletService object which is in control of
blockchain and wallet access.
The service manages a single transaction monitoring loop,
instead of multiple, and allows updates to the wallet from
external sources to be handled in real time, so that both Qt
and other apps (yg) can respond to deposits or withdrawals
automatically.
The refactoring also controls access to both wallet and
blockchain so that client apps (Taker, Maker) will not need
to be changed for future new versions e.g. client-side filtering.
Also updates and improves Wallet Tab behaviour in Qt (memory
of expansion state).
Additionally, blockchain sync is now --fast by default, with
the former default of detailed sync being renamed --recoversync.
Previous to this commit, a user could create a direct payment or
Joinmarket coinjoin inadvertently by not using the correct arguments
to sendpayment.py (missing -T or setting -N0). After this commit,
the correct number of arguments (3) are insisted on, and -T takes
precedence over -N 0.
- update mktx() to allow optional locktime setting (and sequence)
- add a mk_shuffled_tx method to the wallet module
- add a P2EPTaker and P2EPMaker class (inherit from Taker, Maker)
- add a -T option to sendpayment script for doing payjoins
- add a receive_payjoin script for receivers.
- add payjoin tests in jmclient/test/test_payjoin.py
- add a custom utxo selection method select_one_utxo to support.py
- support bech32 wallets (SegwitWallet, p2wpkh) with native=true
in config POLICY for PayJoin and direct send (not Joinmarket CJ)
- add a PayJoin.md usage guide in docs/
- include version bytes in pubkey message for forward compat
- taker pays fees but controls size (utxo number and fee/kB)
- add P2WPKH fee estimator
- Enforce INFO level logging in payjoin
- refactors regtest config settings into one place
- bugfix: script_to_address vbyte argument is bytes not integer
If N makers are chosen and M fail to respond with sig,
this alteration to taker code allows restart of
entire transaction with that specific subset of makers (N-M)
that originally responded honestly.
As for maker, to use this feature set segwit = false
in the POLICY section of the config file.
This commit does *not* include support in the GUI.
Additionally, minor fixes to utility scripts for non-sw wallets,
and updated add-utxo tool to support non-sw wallets.
Bugfixes to wallet_utils to support non-sw wallets
and signmessage.
Updates to joinmarket-qt to reflect; no signals, only callbacks
Includes code for watching txs both via notify addr and txs;
taker uses the latter (knows full txid), maker the former
Additional code for watching tx spends included for downstream.
via 0 entry in num counterparties. Modify tooltip to reflect.
Rename tumble_support to taker_utils for generic Taker code.
Refactor direct_send function to that module, shared with
sendpayment CLI script.
Created simple state tracking class SpendStateMgr.
Also: remove stale comments and test code from sendpayment.
Also: don't continue aborted Taker in stallMonitor.
Removed the full orderbook printout from even debug log; far
too big on mainnet. Also removed low level IRC logging, such
as MOTD and quit messages, this can be revisited if needed.
Sendpayment script should quit as soon as the final tx in the
schedule is seen on the network; no value in waiting for
confirmation.
Also fixes minor bug in blockr data read.
Modifies schedule syntax to include complete/incomplete flag, so if
restart is chosen then the schedule is continued from the first
incomplete transaction in the sequence.