Browse Source

release notes for 0.4.0

master
AdamISZ 7 years ago
parent
commit
2461c9a5f3
No known key found for this signature in database
GPG Key ID: B3AE09F1E9A3197A
  1. 190
      docs/release-notes/release-notes-0.4.0.md
  2. 2
      jmbase/setup.py
  3. 2
      jmbitcoin/setup.py
  4. 4
      jmclient/setup.py
  5. 4
      jmdaemon/setup.py
  6. 2
      scripts/joinmarket-qt.py

190
docs/release-notes/release-notes-0.4.0.md

@ -0,0 +1,190 @@
Joinmarket-clientserver 0.4.0:
=================
<https://github.com/joinmarket-org/joinmarket-clientserver/releases/tag/v0.4.0>
This is a significant upgrade, but mostly to features `behind the scenes` that should improve both the
security and the performance (in terms of coinjoin success/quality). However it is not a security critical
release, nor includes any genuinely breaking changes. See the next section, Upgrade, for more details; there
are a couple of minor things you should do when upgrading, but it shouldn't cause any real hassle.
Please report bugs using the issue tracker at github:
<https://github.com/joinmarket-org/joinmarket-clientserver/issues>
Upgrading
=========
To upgrade:
First run the `install.sh` script as mentioned in the README. When prompted to overwrite the directory `jmvenv`, accept.
Next: there is a small but not disruptive task to do: upgrade the wallet file format. Use the instructions
[here](https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/wallet-upgrade.md) . Note this
does not require doing transactions, or rescanning Core or anything similarly disruptive; it's purely a file format change (see
"Notable Changes" (under "Upgrade of wallet ...") below for details on this wallet upgrade).
Obviously do keep a backup of the previous format, at least initially, but the new format has been quite widely tested now
and shouldn't cause issues in usage.
Thirdly: this can be skipped for now if you don't have time, but: see
[here](https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/config-irc-update.md)
for how to change the format in the configuration
for IRC servers. It's a trivial change that just helps out in situations where one of the IRC servers is down (you can now
just comment it out, unlike before).
Fourthly: (this can also be skipped until later) When running `sendpayment.py` or `tumbler.py` you will be prompted to choose
a specific value for the maximum coinjoin fee(s) per participant, or accept a default random value. Details on the reason
for this below in "Notable changes", under "Order chooser improvement"
Notable changes
===============
### Upgrade of wallet code and wallet file format
INSERT SUMMARY OF FUNCTIONAL CHANGES AND REASONING HERE
a0c1d5a add upgrade notes
8885e61 revert bad assert fix
a929cf3 make log output human-readable again
aa2c1d9 fix some bugs in wallet_utils
9dd1dc7 fix wallet sync in fast mode
98f41f7 make SimpleLruCache an actual LRU cache
703ae04 remove wallet.sign()
34f8600 fix wallet syncing
747c227 fix some max_mixdepth off-by-one errors
39e4276 change default wallet name
8b9abef add is_segwit_mode() utility function
8ca6cfc make sure new addresses always get imported
914a40e adopt wallet_utils for new wallet
cdbb345 remove uses of internal wallet data from electruminterface. NOTE: changes untested, probably breaks electruminterface somehow
1f30967 adopt blockchaininterface for new wallet
705d41d remove usages of wallet.unspent
89b5cd4 add new wallet classes to existing tests
3cf9926 remove references to old wallet classes
2a0757c remove BitcoinCoreWallet
6aaabb2 change yieldgenerator using new wallet implementation, start porting wallet_utils
995c123 replace old wallet implementation with new one
474a77d add setup.py dependencies
ca57a14 add new wallet implementation
455d092 minor bugfixes to Qt for new wallet code
fd0e5b2 Merge #181: new wallet follow-up
3a89ee4 move wallet upgrade docs and improve wallet opening error handling
310fac8 add test for wallet.mixdepth
3921882 change wallet mixdepth behaviour
d3a6dd0 fix old wallet conversion with mnemonic extension
6a26e48 Disallow less than 1 mixdepth in changemixdepth. Maxmixdepth error msg in tumbler: fix off-by-one
fdd0d11 Remove --rpcwallet CLI option
a65b822 fix help msg error for changemixdepth
8f434b5 open wallet in read-only mode if possible
697d8d7 bugfix: sendpayment invalid reference to userpcwallet
### Remove use of deprecated accounts feature in Core
As of Bitcoin Core 0.17.0, the accounts feature is deprecated, and can only still be
used with the flag `--deprecatedrpc=accounts` passed to `bitcoind`. As of 0.18 it will
be removed entirely. Hence Joinmarket has switched over to using the labels feature, instead
of the accounts feature, as of this 0.4.0 release, meaning you should notice no effect when
upgrading to 0.17.0. For more details see the [PR](https://github.com/JoinMarket-Org/joinmarket-clientserver/pull/186).
`b52bc06` Switch over to using labels instead of accounts
### Order chooser improvement
This is a small and probably near-invisible change, once configured, but may actually be *very*
important and so is worth understanding:
One weakness of Joinmarket's model is that Takers are very price sensitive (using an exponential
distribution of weighting by price, by default, with the order-choose method (1) `weighted_order_choose`).
The other two non-default options were: (2) pick orders manually (great, but very fiddly/annoying) and
(3) `cheapest-order-choose`, which obviously is maximally price sensitive.
The problem with this heavy price-sensitivity is that Sybils, i.e. attackers who want to participate
in a maximum number of joins to block them or to gain more probabilistic information, or other advantages,
can get a lot of leverage from simply offering ultra-low fees compared to the current market. But zero
fee sensitivity is also senseless, since the whole point is to have an actual market, i.e. prices must matter.
One sensible trade-off is to have the Taker choose a maximum price they're willing to pay, but to be randomly choosing
fees within that range. And that's what the new default order-choosing mechanism (4) `random_under_max_order_choose` is
doing. You choose a maximum absolute number of satoshis per coinjoin counterparty, and a maximum relative fraction
per counterparty, and orders which violate *both* of those limits are rejected. This can be set on the command line,
as a flag, or in the `joinmarket.cfg` file. You can also override the default and go back to any of the three previously
existing order-choose algorithms.
Note that the defaults offered to you are randomized; we don't want all Takers using the same default maximum value, since
that will lead to artificial crowding of fees near those levels; as implemented, this can't happen.
`a2c74ee` add random-under-max order chooser
### Various other minor fixes
Non-developers can safely ignore these changes. The last four are modifications
to the installation scripts, in case that is relevant to your interests.
55c51a9 Remove jmtainter script, not used or maintained currently
03ee77b fix issues highlighted by flake8
9d72573 add flake8 config and enable in travis
bdbf62b fix flake8 warning
59a998f fix int assertions
ebcb640 fix amount fraction comment in tumblerguide
316f866 use libsecp256 @d333521 for secp256k1-py
be1374c install script fixed
a057b87 add setupall.py --all mode
51eb77e update libsodium url and core to v0.16.3 in docker
Credits
=======
Thanks to everyone who directly contributed to this release -
- @undeath
- @fivepiece
- @AdamISZ
- @chris-belcher
- @kristapsk
- @mighty-merganser
And thanks also to those who submitted bug reports, tested and otherwise helped out.

