Commit graph

88 commits

Author SHA1 Message Date
Adam Gibson
77a426c504
add release notes for 0.9.12 2026-04-20 12:34:06 -03:00
Adam Gibson
092b48000f
Checks case of inbound commitments before comparison.
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.
2026-04-13 16:43:45 -03:00
merge-script
69335d1bc0
Merge JoinMarket-Org/joinmarket-clientserver#1810: Replace default directory nodes with currently working ones
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
2025-10-31 09:25:32 +02:00
roshii
091ce515e9 fix(deps): bencode library
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
2025-10-26 13:51:29 +01:00
merge-script
992d798e5c
Merge JoinMarket-Org/joinmarket-clientserver#1536: RPC-API: Implement message signing
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
2025-10-19 21:26:01 +03:00
Kristaps Kaupe
646999179b
RPC-API: Implement message signing 2025-10-19 21:19:51 +03:00
Kristaps Kaupe
d87e7cb78a
Replace default directory nodes with currently working ones 2025-10-17 22:58:27 +03:00
Kristaps Kaupe
f3630dc10b
Support Bitcoin Core descriptor wallets (quick and dirty way)
Co-authored-by: laanwj <126646+laanwj@users.noreply.github.com>
2025-04-22 21:03:55 +03:00
Kristaps Kaupe
395050cfa4 Use coins_to_satoshi() and satoshi_to_coins() from bitcointx everywhere 2025-04-16 18:46:40 +03:00
merge-script
4062550bde
Merge JoinMarket-Org/joinmarket-clientserver#1658: Handle JsonRpcError in _estimate_fee_basic
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
2025-04-16 18:32:01 +03:00
merge-script
5fd2c99509
Merge JoinMarket-Org/joinmarket-clientserver#1696: RPC API endpoint to get wallet rescan status
5b47d1c906 RPC API endpoint to get wallet rescan status (Kristaps Kaupe)

Pull request description:

  https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1461#issuecomment-2079276604

Top commit has no ACKs.

Tree-SHA512: f2a641b8b601985d4b2d88f643f37540a7b247b01616d640c8f244c9762dcb5a8cbcffb8dc9b87889d54a5d0833a7753c7f0a3e77908a7208400d44e8262fe30
2025-04-16 18:27:12 +03:00
Kristaps Kaupe
c416a94410
Remove DarkScience IRC network from default config
As requested by DarkScience Operations Team.
2025-02-07 18:10:29 +02:00
merge-script
30874b71f8
Merge JoinMarket-Org/joinmarket-clientserver#1710: maker: allow receiving more money than promised
861c790fc1 maker: allow receiving more money than promised (Matt Whitlock)

Pull request description:

  Fixes: https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/1709

ACKs for top commit:
  kristapsk:
    cr utACK 861c790fc1

