- 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
Instead of displaying blank tree of wallet mixdepths / addresses.
Also renamed self.history to self.walletTree, for the name to be less
confusing, as there is also TxHistoryTab which is unrelated.
Before this change with wallet-tool.py you would get "ValueError:
invalid padding byte" and "jmclient.storage.StoragePasswordError: Wrong
password." exceptions, joinmarket-qt would fail silently.
Prior to this commit, if a user chose cancel while selecting a
filename for a new wallet in Qt, the wallet name was set to the
default `wallet.jmdat`, which could lead to a crash or overwrite.
This fixes that by ensuring that the wallet generation code
recognizes the cancel operation.
Previous to this commit, the jmbitcoin package was accessed via
a file in jmclient `btc.py` which was originally added as an
interface to allow the client to use a non-jmbitcoin package to
provide the implementation; while this idea is useful, the way
it was implemented was not, moreover it is not currently used
and contained duplicated code that was unmanaged. Also, the
original usage of this was only by the electrum plugin, which
has currently been abandoned. This simplifies the code and
avoids spurious error messages. Note that most of the changes
are a result of pulling the logging function directly from the
jmbase package instead of indirectly via this interface (which
was unnecessary and not connected with jmbitcoin).
In the Python3 compatibility upgrade, jmbase.support.getpassword
was changed and now returns bytes, therefore the password should
not be utf-8 encoded in the function decrypt_wallet_data. Without
this change, the conversion script errors; this fixes that error.
Bitcoin Core 0.17 deprecates the accounts feature and replaces it with
labels. The RPC functions using accounts still work for use with older
version of Core.
This commit adds a method 'changemixdepth' to the list
of methods that can be invoked with the wallet-tool.py script.
It is a noscan method, so doesn't require sync, and uses the
value of the -m option as the new *number* of mixdepths, and
updates the wallet's storage for future runs.
Users are advised not to reduce this number, but increasing it
should always be fine.
Running tumbler with insufficient mixdepths quits with warning.
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.