Skip to content

Representation of Mixdepths

Gigi edited this page Mar 21, 2022 · 14 revisions

Brainstorm and concept session.

Links

Current Situation (v0.0.4)

  • Mixdepths are represented as "privacy levels" in the UI
  • UI shows privacy is a linear progression from "low" to "high"

The Problem

  • Mixdepths are conceptually equal (not hierarchical) and do not map to privacy guarantees directly
  • The default tumbler is circular, UTXOs from mixdepth 4 will end up in mixdepth 0 again

The Goal

  • Find a better metaphor and/or representation of mixdepths
  • Be precise in the metaphor, we must not mislead users or give a wrong impression in regards to privacy guarantees

The following representation might give a better idea, but it is quite clumsy and probably can't be used in the UI in a meaningful way:

mixdepths 001

Things to Consider

  • Mixdepth is configurable, default is 5 [0-4]
  • UTXOs inside mixdepths can have different privacy characteristics

Call Notes

  • Very difficult problem to solve
  • All chainalysis is based on heuristics
  • Bitcoin privacy is based on breaking these heuristics
  • Game of cat & mouse, game of probabilities
  • Mixdepths are confusing and hard to understand
  • Mixdepths do not correlate to "privacy levels" directly
  • You can only say something about a UTXO's privacy
  • Question: do we want to provide a general-purpose interface, or can we make certain assumptions?
  • Providing additional tools that show UTXO privacy is desirable, but out-of-scope for the Web UI project

Conclusion

  • Goal: do not show mixdepths to the user, unless absolutely necessary
  • Mixdepths are JoinMarket-internal constructs
  • Caveat: JoinMarket will not allow you to spend across mixdepths1 , thus if you absolutely have to spend across mixdepths, multiple transactions will have to be created, which will be more expensive and more than one destination address has to be provided

1: Quote: this is not completely obvious, and is important: this is where you are spending the coins from. If you have 2 BTC in mixdepth 0 and 1 BTC in mixdepth 3, and you want to send 1.4 coins you must type 0 in this box; Joinmarket only spends coins from one mixdepth at one time, to aid privacy.

Next steps

  • Everyone: Sleep on it, see what actionable chunks can be defined for the next releases
  • Gigi: Do user surveys on Telegram & Twitter
  • ✅ Edi: Iterate on the "zoom" view of the wallet view, i.e.: Wallet Balance -[expand]-> Mixdepths -[expand]-> UTXOs. Done, see Figma

Chat Log

Daniel
Daniel says:we're shipping it only on umbrel not on raspi 
16:06
tbk
tbk says:👍 
tbk says:
https://github.com/openoms/bitcoin-tutorials/blob/privateflow/joinmarket/joinmarket_private_flow.md
 
16:36
Daniel
Daniel says:
https://github.com/joinmarket-webui/joinmarket-webui/wiki/Representation-of-Mixdepths
 
Daniel says:go with the neutral circle 👆 and let the user figure it out for now 
16:43
me says:"mixdepths are for power-users" - 100% agree 
me says:What about calling mixdepths "pockets"? 🤔 
me says:I guess the traditional name would be "compartments" - you have a wallet with multiple compartments... hmm... 
17:01
Daniel
Daniel says:yeah. hierarchical levels are way too close to privacy levels. "if" we show mixdepths, there should be no hierarchy. otherwise it's just the privacy levels again imo 
17:02
d11n
d11n says:I think the way to go for the abstracted view is to get rid of the mixdepths 😉 
17:02
Daniel
Daniel says:i'd love to hear out your "inside out" utxos-first representation as well. 
17:03
Christoph
Christoph says:Really good work. 
Christoph says:👏 
17:05
tbk
tbk says:👏 
17:07
d11n
d11n says:Guidance could then be provided on an UTXO level:

- Number of CoinJoin rounds
- Number of CJ Counterparties
- Automated Labels
- Manual Labels
- Mixdepth (just as metadata info) 
17:05
Daniel
Daniel says:gigi's circle representation: 
https://github.com/joinmarket-webui/joinmarket-webui/wiki/Representation-of-Mixdepths
 
17:06
Christoph
Christoph says:👏 
Christoph says:👏 
17:21
edi
edi says:👏 
17:21