Skip to content

Commit 54ab346

Browse files
committed
Merge #1263: Add release notes and version for 0.9.6
4c9c8d1 Add release notes and version for 0.9.6 (Adam Gibson)
2 parents 17c79f1 + 4c9c8d1 commit 54ab346

File tree

10 files changed

+213
-16
lines changed

10 files changed

+213
-16
lines changed

docs/JOINMARKET-QT-GUIDE.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
The GUI can be run directly from Python script by doing `./joinmarket-qt.sh` from within `scripts/`, or, if using Microsoft Windows, by running the executable file/binary (**[CLICK HERE](https://github.com/JoinMarket-Org/joinmarket-clientserver/releases)** to download the latest release). If you followed normal installation procedure under Linux, desktop entry of JoinMarketQt should be added to the application menu of your desktop environment.
66

7-
**LATEST VERSION of JoinMarket-Qt is GUI version 27**. You can check the version via `About` in the menu.
7+
**LATEST VERSION of JoinMarket-Qt is GUI version 28**. You can check the version via `About` in the menu.
88

99
No other files / setup should be needed.
1010

docs/onion-message-channels.md

+11-6
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,7 @@
1212

1313
## Overview
1414

15-
This is a new way for Joinmarket bots to communicate, namely by serving and connecting to Tor onion services. This does not
16-
introduce any new requirements to your Joinmarket installation, technically, because the use of Payjoin already required the need
17-
to run such onion services, and connecting to IRC used a SOCKS5 proxy (used by almost all users) over Tor to
18-
a remote onion service.
19-
20-
(Note however that taker bots will *not* be required to serve onions; they will only make outbound SOCKS connections, as they currently do on IRC).
15+
This is a new way for Joinmarket bots to communicate, namely by serving and connecting to Tor onion services.
2116

2217
The purpose of this new type of message channel is as follows:
2318

@@ -27,6 +22,16 @@ albeit it was and remains E2E encrypted data, in either case)
2722
* the above can lead to better scalability at large numbers
2823
* a substantial increase in the speed of transaction negotiation; this is mostly related to the throttling of high bursts of traffic on IRC
2924

25+
### Tor
26+
27+
As of Joinmarket 0.9.6, which introduces this feature, **Tor is now a requirement to run Joinmarket** (except in testing, which will not be explained here).
28+
29+
(Technically, we could argue that this is not a new requirement - because the use of Payjoin already required the need to run such onion services, and connecting to IRC used a SOCKS5 proxy (used by almost all users) over Tor to a remote onion service.)
30+
31+
If you don't currently have a Tor daemon running on your machine you can use the flag `--with-local-tor` appended to your invocation of `./install.sh` as per the installation instructions in the README.
32+
33+
(Note however that taker bots will *not* be required to serve onions; they will only make outbound SOCKS connections, as they currently do on IRC).
34+
3035
The configuration for a user is simple; in their `joinmarket.cfg` they will get a new `[MESSAGING]` section like this, if they start from scratch:
3136

3237
```
+192
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
Joinmarket-clientserver 0.9.6:
2+
=================
3+
4+
<https://github.com/joinmarket-org/joinmarket-clientserver/releases/tag/v0.9.6>
5+
6+
Please report bugs using the issue tracker at github:
7+
8+
<https://github.com/joinmarket-org/joinmarket-clientserver/issues>
9+
10+
11+
Upgrading
12+
=========
13+
14+
To upgrade:
15+
16+
*Reminder: always back up and recreate your joinmarket.cfg file when doing the upgrade; this is to make sure you have the new default settings.*
17+
18+
(If you are upgrading from a version pre-0.7.0 please read the "Upgrading" section in [the 0.7.0 release notes](https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/release-notes/release-notes-0.7.0.md).)
19+
20+
(If you are upgrading from a version pre-0.9.0 please read the [release notes](https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/release-notes/release-notes-0.9.0.md) to find out how about [fidelity bonds](../fidelity-bonds.md) are relevant to your use-case).
21+
22+
First run the `install.sh` script as mentioned in the README. When prompted to overwrite the directory `jmvenv`, accept.
23+
24+
Note that `./install.sh -?` will show the options for installation. See the section on Installation below for a new option for Tor.
25+
26+
Notable changes
27+
===============
28+
29+
### New p2p onion messaging channels, with directory nodes
30+
31+
**Do not forget to re-create your joinmarket.cfg to activate this!**
32+
33+
This is an implementation of the ideas first laid out in [#415](https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/415), i.e. less or non-reliance on central servers for passing messages. That reliance has disadvantages even considering that the transaction negotiation is end to end encrypted, in regards to speed, scalability, censorship resistance and metadata leakage. So while IRC servers, used redundantly, as pre-0.9.6 Joinmarket, works, it has limitations.
34+
**This does not (yet) mean we stopped using IRC** - this is an added message channel, and all message channels are used redundantly. The user can choose to use any set of message channels they prefer, but the defaults are obviously the best choice for most.
35+
From this release onwards, we have multiple (currently three, managed by @AdamISZ @bisqubutor @openoms) "directory node" onion addresses which serve a similar function to IRC servers with a difference: once takers find makers' onion addresses via this server, they communicate peer to peer. This should result in faster transaction negotiation and the possibility of much larger anon-set coinjoins getting negotiated, as well as being a little better as a privacy model.
36+
The directory nodes function principally as 'name servers' allowing takers to find makers by Joinmarket nick. They also allow 'pubmessage' sending, i.e. sending to every known nick, just as with IRC. Note that these "directory nodes" are ridiculously cheap to set up and don't need any access to Bitcoin core/nodes/wallets/coins. They transfer names and onion locations, and broadcast some messages to clients.
37+
38+
For more details, please read the [documentation](https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/onion-message-channels.md).
39+
The default configuration file `joinmarket.cfg` *will* allow negotiation via these new channels. As per that documentation, note that **Tor is now a requirement for running Joinmarket** (except for testing use cases).
40+
41+
(For those interested in the details, please note that this new 'onion messaging channel' functions as *one* message channel, along with the existing IRC server message channels, even though under the hood it consists of multiple directory nodes.
42+
43+
The original 2 commits contain the bulk of the new code:
44+
45+
* `fd550ee` Onion-based message channels with directory nodes
46+
* `830ac22` Allow taker peers to not serve onions + bugfixes.
47+
48+
Several bugfixes/updates after testing, notably:
49+
50+
* `a278b91` `706bdb0` Directories forward disconnection events
51+
52+
and various minor updates to things like ports, default directory nodes, handshake protocol:
53+
54+
* `1583e4f` `56402af` `6b093bc` `a293da5` `704ffcf` `041ea4a` `fbcb9fd` `cc6d341` `e915dae` `5cc1695`
55+
56+
Testers/developers please review the proposed documentation of the new 'onionmessage' protocol [here](https://github.com/JoinMarket-Org/JoinMarket-Docs/pull/12).
57+
58+
### Change to fidelity bond parameter: the 'exponent'
59+
60+
For the basics read [here](https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/fidelity-bonds.md), for the discussion leading to this update see [here](https://github.com/JoinMarket-Org/joinmarket-clientserver/issues/1247), and for the detailed mathematics see [here](https://gist.github.com/chris-belcher/87ebbcbb639686057a389acb9ab3e25b).
61+
62+
Significant community discussion has centered around to what extent the current settings for fidelity bonds are optimal, in particular whether the emphasis on size implicit in the formulas leads to too strong of a centralizing force. Though it's impossible to get a clean consensus, we've decided on two steps:
63+
64+
* Change the exponent which converts the bond's BTC value to its measured 'fidelity bond value' from 2 to 1.3. This number must be larger than one to create a disincentive to spread out the fidelity bond, but there is no requirement that it be any particular value. By reducing this value we make a less extreme emphasis on larger rather than smaller bonds.
65+
* Make this exponent a configurable variable. While it is difficult for many to understand the significance of this variable, still the documentation helps, and for those that want to value bonds differently, they now can, using the config variable `bond_value_exponent`.
66+
67+
We did *not* decide to change the default value of `bondless_maker_allowance` from 0.125, this representing what fraction of makers the taker does not pay attention to fidelity bonds for. This is also user-determined via the config variable, but we were discussing only whether to change the default.
68+
69+
* `044bef6` Change default fidelity bond exponent settings.
70+
71+
In addition to the above, a couple of minor fixes/changes were made to fidelity bond handling:
72+
73+
For future-compatibility with a changed signature message format:
74+
75+
* `1440817` Accept fidelity bonds with ascii cert messages
76+
77+
Fixes a bug whereby the ob-watcher script would not work with fidelity bonds due to not having an address:
78+
79+
* `9594238` Output script instead of address in /orderbook.json
80+
81+
### RPC-API updates
82+
83+
The most notable change here is:
84+
85+
* `a2d6f40` `1d5728f` `43b4eca` Add rpc endpoint for tumbler
86+
87+
This is functional but very limited in user feedback for now; so you *can* run an entire tumbler algorithm via the RPC-API, but in certain edge cases the API client may not yet receive sufficient feedback to handle error states. This is still being actively worked on.
88+
89+
Another small update, allowing auth-ed `/session` requests:
90+
91+
* `c7a2612` feat: validate auth header in session request if provided
92+
93+
* `a04fb60` add tests of /session auth-ed and not
94+
* `7e4d2b1` docs: clarify handling of optional auth token in session endpoint
95+
96+
Bugfixes related to taker/maker state update via the RPC:
97+
98+
* `1510145` Taker stops cleanly if broadcast fails via RPC-API
99+
* `65de6ac` Don't start maker via RPC-API with frozen coins
100+
* `b1542c6` fix: update taker state after fee config check
101+
102+
103+
### Wallet improvements/fixes
104+
105+
A notable overhaul of the way the Joinmarket wallet service functions was added, to reduce CPU cost and/or reduce unneeded polling of transaction events from the Core backend.
106+
107+
* `8fe5b7b` WalletService: clean up and fix callback handling
108+
* `f52bf71` WalletService: reduce polling overhead
109+
* `8d45427` BitcoinCoreInterface: improve _yield_transactions
110+
111+
The following is somewhat related to the above, but was discovered as a bug while analyzing behaviour using the RPC API: the 'confirmations' field of a utxo was not being updated in certain circumstances:
112+
113+
* `09b9747` Always track new transactions until confirmed
114+
115+
The following set of commits handle the issue that Core now defaults to descriptor wallets, which we do not yet use.
116+
117+
* `4e72040` Abort with error if descriptor wallet configured in rpc_wallet_file
118+
* `44b61a1` Always use legacy Core wallet in tests
119+
120+
This improves the `freeze` functionality on command line, so that one can freeze/unfreeze all the utxos in a mixdepth in one action:
121+
122+
* `d832d78` Create un/freeze all command in wallet-tool freeze
123+
124+
### Installation
125+
126+
These are related to a new option to the installation script: to install Tor locally inside your Joinmarket venv, use `./install.sh --with-local-tor`.
127+
128+
* `7a88781` Add support to build and autostart local Tor instance in jmvenv
129+
* `2692f08` Update local Tor config
130+
* `5132342` update install.sh to build tor on macOS
131+
* `8d7d82f` Add local Tor autostart to missing scripts
132+
133+
### Documentation
134+
135+
* `42e6459` User instructed to install from release
136+
* `07cdd3a` add twitter joinmarket onion link to readme
137+
* `97e4816` Update default makercount in USAGE.md
138+
* `fbab9aa` Update YIELDGENERATOR.md
139+
* `2bca836` doc: Document use of legacy wallet in USAGE.md
140+
* `90ec479` Document wallet creation for old Core versions
141+
142+
### Dependencies
143+
144+
* `b4c8bf0` Bump twisted from 21.7.0 to 22.2.0 in /jmbase
145+
* `1407700` Bump local Tor to version 0.4.6.10
146+
* `3eec6e8` docker: remove pip from resulting image
147+
* `5fa4a51` docker: base from buster to bullseye
148+
149+
### Minor changes
150+
151+
A bug in tumbler's `--restart` feature was fixed:
152+
153+
* `df429cd` Fixed so tumbler can restart if no utxos in depth 0
154+
155+
A bug in wallet display when `noblockchain` is configured was fixed:
156+
157+
* `9b15218` Don't crash in wallet_display() with no blockchain source
158+
159+
Better compliance with BIP32 + test:
160+
161+
* `9ab2315` Stricter BIP32 decoding and test vector 5
162+
163+
* `1db2c40` Add cmtdata/ to .gitignore
164+
* `8eefb4d` unused and missing vars in jmbitcoin tx code
165+
* `3b3bd39` Replaces test_full_coinjoin with test_e2e_coinjoin
166+
* `62d7d73` Fix linter errors
167+
* `308f739` Print which option is invalid in shell scripts
168+
* `68fe12b` reorder IRC server config
169+
* `c07fcfc` remove agora from configure
170+
* `4f1571b` Update config-irc-update.md
171+
* `a8e0a4a` Make commitmentlist be in datadir by default.
172+
173+
174+
Credits
175+
=======
176+
177+
Thanks to everyone who directly contributed to this release -
178+
- @dnlggr
179+
- @chris-belcher
180+
- @AdamISZ
181+
- @theborakompanioni
182+
- @kristapsk
183+
- @laanwj
184+
- @bisqubutor
185+
- @decentclock
186+
- @jaimefoo
187+
- @whitslack
188+
- @they-call-me-steve
189+
- @PulpCattel
190+
- @3np
191+
192+
And thanks also to those who submitted bug reports, tested, reviewed and otherwise helped out.

jmbase/jmbase/support.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import urllib.parse as urlparse
1010

1111
# JoinMarket version
12-
JM_CORE_VERSION = '0.9.6dev'
12+
JM_CORE_VERSION = '0.9.6'
1313

1414
# global Joinmarket constants
1515
JM_WALLET_NAME_PREFIX = "joinmarket-wallet-"

jmbase/setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33

44
setup(name='joinmarketbase',
5-
version='0.9.6dev',
5+
version='0.9.6',
66
description='Joinmarket client library for Bitcoin coinjoins',
77
url='https://github.com/JoinMarket-Org/joinmarket-clientserver/tree/master/jmbase',
88
author='',

jmbitcoin/setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33

44
setup(name='joinmarketbitcoin',
5-
version='0.9.6dev',
5+
version='0.9.6',
66
description='Joinmarket client library for Bitcoin coinjoins',
77
url='https://github.com/JoinMarket-Org/joinmarket-clientserver/tree/master/jmbitcoin',
88
author='',

jmclient/setup.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33

44
setup(name='joinmarketclient',
5-
version='0.9.6dev',
5+
version='0.9.6',
66
description='Joinmarket client library for Bitcoin coinjoins',
77
url='https://github.com/JoinMarket-Org/joinmarket-clientserver/tree/master/jmclient',
88
author='',
99
author_email='',
1010
license='GPL',
1111
packages=['jmclient'],
12-
install_requires=['joinmarketbase==0.9.6dev', 'mnemonic', 'argon2_cffi',
12+
install_requires=['joinmarketbase==0.9.6', 'mnemonic', 'argon2_cffi',
1313
'bencoder.pyx>=2.0.0', 'pyaes', 'klein==20.6.0',
1414
'pyjwt==2.1.0', 'autobahn==20.12.3'],
1515
python_requires='>=3.6',

jmdaemon/setup.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33

44
setup(name='joinmarketdaemon',
5-
version='0.9.6dev',
5+
version='0.9.6',
66
description='Joinmarket client library for Bitcoin coinjoins',
77
url='https://github.com/JoinMarket-Org/joinmarket-clientserver/tree/master/jmdaemon',
88
author='',
99
author_email='',
1010
license='GPL',
1111
packages=['jmdaemon'],
12-
install_requires=['txtorcon', 'cryptography==3.3.2', 'pyopenssl', 'libnacl', 'joinmarketbase==0.9.6dev'],
12+
install_requires=['txtorcon', 'cryptography==3.3.2', 'pyopenssl', 'libnacl', 'joinmarketbase==0.9.6'],
1313
python_requires='>=3.6',
1414
zip_safe=False)

jmqtui/setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from setuptools import setup
22

33
setup(name='joinmarketui',
4-
version='0.9.5',
4+
version='0.9.6',
55
description='Joinmarket client library for Bitcoin coinjoins',
66
url='https://github.com/JoinMarket-Org/joinmarket-clientserver/tree/master/jmqtui',
77
author='',

scripts/joinmarket-qt.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
donation_address_url = "https://bitcoinprivacy.me/joinmarket-donations"
5454

5555
#Version of this Qt script specifically
56-
JM_GUI_VERSION = '28dev'
56+
JM_GUI_VERSION = '28'
5757

5858
from jmbase import get_log, stop_reactor, set_custom_stop_reactor
5959
from jmbase.support import EXIT_FAILURE, utxo_to_utxostr,\

0 commit comments

Comments
 (0)