Prior to this commit, the tumbler algorithm assumed that destination
mixdepths of INTERNAL transactions were incremented by 1, but the
underlying taker code uses (mod maxmixdepth) logic always. This commit
takes the decision to make the usage of the wallet "purely" cyclic, that
is, not only the Taker object but also the tumbler algorithm now always
treat the wallet as a cycle. This is not problematic in a tumbler
algorith (or any other schedule generation algorithm), as long as we use
the strict rule of "always exit each mixdepth with a sweep", which the
tumbler always did and this commit does not change.
Also, and importantly, several much more detailed tests of the tumbler
schedule generation have been added.
da88b1f71c Bump local Tor to latest version (0.4.7.8) (Kristaps Kaupe)
Pull request description:
1) It is recommended upgrade, contains several bugfixes. See [ChangeLog](https://gitweb.torproject.org/tor.git/plain/ChangeLog?h=tor-0.4.7.8).
2) With 0.4.6.10 and shellcheck 0.8.0 installed on local machine, got this build error (which is fixed in 0.4.7.8):
```
./scripts/maint/checkShellScripts.sh
/usr/bin/shellcheck
/usr/bin/realpath
Unusual pattern permitted.h in ./scripts/maint/practracker/testdata
In /home/user/git/joinmarket-clientserver/deps/tor-0.4.6.10/src/test/test_rust.sh line 6:
export LSAN_OPTIONS=suppressions=${abs_top_srcdir:-../../..}/src/test/rust_supp.txt
^-------------------------^ SC2086 (info): Double quote to prevent globbing and word splitting.
Did you mean:
export LSAN_OPTIONS=suppressions="${abs_top_srcdir:-../../..}"/src/test/rust_supp.txt
gmake[2]: Entering directory '/home/user/git/joinmarket-clientserver/deps/tor-0.4.6.10'
SKIP: src/test/test_keygen.sh
SKIP: src/test/fuzz_static_testcases.sh
SKIP: src/test/test_key_expiration.sh
SKIP: src/test/test_zero_length_keys.sh
For more information:
https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...
gmake[1]: *** [Makefile:24755: shellcheck] Error 1
gmake[1]: *** Waiting for unfinished jobs....
...
gmake: *** [Makefile:22315: check-am] Error 2
Building local Tor was requested, but not built. Exiting.
```
Top commit has no ACKs.
Tree-SHA512: a5206e27c3addc1614bbc261ac1f2ad7630ab713f3f61b63635f14a2d8efb60df89f5f1ca7238920bac0bf7ac557d72528008018d33f993a95930f96bfe148aa
d46a2c6057 Use valid tor_root also for tor_install() (Kristaps Kaupe)
Pull request description:
Affects combination of `--with-local-tor` and `--docker-install` in `install.sh`. Fixes#1318.
Top commit has no ACKs.
Tree-SHA512: 521d03f9c4f40ea7055b8f3d866b06bd5bd9b1428e56c4e642639681a68418e1c86aaac99804ad7d15f9d435926ba2e850f0479e4d7464c5ed2e26835165c177
Fixes#1314.
Prior to this commit, an attempt to start a maker bot which only
contained coins that were expired timelocked utxos (i.e. spendable),
in the RPC would result in the maker service starting but failing to
create offers. Instead, we want the maker service to not start as there
are no coins actually available for it.
83c6bc053a Allow bitcoin: prefix for addresses with sendpayment.py (Kristaps Kaupe)
Pull request description:
Before this change there were two ways of using `sendpayment.py` - you could either specify amount as a first argument and destination address as a second argument or just provide BIP21 URI. This allows to also specify amount as a first argument and BIP21 URI as a second argument, unless it contains amount. Useful, because a lots of wallets (in my case it was Blue Wallet) will give you BIP21 URI instead of pure Bitcoin address when using "Receive" even if you don't specify amount. And when you double click that URI, it will select all of it, not just address. So, basically, this allows to just paste adress with `bitcoin:` prefix too. Was already possible with Qt GUI after BIP21 / BIP78 payjoin functionality was added.
Top commit has no ACKs.
Tree-SHA512: c463a90eb99855fe4bb8f4646318bf1feb0c5b90027328d8e61b52fdb5ec9b3cf106be5b0bec520ca8c46d733b7dd0ad9a2565d7a0a37c6609e4e9f30d7be3ef
Fixes#1306.
Prior to this commit, it was possible (unlikely) for a peer to exist in
the active_directories nick in OnionMessageChannel, but to have False
entries (i.e. disconnected) for every directory, meaning that the random
choice from those directories raised an Exception which was not caught,
causing a crash.
This is now fixed by checking whether the list of directories to be
chosen from randomly, is empty, and if so raising the correct Exception
type, namely OnionDirectoryPeerNotFound.
Fixes#1277.
Adds a separate document tor.md detailing installation and configuration
requirements for both Makers and Takers, in particular details how to
configure for the serving of an ephemeral onion service.
Fixes#1215.
Prior to this commit it was possible to send a non-coinjoin transaction
while the maker service was running, over the RPC-API call direct-send.
However this was not intentional, as it is not usually safe to perform
UTXO database write actions when the effective 'lock' on write actions
is already held by a long running service/action such as yield generator
or tumbler. This commit prevents that call being successful if the
current state of the JMWalletDaemon is not CJ_NOT_RUNNING.
This commit also disables freeze actions in the same situation, and
changes the HTTP error code for these cases to 400.
Add a new helper module to calculate fidelity bonds values and stats, and a script to use it.
The goal is to give as much information as possible to the user before
committing to a fidelity bond.
baa1d48 Add link to JoininBox to README (chris-belcher)
Tree-SHA512: ff1886e9dd03c58e7668753fbc305f9ac0f645502d57e6056644349a919cb7d5913be142ef7822bba24e84088aecbd1a075c85a57d143044e5eb96ce136b39c7
when checking for timed-out counterparties (or refreshing the
orderbook), stale entries are preserved because those peers
disconnected prematurely. This fix prevents that issue by
first removing all entries before requesting for the orderbook.
Fixes#967. In this test, if the randomized fee calculated from the
tx_fees field in the config happens to be at the bottom of the range,
it's possible that the calculated feerate is very close to 1.1 sats/vB,
but this can still vary slightly due to signature sizes, resulting in a
very rare case where this test could erroneously fail.
This is fixed by bumping the lowest minfeerate by 2%.
Fixes#1294.
Before this commit, calls to query_utxo_set with default arguments
would ignore the mempool and thus return utxos which were spent in
unconfirmed transactions. Thus, takers would continue negotiation of
coinjoins with makers who sent them already-spent utxos, leading to
failure at broadcast time. This was not intended behaviour; we want
takers to reject utxos that are double spent in the mempool.
This commit changes that default argument to True so that utxo set
changes in the mempool are accounted for. It also switches the name of
the includeunconf argument, which was misleading, to include_mempool,
with appropriately updated docstring.
Finally, in this commit we also ensure that callers of this function
check, where necessary, the returned confirmations field to disallow
unconfirmed utxos where that is necessary.
4d4cae5f0c docs: Creating Core wallet is required for v0.21+ (Kristaps Kaupe)
Pull request description:
It isn't anymore "recommended" for recent Bitcoin Core versions, as since v0.21 default wallet is not created automatically.
Top commit has no ACKs.
Tree-SHA512: 617c4af59449926be8873a0af54f4d4dca732862391915578c249f4022369b9dc6c5f3c0201bde1b6e70a8fe301946054d47f78456e092d17a32398ac7cf0013