I’ve been looking at CashFusion every now and then and I’m personally convinced it is by far the best anonymity solution in crypto. Well, it does have severe problems. But it could be the best solution. So here is my thinking on what we can do to improve it.
-
To make more clients use it, drop the usage of Protocol Buffers. The product is horrible for the main thing we need: stability. Just switch to something else.
-
The protocol is well described but still quite complex. It is straight forward, but there are simply a lot of steps. Where this is a real problem is that some of these steps have a time-limit. You can only open tor connections for N seconds, you have only X seconds to supply your proofs. That kind of timings.
These timings are open to improvements, which will make it wildly easier to get a mobile client to participate in a fusion round.
Improvements range from longer timeouts to having more predictable time tables. Things would be a lot easier if a mobile phone that connects to a fusion server and gets told to check back in 60, 200, and 1200 seconds. And the actual fuse starts directly after that 1200s mark. (today the phone would have to talk to the server ever 2 seconds or so and the time the fusion starts is unpredictable) -
A wallet can run fusions in the background. For instance if the phone is on charger and wifi. Naturally this depends on the wallet architecture actually being able to run face-less.
-
A wallet can use the idea explained in New CHIP: 2026-paths (the derivation type) to have a ‘main’ controlling wallet which runs the fusions and a second wallet that is running on the mobile phone.
So one person has one seed and the desktop has two wallets based on that seed (but different derivation paths). One of those wallets is duplicated by the phone.
How this works is that the desktop can run fusions and the mobile phone simply notices new transactions coming in that fused his outputs. -
Following the setup of (4), the ‘main’ controlling wallet should be able to simply top-up the mobile phone wallet with very little interaction. Always having various utxos in your phone wallet while on the go, meaning you always pay from confirmed ones, and never forgetting to put some extra “cash” in your phone wallet in the morning.
-
The main reason today a CF round fails is because there are not enough people that joined. Or people left. Especially when a mobile phone starts being able to do background fusions, this problem will largely evaporate. So this isn’t really an action point like the others are, just a point that explains that when you enable a larger community to join fusions then fusions will become smoother. It is a network effect.