Tree-SHA512: a027817fcc66be01a5c3423f41359d3aa78caedfa5d4dba25ea3dbf3d70e6132f8f8a682610fb35cbdfa5c0802a94b5d15af1f348c9738cf9c2af29fab8c9545
2024-06-22 15:10:06 +03:00
Matt Whitlock
861c790fc1 maker: allow receiving more money than promised
Fixes: https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/1709
2024-05-26 16:41:51 -04:00
Kristaps Kaupe
ef0afbd4c5
Merge JoinMarket-Org/joinmarket-clientserver#1700: Support payjoin PSBT with multiple sender inputs
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
2024-05-19 03:10:31 +03:00
Kristaps Kaupe
527d27c58c
Merge JoinMarket-Org/joinmarket-clientserver#1699: Remove Ilita IRC, re-enable hackint
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
2024-05-16 21:10:01 +03:00
Kristaps Kaupe
8eb55be6e0
Handle None enter_seed_callback() response 2024-05-11 11:32:28 +03:00
spacebear
865247cf8d
Support payjoin PSBT with multiple sender inputs 2024-05-08 11:30:22 -04:00
Kristaps Kaupe
954dc36e75
Remove Ilita IRC, re-enable hackint 2024-05-07 18:29:48 +03:00
Kristaps Kaupe
5b47d1c906
RPC API endpoint to get wallet rescan status 2024-04-28 14:28:52 +03:00
Kristaps Kaupe
085ef0822a
Merge JoinMarket-Org/joinmarket-clientserver#1676: Multiple (batch) payment support in direct_send()
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
2024-04-25 15:49:14 +03:00
Kristaps Kaupe
fd96f96089
Fix docstring
Default was changed in 9c13180c.
2024-03-18 13:21:12 +02:00
Kristaps Kaupe
830ec5a7cb
Merge JoinMarket-Org/joinmarket-clientserver#1686: yieldgenerator: allow change address to be overridden
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
2024-03-15 08:00:37 +02:00
Matt Whitlock
d11779184f yieldgenerator: allow change address to be overridden 2024-03-14 20:34:16 -04:00
Kristaps Kaupe
9dbad65b9f
Merge JoinMarket-Org/joinmarket-clientserver#1678: Refactor: move bitcoin unit conversion functions from ob-watcher.py to jmbitcoin
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
2024-03-12 11:18:22 +02:00
Kristaps Kaupe
cf5a841c30
Merge JoinMarket-Org/joinmarket-clientserver#1674: Unify cli user input code where limited range of answers are allowed
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
2024-03-12 09:05:30 +02:00
Kristaps Kaupe
3317b0b519
Fix jm_single().bc_interface.get_deser_from_gettransaction call
fab97a003b (r139364262)
2024-03-05 03:07:21 +02:00
Kristaps Kaupe
6e5cdc81ae
Refactor: move bitcoin unit conversion functions from ob-watcher to jmbitcoin 2024-02-28 13:33:04 +02:00
Kristaps Kaupe
24feda79d3
Fix / remove broken links 2024-02-25 20:53:02 +02:00
Kristaps Kaupe
f3f4f0a4fb
Multiple (batch) payment support in direct_send() 2024-02-24 02:05:50 +02:00
Kristaps Kaupe
5bfa08c6f5
Merge JoinMarket-Org/joinmarket-clientserver#1633: Implement mixdepth filtering for showutxos
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
2024-02-23 14:01:49 +02:00
Kristaps Kaupe
904b780b80
Unify cli user input code where limited range of answers are allowed 2024-02-22 20:29:38 +02:00
Kristaps Kaupe
eaae8d84bd
Merge JoinMarket-Org/joinmarket-clientserver#1631: Cache None in tx_cache for non-wallet transactions
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
2024-02-22 13:29:55 +02:00
Kristaps Kaupe
b93b6be641
Update version 2024-02-22 11:33:03 +02:00
Kristaps Kaupe
053e9d882c
Release notes and version for v0.9.11
Co-authored-by: Marnix <93143998+MarnixCroes@users.noreply.github.com>
2024-02-20 21:48:33 +02:00
Kristaps Kaupe
309e10524b
Merge JoinMarket-Org/joinmarket-clientserver#1624: Don't validate cache during initial sync.
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
2024-02-14 09:42:44 +02:00
Kristaps Kaupe
0a225c1178
Payjoin: log full proposed PSBT from sender if it fails sanity checks 2024-02-13 04:19:28 +02:00
Kristaps Kaupe
74a0b10503
Merge JoinMarket-Org/joinmarket-clientserver#1662: Minor quality improvements in wallet code
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
2024-02-11 22:38:00 +02:00
Kristaps Kaupe
e04fe68758
Merge JoinMarket-Org/joinmarket-clientserver#1659: Raise fallback fee rate from 10 sat/vB to 20 sat/vB
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
2024-02-11 22:03:02 +02:00
Kristaps Kaupe
c4414e8c9c
Minor quality improvements in wallet code 2024-02-10 18:28:34 +02:00
Kristaps Kaupe
9c13180c13
Raise fallback fee rate from 10 sat/vB to 20 sat/vB
It's just current reality on mainnet, that's around what `bitcoin-cli
estimatesmartfee 1008` (1 week confirmation target) returns.
2024-02-10 02:19:38 +02:00
Kristaps Kaupe
100da5eb33
Handle JsonRpcError in _estimate_fee_basic 2024-02-10 02:09:46 +02:00
Kristaps Kaupe
d89dcdeaf8
Remove convert_old_wallet.py script
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.
2024-02-01 21:38:46 +02:00
Kristaps Kaupe
fe9ec99322
When looking for a free TCP ports, bind only to localhost 2024-02-01 02:45:14 +02:00
Kristaps Kaupe
d21f7c0b93
Merge JoinMarket-Org/joinmarket-clientserver#1612: RPC API: Add optional txfee property for single joins
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
2024-01-27 14:28:02 +02:00
Kristaps Kaupe
ab1481d814
RPC API: Add optional txfee property for single joins 2024-01-27 01:13:36 +02:00
Adam Gibson
8254a67341
Update secp256k1 lib deps for pythonbitcointx1.1.5
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).
2024-01-22 14:37:28 -06:00
Kristaps Kaupe
196a097667
Allow absurd fee override when setting tx fee manually 2024-01-17 16:45:23 +02:00
Kristaps Kaupe
3a6bea6ca8
Merge JoinMarket-Org/joinmarket-clientserver#1630: Fix get_tx_info() type hint and doc
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
2024-01-12 23:12:19 +02:00
Kristaps Kaupe
053d8a18f2
Implement mixdepth filtering for showutxos 2024-01-06 23:51:13 +02:00