JoinMarket v0.9.11: Wallet Performance & RPC API Improvements
JoinMarket is a Bitcoin CoinJoin implementation with incentive structure to convince people to take part. Widespread use of JoinMarket improves bitcoin's fungibility and privacy. This implementation of JoinMarket also implements PayJoin.
- "This release includes removal of support for Python 3.7 (which had been end-of-life since June 2023), so now Python 3.8+ is minimum requirement. Note that currently only Python 3.8, 3.9, 3.10 and 3.11 are supported, not Python 3.12 and newer."
- "This release includes migrating to modern packaging and source layout, big wallet performance improvements, wallet RPC improvements and fixes and various other bugfixes and minor changes."
What's new
- 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."
- 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.
c8eef50
Migrate to modern packaging and src layout- Create
joinmarket
namespace distribution package in line with https://packaging.python.org/en/latest/guides/packaging-namespace-packages/ - Migrate to
pyproject.toml
file for project configuration instead of legacysetup.py
- 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 tojoinmarket.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."
- "This involves caching some computed data in the wallet, in case a bug is discovered with this, a new configuration option
- 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 ofcryptography
Python package. See #1454 and #1579." - Wallet RPC API improvements and fixes. "
- 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." - Code quality improvements.
- Bugfixes and other minor changes.
- 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."
Please read the release notes here for full details on what this release includes.