Skip to content

Representation of Mixdepths

Gigi edited this page Mar 18, 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

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