diff --git a/docs/release-notes/release-notes-0.5.3.md b/docs/release-notes/release-notes-0.5.3.md new file mode 100644 index 0000000..3749b4e --- /dev/null +++ b/docs/release-notes/release-notes-0.5.3.md @@ -0,0 +1,142 @@ +Joinmarket-clientserver 0.5.3: +================= + + + +This is a bugfix release that improves the reliability of the messaging code, fixes some suboptimal behaviour in the new PayJoin function. +Joinmarket coinjoin users should upgrade because of the former, and any users of PayJoin should upgrade because of the latter. + +There are also a couple of other minor bugfixes and improvements. + +Please report bugs using the issue tracker at github: + + + +Upgrading +========= + +To upgrade (but: read and follow instructions in 0.4.0 if from pre-0.4.0): + +First run the `install.sh` script as mentioned in the README. When prompted to overwrite the directory `jmvenv`, accept. +To install using Python2, use `./install.sh -p python2` ; the default is now Python3. + +Note that `.install.sh -?` will show the options for installation. + +If you are running JoinmarketQt, note that Python2 is incompatible. + +Notable changes +=============== + +### PayJoin improvements and fixes. + +As a result of some basic user testing, a few issues with PayJoin cropped up. None of them were security issues; +some were user-interface annoyance, and others were suboptimal behaviour. The most significant point that indicates +update is required is that in some cases a coinjoin would not be done when it could be (i.e. fallback to non-coinjoin +unnecessarily). + +(1) a bug in coin selection such that UIH2 (see documentation) was not being avoided when it could be. + +(2) incorrect logic on choosing to fall back to a non-coinjoin (although the existing code still was functionally the same, it printed incorrect information messages). + +(3) too easy for users to accidentally choose ordinary coinjoin instead of PayJoin (see [this](https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/305) issue). + +(4) PayJoin didn't work when the daemon `joinmarketd.py` was run separately, this is fixed. + +(5) Minor fix to ensure that the script quits gracefully sender-side when it times out after 10-20 mins, rather than raising an Exception. + +(6) Check sequence and locktime in returned partially signed proposal are unaltered. + +`ac0ecfb` Fix UIH2 avoidance algo when sender input utxo > payment + +`01a48be` Clarifies INFO messages to user about the fallback non-coinjoin + +`371772f` No coins fallback if mixdepth empty + +`fd5e6d8` Fixes #305 + +`0c967bc` Support payjoin when daemon run separately (joinmarketd) + +`1c3a153` graceful sender-side timeout of PayJoin if fails + +`f539b02` Check sequence and locktime are conforming to payjoin v0 in transaction from receiver to sender. + +### Fix bug in message channel switching, and fix rare crash condition; remove Agora from default. + +A long standing but rare bug was recorded first in [this](https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/105) issue. +A crash condition occurred where an attempt to switch over to another channel failed. This condition was aggravated by recent problems with +flaky connections to one of the IRC channels (Agora). Careful analysis showed that the source of the problem was faulty logic in the privmsg +function (`MessageChannelCollection.prepare_privmsg` to be more specific). This logic was fixed and now bots will make much better use of +the ability to switch communications from one message channel to another in cases where one drops (which is far from uncommon), and also will +under no circumstances simply crash when they cannot find any route to the counterparty. + +Further, since Agora seems to drop connections actively during transaction negotiation (due to flooding limits), it has been removed for now +from the default configuration. Users are advised to remove it from their `joinmarket.cfg` by commenting out that section, although feel free +to experiment with using it. Everything should still work (live testing shows that with the new code, your bot *will* dynamically switch its +connections from Agora to another mchan in this case), but there are no guarantees. + +`3a2c462` Fix bug in channel selection in prepare_privmsg + +`9deb3e5` Do not raise exception when privmsg fails + +`3bfc39a` Remove agora from default IRC configuration + +### Add documentation for installation on Windows + +Joinmarket and Joinmarket-Qt are runnable on Windows 10 - by far the simplest way to do it is to +use the Windows Linux subsystem. This can "talk to" a Bitcoin Core installation on Windows itself, +with the aid of some simple software. The documentation added to INSTALL.md explains how to do this. + +`cbc39bc` `8e6a099` `275d24b` `769990d` `993f3fd` `3cefc47` Add instruction for running JoinMarket-Qt on Windows + +`de3818d` add note to Windows install, update JMQT guide + +### Fix bug in sendpayment script + +After the logging change in the previous release, a bug was introduced which would cause the sendpayment +script to crash in case it had trouble with blocking counterparties during the first attempt. This is fixed here. + +`9e7b619` bugfix jmprint call in taker_finished + +### Transaction fee floor + +This is a follow up to #271 - here we actually prevent the user accidentally setting a fee lower than the +minimum relay fee. + +`4462ab6` Add tx fee floor if manually chosen + +### Fix potential crash from rpc gettransaction call + +Code previously only gracefully handled an RPC error, this prevents crashing under any condition. + +`3045370` Bugfix crash on unexpected error from gettransaction call. + +### Minor changes + +Backend testing changes and slight changes to docs/logging. + +`2db4e23` Fix F632 use ==/!= to compare str, bytes, and int literals flake8 errors + +`ba4ae04` conditionally run docker tests on travis + +`37b7a07` Report which nick lead to sig verification failure + +`29fc29b` Better formatting for a "withdraw" rows in wallet history output + +`4c3b2ff` Sender should use his own wallet, not the receiver's one. + + +Credits +======= + +Thanks to everyone who directly contributed to this release - + +- @fivepiece +- @d3spwn +- @AdamISZ +- @jameshilliard +- @AlexCato +- @kristapsk + +And thanks also to those who submitted bug reports, tested and otherwise helped out. + + diff --git a/jmbase/setup.py b/jmbase/setup.py index 942f9e2..eaa6a45 100644 --- a/jmbase/setup.py +++ b/jmbase/setup.py @@ -2,7 +2,7 @@ from setuptools import setup setup(name='joinmarketbase', - version='0.5.2', + version='0.5.3', description='Joinmarket client library for Bitcoin coinjoins', url='http://github.com/Joinmarket-Org/joinmarket-clientserver/jmbase', author='', diff --git a/jmbitcoin/setup.py b/jmbitcoin/setup.py index 1122170..14dd1ef 100644 --- a/jmbitcoin/setup.py +++ b/jmbitcoin/setup.py @@ -2,7 +2,7 @@ from setuptools import setup setup(name='joinmarketbitcoin', - version='0.5.2', + version='0.5.3', description='Joinmarket client library for Bitcoin coinjoins', url='http://github.com/Joinmarket-Org/joinmarket-clientserver/jmbitcoin', author='', diff --git a/jmclient/setup.py b/jmclient/setup.py index c014e1d..fb78314 100644 --- a/jmclient/setup.py +++ b/jmclient/setup.py @@ -2,7 +2,7 @@ from setuptools import setup setup(name='joinmarketclient', - version='0.5.2', + version='0.5.3', description='Joinmarket client library for Bitcoin coinjoins', url='http://github.com/Joinmarket-Org/joinmarket-clientserver/jmclient', author='', @@ -10,6 +10,6 @@ setup(name='joinmarketclient', license='GPL', packages=['jmclient'], install_requires=['future', 'configparser;python_version<"3.2"', - 'joinmarketbase==0.5.2', 'mnemonic', 'argon2_cffi', + 'joinmarketbase==0.5.3', 'mnemonic', 'argon2_cffi', 'bencoder.pyx>=2.0.0', 'pyaes'], zip_safe=False) diff --git a/jmdaemon/setup.py b/jmdaemon/setup.py index eb91479..8b31f44 100644 --- a/jmdaemon/setup.py +++ b/jmdaemon/setup.py @@ -2,12 +2,12 @@ from setuptools import setup setup(name='joinmarketdaemon', - version='0.5.2', + version='0.5.3', description='Joinmarket client library for Bitcoin coinjoins', url='http://github.com/Joinmarket-Org/joinmarket-clientserver/jmdaemon', author='', author_email='', license='GPL', packages=['jmdaemon'], - install_requires=['future', 'txtorcon', 'pyopenssl', 'libnacl', 'joinmarketbase==0.5.2'], + install_requires=['future', 'txtorcon', 'pyopenssl', 'libnacl', 'joinmarketbase==0.5.3'], zip_safe=False) diff --git a/scripts/joinmarket-qt.py b/scripts/joinmarket-qt.py index 020358d..d816695 100644 --- a/scripts/joinmarket-qt.py +++ b/scripts/joinmarket-qt.py @@ -60,7 +60,7 @@ qt5reactor.install() donation_address = "1AZgQZWYRteh6UyF87hwuvyWj73NvWKpL" #Underlying joinmarket code version (as per setup.py etc.) -JM_CORE_VERSION = '0.5.2' +JM_CORE_VERSION = '0.5.3' #Version of this Qt script specifically JM_GUI_VERSION = '9'