Monday 3 September 2018

Privacy features coming to Bitcoin 0.17.0

Looking through the current version of the 0.17.0 release notes(Archive) got me pretty excited as there are some real gems in this release:

Coin selection

Partial spend avoidance

When an address is paid multiple times the coins from those separate payments can be spent separately which hurts privacy due to linking otherwise separate addresses. A new -avoidpartialspends flag has been added (default=false). If enabled, the wallet will always spend existing UTXO to the same address together even if it results in higher fees. If someone were to send coins to an address after it was used, those coins will still be included in future coin selections.

BIP174 has been implemented, which will help wallet developers implement CoinJoin:

BIP 174 Partially Signed Bitcoin Transactions support

BIP 174 PSBT is an interchange format for Bitcoin transactions that are not fully signed yet, together with relevant metadata to help entities work towards signing it. It is intended to simplify workflows where multiple parties need to cooperate to produce a transaction. Examples include hardware wallets, multisig setups, and CoinJoin transactions.

Overall workflow

Overall, the construction of a fully signed Bitcoin transaction goes through the following steps:

  • A Creator proposes a particular transaction to be created. He constructs a PSBT that contains certain inputs and outputs, but no additional metadata.
  • For each input, an Updater adds information about the UTXOs being spent by the transaction to the PSBT.
  • A potentially other Updater adds information about the scripts and public keys involved in each of the inputs (and possibly outputs) of the PSBT.
  • Signers inspect the transaction and its metadata to decide whether they agree with the transaction. They can use amount information from the UTXOs to assess the values and fees involved. If they agree, they produce a partial signature for the inputs for which they have relevant key(s).
  • A Finalizer is run for each input to convert the partial signatures and possibly script information into a final scriptSig and/or scriptWitness.
  • An Extractor produces a valid Bitcoin transaction (in network format) from a PSBT for which all inputs are finalized.

Generally, each of the above (excluding Creator and Extractor) will simply add more and more data to a particular PSBT. In a naive workflow, they all have to operate sequentially, passing the PSBT from one to the next, until the Extractor can convert it to a real transaction. In order to permit parallel operation, Combiners can be employed which merge metadata from different PSBTs for the same unsigned transaction.

The names above in bold are the names of the roles defined in BIP174. They're useful in understanding the underlying steps, but in practice, software and hardware implementations will typically implement multiple roles simultaneously.

...

Low-level RPC changes

sendmany now shuffles outputs to improve privacy, so any previously expected behavior with regards to output ordering can no longer be relied upon.

Also sure to be of note to anyone who actually uses bitcoind for a business, though not specifically privacy related, bitcoind now features:

Dynamic loading and creation of wallets

Thanks everyone who contributed to these privacy improvements and everybody working to make bitcoin great!



Submitted September 04, 2018 at 03:01AM by TipToeThruCrypto http://bit.ly/2PZEZVj

No comments :

Post a Comment