2
jmbase/setup.py

@ -2,7 +2,7 @@ from setuptools import setup
setup(name='joinmarketbase',
version='0.3.5',
version='0.4.0',
description='Joinmarket client library for Bitcoin coinjoins',
url='http://github.com/Joinmarket-Org/joinmarket-clientserver/jmbase',
author='',

2
jmbitcoin/setup.py

@ -2,7 +2,7 @@ from setuptools import setup
setup(name='joinmarketbitcoin',
version='0.3.5',
version='0.4.0',
description='Joinmarket client library for Bitcoin coinjoins',
url='http://github.com/Joinmarket-Org/joinmarket-clientserver/jmbitcoin',
author='',

4
jmclient/setup.py

@ -2,12 +2,12 @@ from setuptools import setup
setup(name='joinmarketclient',
version='0.3.5',
version='0.4.0',
description='Joinmarket client library for Bitcoin coinjoins',
url='http://github.com/Joinmarket-Org/joinmarket-clientserver/jmclient',
author='',
author_email='',
license='GPL',
packages=['jmclient'],
install_requires=['joinmarketbase==0.3.5', 'mnemonic', 'qt4reactor', 'argon2_cffi', 'bencoder.pyx', 'pyaes'],
install_requires=['joinmarketbase==0.4.0', 'mnemonic', 'qt4reactor', 'argon2_cffi', 'bencoder.pyx', 'pyaes'],
zip_safe=False)

4
jmdaemon/setup.py

@ -2,12 +2,12 @@ from setuptools import setup
setup(name='joinmarketdaemon',
version='0.3.5',
version='0.4.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=['txsocksx', 'pyopenssl', 'libnacl', 'joinmarketbase==0.3.5'],
install_requires=['txsocksx', 'pyopenssl', 'libnacl', 'joinmarketbase==0.4.0'],
zip_safe=False)

2
scripts/joinmarket-qt.py

@ -47,7 +47,7 @@ pyqt4reactor.install()
donation_address = "1AZgQZWYRteh6UyF87hwuvyWj73NvWKpL"
#Underlying joinmarket code version (as per setup.py etc.)
JM_CORE_VERSION = '0.3.5'
JM_CORE_VERSION = '0.4.0'
#Version of this Qt script specifically
JM_GUI_VERSION = '7'

Loading…
Cancel
Save