Previous to this commit, if a utxo string did not conform to
the standard txid:n in hex format, of the correct length, an
exception would be thrown (specifically for invalid values of
the output index, which must be parseable as an integer). This
could allow a taker to crash a maker by sending an invalid
commitment string. After this commit this invalid utxo is
correctly ignored (and the commitment of course is invalid).
Previous to this commit, if certain types of invalid addresses were
used as coinjoin or change address by the maker, the address_to_script
function would throw an uncaught exception. This validates the maker's
chosen destination addresses before allowing them to be included in the
transaction.
The test file added here can be run locally to see potential
errors in E2E coinjoin operation, but it is not yet ready to
be included in automated testing, since errors may occur silently
in this setup. This should be fixed, and then the test should
be added to travis, in a future PR.
Previous to this patch, if an already-spent utxo was proposed
by a counterparty, the counterparty would be removed from the
proposed transaction but the input (utxo) would not, meaning
that the transaction would contain inputs for which signatures
were never going to be provided; these transactions simply time
out. This was not, of course, intended behaviour, it was intended
that the transaction would complete with the valid utxos from the
other counterparties. That's what this patch does.
Bitcoin Core 0.17 deprecates the accounts feature and replaces it with
labels. The RPC functions using accounts still work for use with older
version of Core.
This commit adds a method 'changemixdepth' to the list
of methods that can be invoked with the wallet-tool.py script.
It is a noscan method, so doesn't require sync, and uses the
value of the -m option as the new *number* of mixdepths, and
updates the wallet's storage for future runs.
Users are advised not to reduce this number, but increasing it
should always be fine.
Running tumbler with insufficient mixdepths quits with warning.