8.7 KiB
Joinmarket-clientserver 0.9.11:
https://github.com/joinmarket-org/joinmarket-clientserver/releases/tag/v0.9.11
Please report bugs using the issue tracker at github:
https://github.com/joinmarket-org/joinmarket-clientserver/issues
Upgrading
To upgrade:
Reminder: always back up and recreate your joinmarket.cfg file when doing the upgrade; this is to make sure you have the new default settings. In order to recreate it, rename the old joinmarket.cfg and run 'python3 wallet-tool.py generate' from the scripts folder.
(If you are upgrading from a version pre-0.7.0 please read the "Upgrading" section in the 0.7.0 release notes.)
(If you are upgrading from a version pre-0.9.0 please read the release notes to find out how about fidelity bonds are relevant to your use-case).
First run the install.sh script as mentioned in the README. When prompted to overwrite the directory jmvenv, accept.
Note that ./install.sh -? will show the options for installation.
Changes
Removal of Python 3.7 support, 3.8 or newer is required now
Python 3.7 has been end of-life since June 2023 and it was a blocker for some necessary dependency updates.
Note that currently only Python 3.8, 3.9, 3.10 and 3.11 are supported, not Python 3.12 and newer.
7e045c9Requires Python <3.123d56837Remove unnecessary check for Python 3.7+204f117Drop Python 3.7 support
Move to modern packaging and source layout
- Migrate to src-layout following https://setuptools.pypa.io/en/latest/userguide/package_discovery.html#src-layout to facilitate automatic package discovery and editable installs.
- Create
joinmarketnamespace distribution package in line with https://packaging.python.org/en/latest/guides/packaging-namespace-packages/ - Migrate to
pyproject.tomlfile for project configuration instead of legacysetup.py
c8eef50Migrate to modern packaging and src layout
Performance improvements
Lots of performance improvements made in wallet code that makes big impact especially with old wallets, with a lots of transaction history (in extreme cases, the time needed for some operations was improved from 40+ minutes to around 10 seconds). When syncing a heavily used wallet from a seed phrase on a new Bitcoin Core instance, now larger gap limit (-g) can be used and it will take far less time than it did before.
This involves caching some computed data in the wallet, in case a bug is discovered with this, a new configuration option wallet_caching_disabled is added to joinmarket.cfg, which allows to disable it when syncing the wallet.
As part of performance improvements are done by caching some data in wallet file (still encrypted), *.jmdat files will grow larger than before.
48aec83wallet: remove a dead store in get_index_cache_and_increment8245271wallet: avoid IndexError in _is_my_bip32_path574c29ewallet: hoist get_script_from_path default impl into BaseWallet2c38a81wallet: delete redundant get_script and get_addr methodsb58ac67wallet: drop _get_addr_int_ext; replace with calls to get_new_addrfc1e000wallet_showutxos: use O(1) check for frozen instead of O(n)184d76fwallet: add get_{balance,utxos}_at_mixdepth methods77f0194wallet_utils: use new get_utxos_at_mixdepth method64f18bcget_imported_privkey_branch: use O(m+n) algorithm instead of O(m*n)01ec2a4wallet: add _addr_map, paralleling _script_map5bc7eb4wallet: add persistent cache, mapping path->(priv, pub, script, addr)c3c10f1wallet: implement optional cache validationef1d76eAllow cache purging at wallet initializationf2ae8abDon't validate cache during initial sync.8491431cache deserialized form of txs in history methodfab97a0Use get_deser_from_gettransaction() everywhere
Drop official support for 32-bit platforms
It should still work, but you might need Rust compiler installed for install.sh to succeed. It was necessary for newer versions of cryptography Python package. See https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/1454 and https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/1579.
Wallet RPC API improvements and fixes
a847df9Patch #1480: call get_POST_body onceaf9f462fix(docs): remove duplicate keys in wallet-rpc.mdef29982remove bearer authentication errorsc88429dJWT authority fixes638200dfeat(rpc): add block height to session responsed8f1fc4Add optional txfee property for direct-send wallet RPCab1481dRPC API: Add optional txfee property for single joins
Removal of convert_old_wallet.py script
It was broken and old format wallets for conversion of which it was used aren't created by JoinMarket since v0.4.0 six years ago. If anybody still needs to do that conversion, some older JoinMarket release can be used.
d89dcdeRemove convert_old_wallet.py script
Code quality improvements
3fc74fbRefactor and cleanup of blockchaininterface and related3e71df5Fix ShellCheck warnings7ebbacfAdd type hints2978b18De-duplicate and change dict_factoryd9fee29Fix get_tx_info() type hint and docc4414e8Minor quality improvements in wallet code
Bugfixes and other minor changes
47bc77fFix some internal dependencies83d7ebbLog in case JM loads RPC wallet at startup438cb41Replace readfp()4486b10Transaction virtual size must be rounded upwardsc990a4dAllow fee bump tx not signalling BIP125 if mempoolfullrbf is enabledbfc618aFix OrderbookWatch.on_order_seen() exception debug messages6ec6308Deduplicate wallet error messages1822279Warn user if higher priority confirmation target than requested is provided by blockchain source196a097Allow absurd fee override when setting tx fee manually9c13180Raise fallback fee rate from 10 sat/vB to 20 sat/vB0a225c1Payjoin: log full proposed PSBT from sender if it fails sanity checkscde6b4cFix no amount entered message (can be sats too, not only BTC)
Documentation
Most important - Bitcoin Core v26 has dropped legacy wallet support by default, but JoinMarket still doesn't support new descriptor wallets. So documentation was changed to note users that Core should be started with deprecatedrpc=create_bdb configuration parameter for JM to work.
c9c4648Update release-notes-0.9.10.md1a8d0eaCorrect help description for --developc2a6b3dRephrase hidden service dir config, lint8555a8bRemoved donation link79e5c3dDocument Core wallet creation for v2613661f5Docs: Fix links in Docker install sectioncb60774Qt: Remove donation link from "About" dialog9ab8ad6Remove mention of donations from JoinMarketQt guidea5a5132update payjoin doc
Installation and dependencies
c08e824build(deps): update tor from v0.4.7.13 to v0.4.8.71ebb68fUpdate txtorcon to 23.0.07181512Upgrade setuptools also with --docker-install91dacf6Rewrite AES code with cryptography70366ffBump cryptography to 41.0.4 for all platformsb2c5603Bump twisted from 22.4.0 to 23.8.030d9715Update Dockerfilef40bd64Bump cryptography from 41.0.4 to 41.0.69410b9cUpdate libsecp256k1 and python-bitcointx47acf6aUpdate libsecp256k1 to v0.4.18254a67Update secp256k1 lib deps for pythonbitcointx1.1.5ca33ecaBump txtorcon from 23.0.0 to 23.11.066fcf38Bump twisted from 23.8.0 to 23.10.08846c4dRemove --disable-jni from libsecp256k1_build
Testing
bfd5b21fix linting906eb71CI: Update Bitcoin Core from 25.0 to 25.1d25457bCI: Disable venv caching4f4945eTest min and latest Python version only027682aCI: Add ShellCheck1cb20d5Do not reinstall on test8684853Support Bitcoin Core v26 for testsd234731Add -allowignoredconf=1 for Bitcoin Core v26+935a734Fix tests for Core v26 when user has no access to ~/.bitcoin/settings.json8f382d0Add test for dict_factory()4d15a2cCI: Add OpenAPI Diff actionfe9ec99When looking for a free TCP ports, bind only to localhost8e6eca8Add CodeQL code scanning
Credits
Thanks to everyone who directly contributed to this release -
- @AdamISZ
- @BTCBellyButton (new contributor)
- @dennisreimann
- @dependabot[bot] :)
- @kristapsk
- @MarnixCroes (new contributor)
- @roshii
- @st3b1t (new contributor)
- @theborakompanioni
- @whitslack (special shout out for extremely significant contribution to improve wallet performance)
And thanks also to those who submitted bug reports, tested, reviewed and otherwise helped out.