From df3712f662c03db4b353e4c1c92d901153c5b8f0 Mon Sep 17 00:00:00 2001 From: Adam Gibson Date: Sat, 30 Nov 2019 16:35:28 +0000 Subject: [PATCH] add release notes and version numbers for v0.6.0 --- docs/release-notes/release-notes-0.6.0.md | 254 ++++++++++++++++++ .../release-notes-tumbler-improve.md | 20 -- jmbase/setup.py | 2 +- jmbitcoin/setup.py | 2 +- jmclient/setup.py | 4 +- jmdaemon/setup.py | 4 +- scripts/joinmarket-qt.py | 4 +- 7 files changed, 262 insertions(+), 28 deletions(-) create mode 100644 docs/release-notes/release-notes-0.6.0.md delete mode 100644 docs/release-notes/release-notes-tumbler-improve.md diff --git a/docs/release-notes/release-notes-0.6.0.md b/docs/release-notes/release-notes-0.6.0.md new file mode 100644 index 000000000..209e12097 --- /dev/null +++ b/docs/release-notes/release-notes-0.6.0.md @@ -0,0 +1,254 @@ +Joinmarket-clientserver 0.6.0: +================= + + + +This release has several significant improvements, although changes to the user +workflow are minor. It also contains an important bugfix for Qt users who **must** +upgrade (see first "Notable Change" below). Non-Qt users are also, however, strongly recommended to upgrade to take +advantage of functional 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 and is strongly recommended. + +Note that `.install.sh -?` will show the options for installation. + +If you are running JoinmarketQt, note that Python2 is incompatible. + +Notable changes +=============== + +### Respect config settings for fee filters in Joinmarket-Qt + +This fixes a bug whereby, although the fees could be checked in a dialog box (if using Single Join, and if checktx is set, which is the default), +the randomly chosen makers fees were not forced to be below the fee maximums (relative and absolute) in the config file (settings: +`max_cj_fee_abs`, `max_cj_fee_rel`). +This bug did not occur in the command line version. +This could result in higher fees being paid than intended, with some probability, by the Taker (if they were not using the checktx option). +For this reason update is essential for any user of the Qt version of the application (if they intend to do coinjoins rather than simple payments or payjoin). + +c571613 Make Qt check config fee filters as well as checktx + +### Tumbler privacy improvements + +The tumbler algorithm has been improved with the aim to increase privacy. This affects the `tumbler.py` script and `joinmarket-qt.py` GUI. + +* At the start of the run, tumbler will now fully spend all mixdepths with coinjoin with no change address (also known as a sweep transaction) back to its own internal wallet. After these initial sweeps are done tumbler will continue with the already-existing algorithm of sending coinjoins with randomly-generated amounts. + +* Tumbler will now occasionally send a round number of bitcoins, for example `0.20000000` or `0.15000000` instead of `0.24159873`. The default probability of this happening is 25% per coinjoin. + +* The default wait time between coinjoins is increased from 30 minutes to 60 minutes. + +* The default number of coinjoin counterparties is increased from 6 to 9. + +* The default number of coinjoins per mixdepth is decreased from 4 to 2. + +For a full discription and reasoning behind the changes see: [Plan to improve the privacy of JoinMarket's tumbler script](https://gist.github.com/chris-belcher/7e92810f07328fdfdef2ce444aad0968) + +b79d34a Remove amountpower and use uniform distn instead + +f40ef2c Occasionally round amounts in tumbler schedule + +35f23eb Add sweep coinjoins to start of tumbler schedule + +32479ae Modify tumbler defaults to improve privacy + +### Wallet refactoring for proper reactive behaviour + +This is a large-ish "under the hood" change that allows the wallet to *react* to external events. Thus after this change a deposit +into the wallet is handled automatically, rather than requiring the user to manually resync or restart. This applies both to yield +generators and to the Qt wallet; the wallet tab now shows the live balances at addresses. + +(At a more technical level, as well as +changing to a reactive architecture, there are other benefits: a wallet service architecture completely isolates the wallet and +blockchain access implementation from its client applications, allowing future changes/refactors to work much more easily, significantly +simpler transaction monitoring code, and also we now have only a single polling loop to the underlying Bitcoin Core RPC). + +c654de0 Wallet and blockchain refactoring + +eadbed2 Update receive-payjoin for walletservice arch + +cf19df2 Restore account support in wallet_service, needed for pre-0.17 Bitcoin Core + +### New custom yield generator(s) + +The below commits act to slightly refactor and support the use of +separate/new custom yield generators. Makers are encouraged to take a look +at the new script [here](https://github.com/JoinMarket-Org/custom-scripts/tree/master/yield-generators) +called `yg-acyclic`, which has a specific idea about using a maker bot to siphon funds out via one +mixdepth; read the comments in the file for detail, and please do try it out. + +35ebfd0 Fix yg-privacyenhanced.py for recent change. + +8b1e24e Make yg algorithms easier to define. + +fac2d88 generalize YieldGeneratorBasic.on_tx_unconfirmed + +### Wallet password via stdin + +This new option allows one to pass wallet passwords via stdin, so as to allow automated startup of the command line application, +without having the security concern that arises from implementing this as a command line argument (shell history/process list etc.). + +b83e27c Add --wallet-password-stdin + +### Amount formatting + +It is now possible to specify amounts in bitcoins, as well as in sats (the default, which is still retained) on the command line, and also in Joinmarket-Qt. You can add `btc` after an amount to clarify. +See [here]() for more details. To emphasise, this is not a *change* - you can still do what you did before, but it adds the possibility of using the alternative unit. + +b2e4308 Allow both BTC and sat amounts for single send / CJ + +8fd0e75 Mention ability to use both BTC and sat amounts in docs + +6926a31 Allow both BTC and sat amounts for payjoin receive + +### Several minor improvements and bugfixes in Qt + +A couple of things notable in this set: first, seed display was (for some reason?) +not implemented in Qt but only on command line; that has now been added. Also, minor +bugfixes to how mnemonic extension adding works and ensuring that comment lines are +preserved in the config file when using Qt (those comments are sometimes very useful, +so please read them if you haven't!). + +1c01f76 Handle exceptions in direct_send() + +e6c0575 Abort wallet generation if mnemonic extension choosen but not provided + +c23c982 Rename "Exit" to "Quit" in main menu + +9dee0d7 Add dialog for displaying seed phrase to JM-Qt + +fdc6194 Rename single-letter main window variable from `w` + +b3c54ca Rename variable that was previously missed + +8ec948e Fix context menu for bech32 addresses in tx history tab + +02c2b4b don't use native dialog for schedule open + +5d4fc41 Preserve comments in config file when using Qt + +bdc0ac5 Fixes #389 - wallet syncing in Qt + +24e50cd Use restart_callback in all situations + +8936cfc Fixes #445 The variable mnemonic_extension is already of type str and so the call to decode() in displayWords was a bug. + +ed825d5 Handle already existing wallet file on recover + +### Temporarily revert batch-import during run + +An obscure error is encountered by some users running on slower disks: because pre-0.19 Bitcoin Core contains a bug with excessive use of database locks +during importing of watch-only addresses, an import of as few as 20-60 addresses can create a very long delay (on the order of 10s of seconds), +whereas it's hardly noticeable on SSD disks. As a result coinjoins can even fail, hence the below commit reverts a batch import which +was intended to make conditions of failure to sync the wallet far less likely. + +df57099 Revert "Fix bug in detailed wallet sync relating to gap addrs." + +### Rationalisation of txfee estimate values in code + +This should not require any user action. +The `txfee_default` variable was a leftover from a much simpler first version of Joinmarket +with sometimes no access to fee estimates, we no longer need it so it's removed as its existence +is confusing. Similarly, the `--txfee` option was also misleading and is now repurposed as an +override, see the command line help for details. + +5c0b9eb Remove txfee_default + +0ab5b65 Redefine cli-option --txfee + +### Exit code rationalisation + +Make exit codes from application shutdown follow standard logic. + +52108b6 Update exit codes + + +### Minor updates for installation + +Of note: current libsodium version is old, but we use only the most +basic functionality; we will probably update shortly, all the same. +`libssl-dev` and `libltdl-dev` are a necessity for certain Debian distros. +The twisted version update was not strictly needed, as the security issue +in pre-v19 only applied to the `web` module, which Joinmarket doesn't use, +but the update is made here since it hurts nothing. + +cb38ac9 Update url for libsodium + +84a4ab2 libssl-dev added as dependency + +09e6385 Added missing dependency libltdl-dev + +fe66f2e Add option to install.sh to not build the Qt GUI + +9066ad4 Bump twisted from 18.9.0 to 19.7.0 in /jmbase + +### Minor changes + +More minor bugfixes: + +User created custom schedules were broken by fee check in #367, so restored: + +d9bcca3 Allow custom schedules to work again after #367 + +Core supports fee block targets up to 1000 and not only 144: + +cf54789 Set txfee threshold to 1000 instead of 144 + +Tumbler was only checking for valid addresses at time of transaction, not at startup: + +ad65521 Validate addresses in CLI tumbler at start. + +Two fixes for wallet history function: + +54326e8 Fix wallet history's display of cj internal sweeps + +90a449c Handle unconfirmed tx in wallet_fetch_history() + +Several minor changes to the documentation, logs/error messages, or testing code. + +documentation and logging + +42991a4 Add note to docs about running yg in background + +11304c6 fix formatting error in USAGE.md + +c9bf1c6 Update documentation: Replace links to instructions in original Wiki ... + +1509be0 Clarify that the quickstart install guide is only for Linux + +d568040 Fix outdated link in Linux install instructions + +e1ff07c add link to custom-scripts ygs in docs + +testing + +489aedc move maker_timeout_setting to regtest_joinmarket.cfg + +6a0e742 Add basic unit tests for YieldGeneratorBasic. + + +Credits +======= + +Thanks to everyone who directly contributed to this release - + +- @chris-belcher +- @kristapsk +- @AlexCato +- @AdamISZ +- @zaiteki +- @CandleHater +- @undeath +- @domob1812 + +And thanks also to those who submitted bug reports, tested and otherwise helped out. diff --git a/docs/release-notes/release-notes-tumbler-improve.md b/docs/release-notes/release-notes-tumbler-improve.md deleted file mode 100644 index 135746bf5..000000000 --- a/docs/release-notes/release-notes-tumbler-improve.md +++ /dev/null @@ -1,20 +0,0 @@ -copypaste this into "release-notes" when the time comes to make a new release, then delete this file - -Notable changes -=============== - -### Tumbler privacy improvements - -The tumbler algorithm has been improved with the aim to increase privacy. This affects the `tumbler.py` script and `joinmarket-qt.py` GUI. - -* At the start of the run, tumbler will now fully spend all mixdepths with coinjoin with no change address (also known as a sweep transaction) back to its own internal wallet. After these initial sweeps are done tumbler will continue with the already-existing algorithm of sending coinjoins with randomly-generated amounts. - -* Tumbler will now occasionally send a round number of bitcoins, for example `0.20000000` or `0.15000000` instead of `0.24159873`. The default probability of this happening is 25% per coinjoin. - -* The default wait time between coinjoins is increased from 30 minutes to 60 minutes. - -* The default number of coinjoin counterparties is increased from 6 to 9. - -* The default number of coinjoins per mixdepth is decreased from 4 to 2. - -For a full discription and reasoning behind the changes see: [Plan to improve the privacy of JoinMarket's tumbler script](https://gist.github.com/chris-belcher/7e92810f07328fdfdef2ce444aad0968) diff --git a/jmbase/setup.py b/jmbase/setup.py index 34d0b6ae3..c5b0c0a86 100644 --- a/jmbase/setup.py +++ b/jmbase/setup.py @@ -2,7 +2,7 @@ setup(name='joinmarketbase', - version='0.5.5', + version='0.6.0', 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 6727f708d..07af65cb4 100644 --- a/jmbitcoin/setup.py +++ b/jmbitcoin/setup.py @@ -2,7 +2,7 @@ setup(name='joinmarketbitcoin', - version='0.5.5', + version='0.6.0', 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 42ab6e62c..7a7f571d0 100644 --- a/jmclient/setup.py +++ b/jmclient/setup.py @@ -2,7 +2,7 @@ setup(name='joinmarketclient', - version='0.5.5', + version='0.6.0', description='Joinmarket client library for Bitcoin coinjoins', url='http://github.com/Joinmarket-Org/joinmarket-clientserver/jmclient', author='', @@ -10,6 +10,6 @@ license='GPL', packages=['jmclient'], install_requires=['future', 'configparser;python_version<"3.2"', - 'joinmarketbase==0.5.5', 'mnemonic', 'argon2_cffi', + 'joinmarketbase==0.6.0', 'mnemonic', 'argon2_cffi', 'bencoder.pyx>=2.0.0', 'pyaes'], zip_safe=False) diff --git a/jmdaemon/setup.py b/jmdaemon/setup.py index f66bd8044..1c7568a48 100644 --- a/jmdaemon/setup.py +++ b/jmdaemon/setup.py @@ -2,12 +2,12 @@ setup(name='joinmarketdaemon', - version='0.5.5', + version='0.6.0', 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.5'], + install_requires=['future', 'txtorcon', 'pyopenssl', 'libnacl', 'joinmarketbase==0.6.0'], zip_safe=False) diff --git a/scripts/joinmarket-qt.py b/scripts/joinmarket-qt.py index 13796873b..f8197ef26 100644 --- a/scripts/joinmarket-qt.py +++ b/scripts/joinmarket-qt.py @@ -62,9 +62,9 @@ donation_address_sw = "bc1q5x02zqj5nshw0yhx2s4tj75z6vkvuvww26jak5" #Underlying joinmarket code version (as per setup.py etc.) -JM_CORE_VERSION = '0.5.5' +JM_CORE_VERSION = '0.6.0' #Version of this Qt script specifically -JM_GUI_VERSION = '10' +JM_GUI_VERSION = '11' from jmbase import get_log from jmclient import load_program_config, get_network, update_persist_config,\