Before this change, a malicious taker could send the same
commitment with different case/formatting, and it would not
be rejected as reuse, which is the intended behaviour. The
commitment is defined by the H(P2) value, not the string.
Reported by @m0wer ; included feedback from @kristapsk and Copilot.
d87e7cb78a Replace default directory nodes with currently working ones (Kristaps Kaupe)
Pull request description:
These ones are currently working ones according both to https://directories.w3ird.tech/ and my local monitoring using [jm-dn-uptime](https://github.com/kristapsk/jm-dn-uptime).
ACKs for top commit:
AdamISZ:
tACK the list in d87e7cb78a across a couple of runs (across several days).
Tree-SHA512: 9e40ee4d05562cd90bd15b811ccd0c765081776323244031c6d1c1f0988d6048a54a33cd9c335bbcefde868b9d6b0a23fdbaec950d2aa11a6cbac3004cf13af8
style: revert formatting
fix(deps): update fastbencode to use rust variant
style: new line
chore: fix typo
Co-authored-by: Marnix Croes <93143998+MarnixCroes@users.noreply.github.com>
chore(deps): bump fastbencode to v0.3.6
chore(deps): remove fastbencode rust extra
646999179b RPC-API: Implement message signing (Kristaps Kaupe)
Pull request description:
Resolves#1533.
My first attempt at adding new RPC-API endpoint, there could be mistakes.
Didn't add tests in `jmclient/test/test_wallet_rpc.py` as message signing is currently supported for mainnet only, not regtest (but I tested HTTP 400 response with regtest).
Top commit has no ACKs.
Tree-SHA512: 927b1f97ef903e48f82aa3ae70c7ead05c919a28d016d1ad4fd9c7a8299f8faa7606c30ef24af0ce3cd504e8e27b37bc55d1989bf89da88572ac79af0e60ec12
100da5eb33 Handle JsonRpcError in _estimate_fee_basic (Kristaps Kaupe)
Pull request description:
`_estimate_fee_basic` is supposed to return `None` if fee rate can't be estimated and then `estimate_fee_per_kb` handles that with hardcoded fallback fee. But `JsonRpcError` wasn't handled and it could fail when fee estimation is not working in Core.
Fixes#1653.
Previously it outputed unhandled error and hanged, now it's:
```
2024-02-10 02:05:11,803 [DEBUG] rpc: estimatesmartfee [3]
2024-02-10 02:05:11,812 [WARNING] Could not source a fee estimate from Core
2024-02-10 02:05:11,813 [WARNING] Fee estimation for 3 block confirmation target failed. Falling back to default (randomized for privacy): 11976 sat/kvB (11.9 sat/vB).
2024-02-10 02:05:11,815 [DEBUG] rpc: getmempoolinfo []
2024-02-10 02:05:11,818 [DEBUG] rpc: estimatesmartfee [3]
2024-02-10 02:05:11,820 [WARNING] Could not source a fee estimate from Core
2024-02-10 02:05:11,821 [WARNING] Fee estimation for 3 block confirmation target failed. Falling back to default (randomized for privacy): 10279 sat/kvB (10.2 sat/vB).
2024-02-10 02:05:11,849 [INFO] Using a fee of: 0.00001449 BTC (1449 sat).
```
Top commit has no ACKs.
Tree-SHA512: 45bf55530f48a75fdbcc808db3ca8884f273a5b625c2a0bf03a1090f2bd1ebcafc51808e3822cf7684903b4918642b99d400974847d5ebcf6d4e66cab44620b2
865247cf8d Support payjoin PSBT with multiple sender inputs (spacebear)
Pull request description:
[Compatibility testing with PDK](https://github.com/payjoin/rust-payjoin/issues/51#issuecomment-2100765588) revealed that the JoinMarket payjoin receiver doesn't support signing for PSBTs that contain multiple sender inputs. This patch fixes that.
ACKs for top commit:
AdamISZ:
tACK 865247cf8d
kristapsk:
re-ACK 865247cf8d
Tree-SHA512: cf25e161be229bc440e1f0a5ad16d529e30c1470e7f6ba450ab912458f6c4db05b3ed9e463549685c5a52f37c234809f4d042522f358a0293a36932c005bbe0d
954dc36e75 Remove Ilita IRC, re-enable hackint (Kristaps Kaupe)
Pull request description:
Ilita isn't working for me, but have seen no problems with both darkscience and hackint recently. More resiliance with messaging channels is better.
Also changed `[MESSAGING:server1]` and `[MESSAGING:server2]` to `[MESSAGING:darkscience]` and `[MESSAGING:hackint]`.
ACKs for top commit:
roshii:
utACK 954dc36e75
Tree-SHA512: 77d9030189f34c22c78a7d8b94fb5c8e07bdf7c56317b1e0f98200c33e483572228785b345ad7148791bc55be85dfa6f3ad39a3237b87902efde650f8c8508ec
f3f4f0a4fb Multiple (batch) payment support in `direct_send()` (Kristaps Kaupe)
Pull request description:
Work towards #1012. Changes `direct_send()` to instead of single `amount` and `destination` to accept `dest_and_amounts` which is list of tuples of addresses and amounts instead. Haven't yet implemented and tested actual payments to multiple recipients, but tested that this doesn't break existing stuff.
Top commit has no ACKs.
Tree-SHA512: 02195a28d071c9537cb5297e63854ad2571e0ae9b5e06b850d6173c47d53caae953e9d7671ff861a6584a104d7a59da2293781d4440f7db4814f9b2fc4116c46
d11779184f yieldgenerator: allow change address to be overridden (Matt Whitlock)
Pull request description:
I have a custom yield generator that sometimes sends change to external addresses. Implementing this required me to add an extension point in `jmclient/yieldgenerator.py` to allow the change address to be overridden. As this could be useful to others as well, I am submitting it for review and merge.
ACKs for top commit:
kristapsk:
cr utACK d11779184f. Tests pass, that should be enough here.
Tree-SHA512: 459e4d5cd64010feda2092ebf69c4227b428b0ff45edcca3635ca553e5aa64bd1395374d5bc31080091dcd49426c3f8bf018c9cad2476411e99f65ab46aa31b7
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
904b780b80 Unify cli user input code where limited range of answers are allowed (Kristaps Kaupe)
Pull request description:
Fixes#1494.
Top commit has no ACKs.
Tree-SHA512: ec19d8e3fa9651f0eba8930dc0fc57495770cda8f1d6e926d7a361eb0e5dabe876f9e9fceaf48ae50808e30549be17109452a43411ba5e76b7f44fad0888d559
053d8a18f2 Implement mixdepth filtering for showutxos (Kristaps Kaupe)
Pull request description:
Resolves#1539. As usual, also added type hints here and there.
Top commit has no ACKs.
Tree-SHA512: a61ce96cb1c79e046c0d44289411029cae050f30349aafa886c4882d77addcd8ec84d5f8990328fb7257436779c6cca9b87e89376aedbeb3e9d61d0e6d31a4c7
f0b0e55431 Cache None in tx_cache for non-wallet transactions (Kristaps Kaupe)
Pull request description:
`wallet_fetch_history()` calls `BlockchainInterface.get_transaction()` for each input of wallet transactions to figure out which of the inputs are ours and which aren't. It will return `None` for non-wallet transactions and that weren't cached, so, if the same non-wallet transaction appears in inputs of wallet transactions multiple times, unnecessary `gettransaction` RPCs to Bitcoin Core were made.
Top commit has no ACKs.
Tree-SHA512: 43b7166f2cfb1ed02fa46d78333c045cab8b8a94765dba44a3190c8e67ec353bf9e0a0c9fec8386ab489b1ea1448188ee3078c5a37de9140f99199b3a5a066f6
f2ae8abac1 Don't validate cache during initial sync. (Adam Gibson)
Pull request description:
Prior to this commit, the calls to get_new_addr in the functions in the initial sync algo used for recovery, used the default value of the argument validate_cache, which is True (because in normal running, get_new_addr is used to derive addresses as destinations, for which it's safer to not use the cache, and as one-off calls, are not performance-sensitive). This caused initial sync to be very slow in recovery, especially if using large gap limits (which is common). After this commit, we set the argument validate_cache to False, as is intended during initial sync. This allows the optimised performance from caching to be in effect. See earlier PRs #1594 and #1614 for context.
Top commit has no ACKs.
Tree-SHA512: 2e16642dbb071f3f4e8c3bcfc6cfb71b63865acfb576be6f31b2a8945795b9e9a5de5c93bc2ed534db8ee9ac12cbddef180c303ed6e3c30c89f6f67d49a2d834
c4414e8c9c Minor quality improvements in wallet code (Kristaps Kaupe)
Pull request description:
Was looking at #1278 changes in context of #1588. Couldn't find any errors there, that seems correct and should be working. But in process I corrected wrong comment, changed to use `btc_to_sat()` helper function for unit conversion and added some type hints.
ACKs for top commit:
AdamISZ:
utACK https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1662/commits/c4414e8c9c599f1778e87a245aae03d827d4cd5d
Tree-SHA512: df227ca7316ad9cc4b7cb3133df940bd3a3132a521f552756906f090b82b1b08c6e11775c47698685be23017ea8e9893ba5e9467c415158aeec7075839e32ea4
9c13180c13 Raise fallback fee rate from 10 sat/vB to 20 sat/vB (Kristaps Kaupe)
Pull request description:
It's just current reality on mainnet, that's around what `bitcoin-cli estimatesmartfee 1008` (1 week confirmation target) returns.
ACKs for top commit:
AdamISZ:
utACK https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1659/commits/9c13180c1318f5c2adcbd17d0c81134367b24086
Tree-SHA512: 15057a92bc498c17d66141fb08e31c0e21f5a070f13de5bc99aa9236290e8d65c64ed2060239f616b4bb6b684e1abe498bb0976fe2b0c26ea61f601b6a6a4293
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.
ab1481d814 RPC API: Add optional txfee property for single joins (Kristaps Kaupe)
Pull request description:
Resolves#1607.
Top commit has no ACKs.
Tree-SHA512: 2cbb8cd38d8888d84fd6ea438dadaf31d0406c4bdadcf9206ca539e1ae728e6c9cb4504de4c62f626bdae585fc7fb923cb148883a5a60faa1c82cf2e00837efa
Prior to this commit, code for scalar multiplication the module
secp256k1_main in jmbitcoin relied on direct access to the secp256k1
linked library, but the API for accessing that object has now changed in
python-bitcointx with version 1.1.5 (there is now a Secp256k1 data class
with lib and ctx entries, see the Readme of the project for details).
After this commit, we update our code for that API (but do not make
functional changes to Joinmarket itself).
d9fee292f4 Fix get_tx_info() type hint and doc (Kristaps Kaupe)
Pull request description:
`txid` is passed as binary `bytes` there, not hex string.
Top commit has no ACKs.
Tree-SHA512: 3e8272a5dc2291add827a06a5d0cda03652168e9d0cc3c9ec7532ace0522eef75c7e38c0dce6e665a65bb73d31579b2afda814fc18d0afcc99db311495642034