Prior to this commit, several test functions were using
"True" to flag internal and "False" to flag external for
the HD branch for the wallet, but we now use BaseWallet vars
ADDRESS_TYPE_[IN/EX]TERNAL (1/0), so this
is changed to explicitly reference those. There is no change
to the live code (which calls get_[internal/external]_addr).
In addition _index_cache updates in wallet are protected
with a wrapper function to ensure that the branch requested
is valid.
Tests pass both before and after this change.
... with wallet-tool method `signpsbt`. Specifically,
supports co-signing of PSBTs prepared elsewhere (so,
basic Updater/Signer and Finalizer roles, but not
Creator).
Provides detailed user feedback, command line only, and
supports broadcast of finalized transactions.
Supports native and p2sh segwit (and mixed, of course).
Also adds tests using externally prepared PSBTs.
Documentation of PSBT function added to USAGE.md.
See #772. This is likely a partial fix but that issue
may be more complex.
More generally, while we may have to process multiple
entries in the return of `listtransactions`, with the
same txid, because they may have different wallet labels,
we do not want to call `gettransaction` repeatedly on
the same txid in the same monitor loop call. Note however,
that we *do* need to call `gettransaction` again in
the next monitor loop, since the state (confirmations)
updates, so we cannot permanently cache those results.
Additionally removed redundant old_txs entries with set().
Prior to this commit, the list of used addresses,
which is required to check for address reuse, is populated
on startup in fast sync, and updated as new transactions
arrive; but if --recoversync is chosen, this list was not
originally getting populated. This commit corrects that bug.
Allow YG settings to be saved to joinmarket.cfg.
Before this commit, yield generator settings were
set inside the python script, which is not good.
After this commit, the order of precedence for the
settings for a yield generator is:
* Command line arguments, or
* Settings in [YIELDGENERATOR] in joinmarket.cfg, or
* default config settings in jmclient.configure.py
Fixes#784. In `Taker.receive_utxos` we check, in the
sweep case, whether the fee violates the user config
setting `max_sweep_fee_change`; if so, the tx is aborted,
and we shut down for single-shot coinjoins, but wait for
stallMonitor to restart for multi-schedules. The value is
defaulted to 80% to give plenty of breathing room to avoid
using up too many commitments.
Fixes#780. Prior to this commit, a user choosing to
follow manual install for Linux via INSTALL.md would be
left with a non-working install of Joinmarket due to the
absence of the specific libsecp256k1 library installation
needed to run python-bitcointx. This commit adds those
manual instructions and also warns users that the install.sh
handles this (and other tricky details of installation) better.
Before this commit, the help message for wallet-tool was
very hard to read; this improves the format of the message
by overriding optparse's default handling of description
paragraphs, making it pass through the string exactly as is,
and also reformatting the string itself.
Fixes#778. Prior to this commit, attempting to run
sendpayment with a schedule specified with -S would
fail due to a bug. This is now fixed, and the
sendpayment help message now accurately reflects the
facts that no arguments other than the wallet name are
needed in case -S is used.
Using relative links instead of root-relative links allows hosting ob-watcher with an
arbitrary URL path prefix, like 'orderbook' (https://example.com/orderbook).
81982c729f Drop support for pre-0.17 Bitcoin Core (Kristaps Kaupe)
Pull request description:
Simplifies code, resolves#452.
I would like also drop official support for versions older than 0.18 (still support 0.17 at first, but put 0.18 as a requirement in docs), as 0.18 is minimum required for [wallet no history sync](https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/444). In future that would allow [some more optimizations](https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/462). Asked it [here](https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/452#issuecomment-742166828), want to hear some comments about that. In any case, these would be changes on top of this anyway.
Tested by running test suite with 0.17.1 (where 4 of tests of `jmclient/test/test_core_nohistory_sync.py` fail as expected) and 0.20.1.
Top commit has no ACKs.
Tree-SHA512: 240a0dc0887465ecc5545dffa3759e9b03cc41fc54a759c6757328949d4b40621e029b7f3acfe6d456b659d3d62a9d1df1c6a39594dd2c94ee66b71a267a65bb
0cd8a73a26 genwallet p2sh -> p2wpkh (nixbitcoin)
Pull request description:
This PR updates `scripts/genwallet.py` to generate native segwit/bech32 wallets in line with JoinMarket release v0.8.0.
ACKs for top commit:
kristapsk:
ACK 0cd8a73a26
Tree-SHA512: 00d4e843bbf12d93855f7741c1321b929278e28545fd02cce51dd6587b7f400fbaeae423f2568e23012271338ba4e1f1f0d8fab6b8fa93eedd5c6e90e48767e8
721b6ede78 Allow any case for scheme part of BIP21 URI as per spec (Kristaps Kaupe)
Pull request description:
https://github.com/btcpayserver/btcpayserver/issues/2110
[BIP21](https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki) states that scheme part of URI must be case insensitive:
> The scheme component ("bitcoin:") is case-insensitive, and implementations must accept any combination of uppercase and lowercase letters. The rest of the URI is case-sensitive, including the query parameter keys.
We required `bitcoin:` part to be lowercase, this is a fix for that.
Top commit has no ACKs.
Tree-SHA512: b33c89893cb13a1d23742bfb129ae9b86a367d7fda003a1eac4953b667bbc076780f31515aeff92edad214023ce9fdbc46416a9cf1f98a1c9bc385eb721821aa