nopara73 / ZeroLink

The Bitcoin Fungibility Framework
MIT License
348 stars 76 forks source link

Add UX recommendation #40

Open nopara73 opened 6 years ago

nopara73 commented 6 years ago

Based on the mailing:

Mail 1:

Just to elaborate on the thought I mentioned re change outputs:
Eliminating change outputs can improve privacy a lot. A transaction with 5 inputs and 1 output could both be internal consolidation (same owner), or "send all to" to an exchange (other owner). It successfully throws off some blockchain analysis tools.
Examples on UI that can eliminate change outputs.
Alice wants to send 0.8 BTC to kraken to sell. 0.8 BTC send would produce change, the closest amounts based on full utxos available in the walelt would be 0.76 or 0.83.
UI informs: Nearby options available with increased privacy. Please choose one:
Send 0.76 with improved privacy
Send 0.83 with improved privacy
Send 0.8 BTC and receive a change output of 0.03 BTC.
In reality there's many cases where it does not need to be an exact amount sent, many deposits to accounts are actually quite flexible.
Same benefits can also be achieved by occasionally cleaning out the wallet with a "Send all" tool, which on one side groups all your utxos, but on the other side "the trail ends here".

Mail 2:

Eliminating change outputs can improve privacy a lot.

Hell yes:)

A transaction with 5 inputs and 1 output could both be internal consolidation (same owner), or "send all to" to an exchange (other owner).

ZeroLink's post mix wallet doesn't allow inputs joining together, which results in bad UX experience that can balanced with some Stever Jobs like creativity (visualized transaction history, coin control feature, etc), but this is necessary in order to achieve complete anonymity. However if you want to do such things: 5 people joins inputs together and send it to the exchange there are some starts those must align well:

  1. The people should want the transaction to happen in the same time.
  2. People should want to spend exact inputs, since no changes are allowed.
  3. Exchange must be prepared, know which inputs are from which user in order to be able to credit their accunts indiviually.
  4. A CoinJoin server must be built that deals with such transactions.

    It successfully throws off some blockchain analysis tools.

All blockchain analysis tools. For a couple of years until they adopt. However your example is telling a different story, but I am happy that you shared it. I'm pretty close to do something similar in ZeroLink by simply saying "Use some kind of coin control feature", but your example takes it to another level and I'd like to incorporate it into ZeroLink.
I imagine to put it in the "Coin Selection" section (https://github.com/nopara73/ZeroLink#coin-selection) above the "To enhance useability of a post-mix wallet" sentence.

Same benefits can also be achieved by occasionally cleaning out the wallet with a "Send all" tool, which on one side groups all your utxos, but on the other side "the trail ends here".

Again, not in ZeroLink, because we don't allow input joining, so the "Send all" would not make sense there, because it is not allowed in the first place.

nopara73 commented 6 years ago

An UX recommendations section should be created.