9.7 KiB
Joinmarket-clientserver 0.6.3.1:
https://github.com/joinmarket-org/joinmarket-clientserver/releases/tag/v0.6.3.1
Note that this will probably be the last release supporting Python 3.5 or lower.
Includes a few notable improvements to Qt as well as a few quite important back-end bugfixes. Upgrading is recommended as soon as possible.
Please report bugs using the issue tracker at github:
https://github.com/joinmarket-org/joinmarket-clientserver/issues
Upgrading
To upgrade:
If you are upgrading from a version pre-0.6.2 then please see the section "Move user data to home directory" in
the 0.6.2 release notes,
and follow the instructions there (except the commitmentlist file - that can actually
be left alone, the previous release notes were wrong on this point).
First run the install.sh script as mentioned in the README. When prompted to overwrite the directory jmvenv, accept.
Reminder: Python 3 is required; Python 2 is no longer supported as it reached EOL.
Note that ./install.sh -? will show the options for installation.
Notable changes
Lock file name change
While this change is very minor, it can cause confusion if un-noticed. Previously the wallet was kept single access with a file, named wallet.jmdat.lock (or *.lock where * was whatever your wallet name is). Since this could result in accidental deletion of the wallet via tab completion, it was decided to change this to .*.lock - note that many file system explorers/commands will hide this file by default as it's considered of a 'hidden' type. As a reminder, this file must be deleted in cases where there was a system or program crash (you are reminded of this in case it happens).
92f12ab Change lock filename from wallet.jmdat.lock to .wallet.jmdat.lock
BIP21 support
This allows users to use BIP21 URIs instead of addresses both in the command line and JoinmarketQt. In JoinmarketQt you can simply paste the URI into the "address" field in the "single join" tab under "Coinjoins", and it will be read and interpreted. Note this is not yet supporting BIP78 (the pj= parameter) - the Payjoin referred to in the commit below is the Joinmarket-wallet-only protocol implemented already. The BIP78 new PayJoin standard is not yet merged, see this pull request).
4eced50 Add BIP21 support for Payjoin
faaf51e Add BIP21 bitcoin payment URI support to sendpayment.py
a539345 Implement BIP21 in GUI
Backend fidelity bond wallet support
This feature is not yet enabled in the software, but the Joinmarket wallet now supports both sending to timelocked outputs and to burn outputs. This will be enabled as and when the Joinmarket protocol supports it. See here for details.
6b41b8b Disable creation of fidelity bond wallets
869ef55 Disable loading of fidelity bond wallets by Qt
14f086b Add usage guide for fidelity bond wallets
2860c4f Freeze timelocked UTXOs with locktimes in future
ddb32ce Rename functions to say "key" instead of "privkey"
c70183b Create tests for fidelity bond wallets
a0a0d28 Add support for spending timelocked UTXOs
762b1f6 Add watch only wallets for fidelity bonds
a937c44 Add wallet-tool addtxoutproof method
97216d3 Sync burner outputs and display in wallet-tool
255d155 Add merkle proof functions to BitcoinCoreInterface
2271ce0 Add support for burning coins with sendpayment
dc715c9 Add timelock fidelity bond wallet sync and display
ee70cd7 Add support for OP_CLTV timelock addresses
d86df33 Rename functions which create multisig scripts
53b056e Rename variable internal to address_type
Qt improvements and bugfixes
Most important here is the new amount widget that allows entry of bitcoin amounts in sats or BTC in an intuitive way.
b1ee2f0 Make BitcoinAmountEdit behave the same on resize as QLineEdit
d1323f6 BitcoinAmountEdit Qt widget
48f5ddf QValidator port number restriction only for ports
d8fef95 Bugfix: recovered wallet file location
3cd54cb Adds JMIntValidator to ensure exact integer range
6f90e30 Fix "Show seed" in Qt for wallets with mnemonic extension
e536eb1 Add wrapper shell script for JoinMarketQt
554ced0 Update all exit() calls to sys.exit()
cfc4869 Install XDG desktop entry for JoinMarketQt
110a6ee Check for target directories for XDG desktop entry install
7fe910a Bugfix: mnemonic extension display in Qt generate
035fae4 Fix JM-Qt recover wallet bug
Fix commitments recording in jmdaemon
For some time this bug resulted in bots silently ignoring commitments being broadcast in public by other bots (via !hp2 messages). Whilst
this did not impact coinjoin functioning, it may have erroneously allowed more usages of PoDLE commitments than intended. Removing the reference to jm_single() fixes this.
6d87322 Remove jm_single config var call from jmdaemon
CLI improvements and bugfixes
This includes a change in default minimum size for yieldgenerators, the ability to query software version with the --version flag, and an occasionally important improvement in tumbler behaviour: sometimes attempts to broadcast transactions fail due to 'mempool conflict' (one of the inputs provided by a maker, is already spent). But the algorithm was treating this case very wrongly: it was assuming that the cause of the stalling was that some counterparty responded wrongly (e.g. not sending a signature), and so was re-attempting the transaction with all counterparties who did respond; this basically ensured repeated failure, because whatever input was already spent, is of course, always already spent. Instead after this fix, the bot will try again with new counterparties.
3876c1c Change shebang to python3 and +x for scripts
49ea4e4 Correct display of wallet mnemonic extension in cli
c8d10e5 Add python shebangs to joinmarketd.py and wallet-tool.py
e5cf95d Add --version option to cli scripts
6fa7f4c Display address for UTXO on wallet-tool.py freeze
4af9c42 Don't use honest_makers in case: mempool conflict
d2a1a9c yg-privacyenhanced: change default cj min size to 0.001 btc
Quit gracefully if connection to Bitcoin Core fails
Previous to this change, we could get a crash and hang of the process in some cases, if the RPC connection to Core failed, such as when Bitcoin Core stops running, or a network disconnect. After these changes we at least get a clear error message and a shutdown of the Joinmarket bot. In the future, this might be extended to support having the Joinmarket program simply wait until the connection comes back up, but there are some open questions around that.
52b9ba8 Initialization of BCI raises Exception not sys.exit
cc219cc Handles RPC failure in Qt with message box and quit.
5ce4b55 Quit gracefully if Bitcoin RPC connection lost
0c73074 Close wallet when WalletService is stopped.
Support limited use of scripts and Qt without access to Bitcoin Core
In some cases when an RPC connection to a synced instance of Bitcoin Core is not available, it may be useful for users to be able to see, for example, wallet addresses, or other wallet info such as the seed. This is now supported by setting the blockchain_source field of the BLOCKCHAIN section to no-blockchain. (Note: this option existed already, but it previous to this change only allowed the running of the ob-watcher.py script; now it also allows these other things).
f26186d Allow accessing basic wallet info without blockchain source
Other changes
There are many commits less of interest to users, relating to: documentation, testing, and minor bugfixes:
Testing of Bitcoin amount parsing
These commits principally add extensive testing and appropriate exception raising for our bitcoin amount parsing.
13436e0 Fix BTC amount formatting for small amounts and add amount tests
bfe9f35 Raise ValueError on invalid Bitcoin amount strings
Documentation
f2e100e fix sample schedule for testnet
031b8f6 Update tumbler doc for the new schedule format
d275d82 Update readme.md: change Agora-->hackint
6bd101e Remove link to old non segwit version and change new version link to use JoinMarket github organization
cadd8d8 Fix typo
ob-watcher improvements
e8ec595 Shebang and +x for ob-watcher.py
80333b2 Make ob-watcher independent of current working directory
8997147 Terminate ob-watcher immediately if HTTP server fails to start
Developer (@kristapsk) pubkey update
9baa04a Update my pubkey (extended expiration date)
Don't use --txfee for initial guess
Initial fee guess no longer picks up value from the --txfee option, this was a minor bug in that it could end up printing out nonsense
warnings if you used a high value for --txfee (which you certainly might, to set the fee in sats/kbyte):
ec2fd72 Change initial fee guess logic in taker scripts
Abort join early with wrong maker count
Fix for both Qt and CLI, taker side: Don't let user try to use a makercount that conflicts with their own config settings (quit early instead of realise it halfway through the join, which could cost both time and commitments):
5976db7 Abort single join early if maker count below minimum_makers
Installation script improvements
63c21a5 install.sh: use python3 virtualenv
bf14146 install: fix deb_deps_install for Debian
Credits
Thanks to everyone who directly contributed to this release -
And thanks also to those who submitted bug reports, tested and otherwise helped out.