6e5cdc81ae Refactor: move bitcoin unit conversion functions from ob-watcher to jmbitcoin (Kristaps Kaupe)
Pull request description:
Get rid of `satoshi_to_unit_power()` and `satoshi_to_unit()` in `scripts/obwatch/ob-watcher.py`, move that code where it belongs, to `src/jmbitcoin/amount.py`, with the rest of bitcoin unit conversion functions.
Top commit has no ACKs.
Tree-SHA512: 5d61d6148d283607a9fd8296788d409f9c86c7ca99a47e0c99ecf8ea6504214e867f94b3f889cd0e17aee0533b50115df32a1e6a75bd1326fe0e6ce9aa19e8ef
Old wallet format isn't used for years and script is broken since
removal of pyaes dependency. If somebody still needs it, he can use
older JoinMarket version to do conversion.
196a097667 Allow absurd fee override when setting tx fee manually (Kristaps Kaupe)
Pull request description:
When user manually specifies `--txfee` with `sendpayment.py`, he likely knows what he is doing. So allow there fees above `absurd_fee_per_kb` setting. But still ask for user confirmation as he could possible made a mistake, for example, added some extra zeros to the value.
Top commit has no ACKs.
Tree-SHA512: 2155c38a483fd6392153bf42b2ea87cb9395f0da289cc2743602493df9e924a1d621688704a46d179e3e574ce41e82ced26b62331157ac2c3d1481931a334ace
907f1b0603 Signal BIP125 opt-in RBF for non-cj sends by default (Kristaps Kaupe)
Pull request description:
This seems to be direction where everybody is going. Wasabi Wallet 2.0 does this, Electrum does this. I see no downsides here.
Before this you could signal opt-in RBF only from `sendpayment.py`, but not Qt GUI.
Will be more useful after #1019 is merged, but power users already can use other tools to construct replacement transactions.
ACKs for top commit:
AdamISZ:
tACK https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1457/commits/907f1b060353dfbbfdf31ebc85f2ecb3c3b209fe
Tree-SHA512: 8909263e983fb17bac8cfea17532b391ad502f1a69e3079b1e1361177659628ede5de2eb85ed8fbbb7395bfd270a8b5f3d8916817033baa0b81561787bffe876
refactoring to improve readability and testing
added support for taking the fee from multiple owned outputs as needed
added unit tests
removed same mixdepth restriction for inputs
added option for specifying which output to deduct fees from
added additional test cases
refactoring: moved tx_vsize to jmbitcoin package
added a sanity check to ensure that the transaction id supplied belongs to our wallet
fixed a linting error
Prior to this commit, the tumbler algorithm assumed that destination
mixdepths of INTERNAL transactions were incremented by 1, but the
underlying taker code uses (mod maxmixdepth) logic always. This commit
takes the decision to make the usage of the wallet "purely" cyclic, that
is, not only the Taker object but also the tumbler algorithm now always
treat the wallet as a cycle. This is not problematic in a tumbler
algorith (or any other schedule generation algorithm), as long as we use
the strict rule of "always exit each mixdepth with a sweep", which the
tumbler always did and this commit does not change.
Also, and importantly, several much more detailed tests of the tumbler
schedule generation have been added.
Add a new helper module to calculate fidelity bonds values and stats, and a script to use it.
The goal is to give as much information as possible to the user before
committing to a fidelity bond.
when checking for timed-out counterparties (or refreshing the
orderbook), stale entries are preserved because those peers
disconnected prematurely. This fix prevents that issue by
first removing all entries before requesting for the orderbook.
For frozen balances, display a label "FROZEN" in the status notes.
For unconfirmed balances, display a label "PENDING" in the status notes.
Both FROZEN and LOCKED balances are considered unavailable balances, while PENDING balance is considered available balance.
Because it is possible to broadcast a transaction that spends unconfirmed balance, while a user has to manually unfreeze
the balance or wait until the timelock has expired before they can use FROZEN or LOCKED balances.
Closes#1247.
This consists of an inclusion of the bond value exponent into the config
that the user can alter, and a change of that from 2 to default 1.3.
Also updates the fidelity bond documentation to account for those
changes, including the units used in ob-watcher, but not the calculation
of fidelity bond attack resistance (which remains a TODO).
Prior to this commit, running ob-watcher with
an onion-type message channel configured would result
in the bot attempting to connect to all the makers,
which is bad. This happened because the internal logic
of the onion message channel is that receivers of privmsgs
will be sent peer info from the directory, so that they can
immediately respond p2p if they succeed in outward connecting.
But for bots who do not intend to engage in a coinjoin interactive
protocol, like ob-watchers, this is absolutely not the desired outcome.
After this commit, a bot can specify mode "PASSIVE" in the call to
get_mchannels(), which results in the OnionMessageChannel object only
creating non-directory remote peer objects of type OnionPeerPassive,
instead of OnionPeer, which means they never try to connect to those
remote peers.
Also, exports JMMakerClientProtocol for custom directory node scripts
(stored in the custom-scripts repo).
Modify default config with 2 signet and mainnet directory nodes to
start.
Handles unreachable directory nodes with a human readable error and
adjusts connection timeouts to be realistic.
Changes wording in Qt notifications from "IRC" to message channel.
Updates docs, new directory node information.