Obviously, perfect output indistinguishably is best, but even when the outputs are fully distinguishable (and everywhere in between) there is value too.
Why not right now encourage a standard that will more often result in the superior case?
I'm not particularly thrilled with merely degrading taint calculations when analytic capability is only going to improve over time.
I'm not really sure I follow. From my analysis there is zero benefit to mandating common output sizes across multiple transactions. gmaxwell, am I mistaken?
Consider a hypothetical CoinJoin transaction with several inputs and two outputs, A and B.
Output A is 5.21875 BTC and Output B is 3.4375.
In order for an attacker to break the mixing he must answer the question, "which combination of inputs add up to each output", and that question could likely have only one solution. If there is only one solution, the mixing has no value other than forcing the attacker to spend a bit of CPU power on it.
If the participants in the mix instead choose to only use integer powers of 2, they can break their desired outputs down like this:
Output A can be broken down as follows:
1 x 2
21 x 2
01 x 2
-31 x 2
-41 x 2
-5Output B can be broken down as follows:
1 x 2
11 x 2
01 x 2
-21 x 2
-31 x 2
-4So now the transaction has 10 outputs: 4 BTC, 1 BTC, 1 BTC, 250 mBTC, 125 mBTC, 125 mBTC, 62.5 mBTC, 62.5 mBTC, 31.25 mBTC.
The odds of finding an unambiguous mapping of inputs to outputs should be far lower in the second case.