From 6ccb1023d15e63e9d942c221c8826af35b810604 Mon Sep 17 00:00:00 2001 From: AdamISZ Date: Mon, 7 Jan 2019 16:27:57 +0100 Subject: [PATCH] version bump and release notes 0.5.1 --- docs/release-notes/release-notes-0.5.1.md | 179 ++++++++++++++++++++++ jmbase/setup.py | 2 +- jmbitcoin/setup.py | 2 +- jmclient/setup.py | 4 +- jmdaemon/setup.py | 4 +- scripts/joinmarket-qt.py | 4 +- 6 files changed, 187 insertions(+), 8 deletions(-) create mode 100644 docs/release-notes/release-notes-0.5.1.md diff --git a/docs/release-notes/release-notes-0.5.1.md b/docs/release-notes/release-notes-0.5.1.md new file mode 100644 index 000000000..832f0df8e --- /dev/null +++ b/docs/release-notes/release-notes-0.5.1.md @@ -0,0 +1,179 @@ +Joinmarket-clientserver 0.5.1: +================= + + + +This release contains a number of minor improvements bugfixes. All users are +encouraged to upgrade as soon as possible. + +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 +=============== + +### Make Python3 the default and add a help message to installation script + +The `install.sh` can be run with the argument `-?` to show the help message, +which explains the optional flags (`--with-qt`, `--python`, `--develop`). +Python3 is now made the default option, since it seems to be quite stable now and +is clearly preferable; Python2 can be run as an option. + +`5ac3aae` Allow more specific --python targets for install.sh + +`e1e93cd` Default to python3 install + +`3ccd395` `4abe512` `c8ff323` add help menu to install.sh + +### Add native segwit wallet to backend + +Although not directly exposed in Joinmarket in 0.5.1, this commit represents an +important step of allowing the full wallet functionality using native segwit (p2wpkh) +and bech32 addresses in place of the current p2sh-wrapped segwit (p2sh-p2wpkh); this +is done, still using BIP39 for seedphrases, with [BIP 84](https://github.com/bitcoin/bips/blob/master/bip-0084.mediawiki) +in place of the existing +[BIP 49](https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki). As well as new wallet classes this commit make some alterations to +the jmbitcoin library functions (new scripts, signing etc., as well as some updated +documentation in the code). Note that a switch to use of native segwit in Joinmarket +coinjoins is not a trivial decision, as we have to consider anonymity sets, +but it is likely to happen in the future; also there may be other applications +of native segwit wallets. + +`2632df5` Native segwit support including basic BIP84 wallet. + +### Minor bugfixes following up from the Python3 upgrade + +These are mostly clean-up commits of some edge cases discovered +in running with Python3 (wallet history method had a bug; convert_old_wallet likewise; +the electruminterface (which is considered mostly unsupported, but people still like +to try it) had a couple of bugs too). + +`5d6825b` Fix bug in convert_old_wallet after Py3 upgrade + +`0d1981e` adapt install.sh to Qt with python3 + +`78d5f7e` python3 fixes for electruminterface + +`ad77769` zip(*value_freq_list[1:]) needs to be a list + +### Add more informative labels to wallet display + +This commit adds, both to the command line and Qt wallet display, a set of labels for +the utxos/addresses in an active wallet; there's "cj-out" (coinjoin output utxo), +"change-out" (change output utxo), "reused" for when an address has been used more than +once (which should not happen unless the user actively chooses it), "non-cj-change" +and "deposit" (which means coins arriving in the wallet from an external one). + +The main commit is `596261a`; the other commits are bugfixes for unintended side effects. + +`596261a` `481b688` `0a74b83` `c400b07` implement wallet-tools display[all] extended usage status + +### Fix minor UI bugs in Qt + +There were some error conditions in the dialogs when running the `generate` method to create +a new wallet, and entering passwords, which are fixed here. + +`eaac4be` Fix bug in wallet generate in Qt + +`5d66d94` Check for empty password and cancellation in JoinMarket-Qt wallet generation + +`51a257f` Don't show password when loading wallet in JoinmarketQt + +`cdde41e` Handle already existing wallet file on generate + +### Lengthen timeout for transaction broadcast + +It was observed that in the case of larger coinjoins, the final coinjoin transaction may +be broadcast after the previously-default 30 seconds, meaning that the Maker may fail to recognize +that the transaction had happened, which while not a security risk, meant that the maker had +a temporarily incorrect view of his own coins and thus made offers that used inaccurate sizes. +The reason for delays longer than 30s are various, but the principal one is that we heavily +throttle IRC communications to avoid hitting server limits; and there is a ~ quadratic scaling +in data transfer for number of participants; so if a Taker requests 10 counterparties, he must send +a very large transaction 10 times. For this reason the number has been bumped to 180s by default +(but it can always be edited by the user in `joinmarket.cfg`, see `unconfirm_timeout_sec`. + +(Slightly more in the weeds: we run asynchronously and poll every few seconds for updates on +transactions that we have signed; obviously we can't do that forever for a transaction that is +never going to come; Takers will sometimes just decide not to broadcast, or fail; so we must time +out these polling loops; previously 30 seconds was considered to be ample, but see prev paragraph. +Additionally, note that we cannot lock utxos as soon as a transaction has been arranged, to avoid +the Maker being unclear about what to offer, because this would represent a DOS risk where a +malicious taker just locks up all the Maker's utxos by arranging but not broadcasting tons of +transactions. Hence only the broadcast event triggers the "locking/deleting" of utxos.). + +`39d2b62` Increase timeout waiting for coinjoin TX broadcast + +### Add donation address to README + +`9e88e86` Add signed donation addresses to README + +### Improve txfee docs + +Users should note that "fixed" fees (specified as values of `tx_fees` larger than 144) are interpreted +as a number of satoshis per kB, but that they are *also* randomized by 20%, to avoid the trivial watermarking +of all of that user (taker)'s transactions. If you choose 1000, meaning 1 sat/byte, you are in danger of +creating a transaction that will not relay. This may soon be fixed up further; note for now, that using a +figure < 1200 is strongly disrecommended as the tx might not broadcast (and we do not yet allow rbf). + +`d238172` Improve manually selected tx fee documentation + +### Write process id to lockfile for checking conflicts + +Previously the lockfile informed a user that another process was already operating on the wallet +(it's not supported to run Joinmarket twice against the same wallet simultaneously); with this update +the PID of the other process is displayed. (As before, this can happen on a crash as well as an actual +conflict, note). + +`585d2f9` Write pid to wallet lockfile, display it when lock already in place + + +### Minor changes + +Will not be of interest to non-developers (these are mostly changes to tests/very minor refactoring). + +`83a1263` remove unused bci.py module + +`8256b27` build minimal libsodium + +`54618e6` Remove btc.py + +`9799f2c` require minimum bencoder.pyx version + +`c541b01` Remove unused regex based type detection + +`e0f8715` pin coverage+pytest-cov versions, upgrade core to 0.17.1 on docker + +`a6a8bcf` only download and extract miniircd if it doesn't exist + + +Credits +======= + +Thanks to everyone who directly contributed to this release - + +- @qubenix +- @jameshilliard +- @undeath +- @AdamISZ +- @AlexCato +- @fivepiece +- @chris-belcher +- @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 c1ff48114..a2575dd24 100644 --- a/jmbase/setup.py +++ b/jmbase/setup.py @@ -2,7 +2,7 @@ setup(name='joinmarketbase', - version='0.5.0', + version='0.5.1', 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 6c0396ce7..a2a8fe8ca 100644 --- a/jmbitcoin/setup.py +++ b/jmbitcoin/setup.py @@ -2,7 +2,7 @@ setup(name='joinmarketbitcoin', - version='0.5.0', + version='0.5.1', 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 3d8ad36c1..a4865b029 100644 --- a/jmclient/setup.py +++ b/jmclient/setup.py @@ -2,7 +2,7 @@ setup(name='joinmarketclient', - version='0.5.0', + version='0.5.1', 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.0', 'mnemonic', 'argon2_cffi', + 'joinmarketbase==0.5.1', 'mnemonic', 'argon2_cffi', 'bencoder.pyx>=2.0.0', 'pyaes'], zip_safe=False) diff --git a/jmdaemon/setup.py b/jmdaemon/setup.py index b00085970..01460a98b 100644 --- a/jmdaemon/setup.py +++ b/jmdaemon/setup.py @@ -2,12 +2,12 @@ setup(name='joinmarketdaemon', - version='0.5.0', + version='0.5.1', 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.0'], + install_requires=['future', 'txtorcon', 'pyopenssl', 'libnacl', 'joinmarketbase==0.5.1'], zip_safe=False) diff --git a/scripts/joinmarket-qt.py b/scripts/joinmarket-qt.py index ac4b72415..6f0f1677b 100644 --- a/scripts/joinmarket-qt.py +++ b/scripts/joinmarket-qt.py @@ -60,9 +60,9 @@ donation_address = "1AZgQZWYRteh6UyF87hwuvyWj73NvWKpL" #Underlying joinmarket code version (as per setup.py etc.) -JM_CORE_VERSION = '0.5.0' +JM_CORE_VERSION = '0.5.1' #Version of this Qt script specifically -JM_GUI_VERSION = '8' +JM_GUI_VERSION = '9' from jmbase import get_log from jmclient import load_program_config, get_network,\