371772f No coins fallback if mixdepth empty The code prior to this commit incorrectly only chose the no-coins fallback in PayJoin on receiver side if the call to wallet.get_utxos_by_mixdepth()[mixdepth] resulted in a raised exception, but of course it returns an empty dict, so after this commit the self.no_coins_fallback is called in case an empty dict is returned; note that the prior case still resulted in the same behaviour of publishing a non-CJ transaction, but now the info messages/prompts are clear. (AdamISZ)
If the user manually chooses a bitcoin tx fee, it could end up below the bitcoin network's min relay fee.
This PR get the bitcoin core instance's configured min relay fee and uses it as a floor value (btccore) or uses 1000 as floor otherwise (btc as fallback when RPC call returns no good value and for electrum interface).
Prior to this commit, if at least one sender utxo was larger
than the payment amount, the algorithm used by the receiver
to attempt to find coins to avoid triggering the UIH2 condition
was wrong, resulting in UIH2 being triggered where it was not
necessary, in a reasonable fraction of cases. This fixes the
algorithm to be in line with what was written in the linked gist
(see comment to P2EPMaker.on_tx_received).
The code prior to this commit incorrectly only chose the
no-coins fallback in PayJoin on receiver side if the call
to wallet.get_utxos_by_mixdepth()[mixdepth] resulted in a
raised exception, but of course it returns an empty dict,
so after this commit the self.no_coins_fallback is called in
case an empty dict is returned; note that the prior case
still resulted in the same behaviour of publishing a non-CJ
transaction, but now the info messages/prompts are clear.
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.
0c967bc Support payjoin when daemon run separately (joinmarketd) Prior to this commit, running joinmarketd as an isolated process only supported serving the Joinmarket protocol; attempting PayJoin would result in silent failure as the receiver would reject the !pubkey message. After this commit, the joinmarketd daemon serves both protocols with the PayJoin protocol being served at port+1 (AdamISZ)
Prior to this commit, running joinmarketd as an isolated
process only supported serving the Joinmarket protocol;
attempting PayJoin would result in silent failure as the
receiver would reject the !pubkey message.
After this commit, the joinmarketd daemon serves both
protocols with the PayJoin protocol being served at port+1
- 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
Bug introduced with c139067be4
Return empty string instead of None from wallet_fetch_history() as wallet-tool.py prints the result
all wallet_tool_main return vals as string
c139067 Include chromalog package for colorized logs Also use this lib to print non-log messages with standardized color formats. Some clean up in jmbase, remove unused objects/methods. (AdamISZ)
c6dabae Add startup redundancy to IRC servers. The first successful IRC channel join is supposed to trigger a 60 sec timeout. If not all channels are successfully joined within those 60 seconds, announce on all IRC servers that already were joined instead. (Alex Cato)
is supposed to trigger a 60 sec timeout. If not all channels are successfully
joined within those 60 seconds, announce on all IRC servers that already
were joined instead.
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.