Analysis WITH Wasabi Heuristics

If you assume that this is a regular wasabi transaction (following their normal rules) then inputs 0-3 map to 4 of the equal sized outputs, and input 4 maps the the remaining equal sized output and output 6.

Inputs 0-3: Cumulative Total Fee = 109210 sats.

Input 4: Total Fee = 1708 sats.

Sanity check; 109210+1708 sats = 110918 which is the total amount paid in total fees in this transaction (O1+TxFee). Thus we can say that under this assumption (that this is a regular wasabi transaction) the above explanation is completely valid.

Using the known heuristics regarding how wasabi charges fees we could also take a stab at specifying what each utxo contributed to the coordinator fee and what they contributed to the transaction fee.

It could well be that assuming the heuristics/assumptions regarding how fees are charged in wasabi are accurate in this transaction, we can know which inputs contributed to the coordinator, how much and who paid the transaction fee.

KYCP doesn’t currently have the functionality to use these heuristics because it uses Boltzmann, which doesn’t currently have this functionality.

Analyzing WITHOUT Wasabi Heuristics

Without using the Wasabi Heuristics there are other ways that you could interpret the transaction. I’m not suggesting that this is sensible but it’s nevertheless a possibility that this is a strange (unorthodox, non typical wasabi) transaction.

For example,

Inputs 0-2 merge into Output 6 and this user gets paid 16655 sats

Input 3 maps to one of the equal sized outputs and pays 57569 sats

Input 4 splits into to the remaining equal sized outputs and pays 70004 sats.

KYCP doesn’t rule this possibility out, because it doesn’t currently use typical wasabi heuristics / assumptions.

Clarifications & Actionable suggestions

Input / Output Merge Clarification: “Input merge” in KYCP means that two or more utxos in a transaction have participated in a common previous transaction. It does not mean that utxo’s have been merged. Similarly, “output merge” refers to the fact that two or more outputs participate in the same transaction after the mix transaction. However, I think “input/output merge” is poor terminology when talking about CoinJoin transactions in close proximity because the natural assumption by users using KYCP is that input utxo’s are being combined using Common Ownership Heuristic, which is not the case with a close proximity CoinJoin.

Non CoinJoin Collaborators:

If the source of the collaborative transaction is not a known CoinJoin then the label could remain “Possible Input / Output Merge” because that is what is indicated by the Common Input Ownership Heuristic.

Close Proximity Input/Output CoinJoin Collaborators:

If the source of an input/output collaborator is a Wasabi Coinjoin mix in close proximity to the mix being analyzed (say within 50 blocks) then this is not indicative of common ownership, it simply shows that some users mixed together. This occurs regularly with Wasabi which will mix subsequent rounds until you hit your anon-set thus it is likely that you will mix with of the same users in the next mix. In this context the “Input/Output Collaborators” flag could indicate only that the actual ‘Anon-Set’ achieved by mixing a second time is reduced compared to what you might expect (because you are mixing with some of the same people) as opposed to ‘linking’ the utxos together.

Furthermore, the Wasabi wallet will not let users submit multiple utxo’s of sufficient size to participate in the mix, thus limiting the mix speed to one utxo per client per round. A user using an unmodified copy of the wallet should not be able to register multiple utxo’s of sufficient size to remix.

As such, if the source of the collaborative transaction is a known close proximity CoinJoin then the label could read “Input Collaborators” & “Output Collaborators”.

Distant Proximity Input/Output CoinJoin Collaborators:

If the source of an input/output collaborator is a Wasabi Coinjoin mix that is distant from the mix being analyzed (say more than 500 blocks) then this may be indicative of common ownership in that the user is running multiple wallets allowing them to register multiple utxos when remixing (in order to push more volume through the mixer than they otherwise could).

If the source of the collaborative transaction is a distant CoinJoin transaction then the label could read “Possible Input / Output Merge”.

Ownership Vs Payment Probability

The graphical bands linking transactions on KYCP do not indicate ownership, rather they indicate likelihood of value transfer as computed by Boltzmann using certain assumptions/heuristics.

I think a probability table, rather than a diagram, could help clarify this.

This also makes it possible to present all the likelihoods (whereas KYCP only shows those with > 40% probability to make it easier to read the infographic).

Assumptions

As discussed KYCP doesn’t use heuristics / assumptions about how wasabi transactions are formed. It does use heuristics / assumptions relating to Joinmarket.

I think that listing the assumptions made would be very useful and go a long way to avoiding this confusion.

I also think that it would be useful to have an option to toggle assumptions on and off. For example in this case you could have 'assume typical wasabi transaction' default toggled on which would apply the known heuristics of wasabi tx’s to collapse the possibility space.

Summary of Actionable Suggestions for KYCP Devs

If the source of the collaborative transaction is not a known CoinJoin then the label could remain “Possible Input / Output Merge” because that is what is indicated by the Common Input Ownership Heuristic. If the source of the collaborative transaction is a known close proximity CoinJoin then the label could read “Input Collaborators” & “Output Collaborators”. If the source of the collaborative transaction is a distant CoinJoin transaction then the label could read “Possible Input / Output Merge” Indicate the extent to which the actual ‘Anon-Set’ achieved by remixing with Wasabi was reduced compared to what you might expect because you mixed with some of the same utxos. [DONE] Use a probability table, rather than a diagram, to explain the probability map in a less confusing / easily misinterpreted manner. Clearly list the assumptions being made by Boltzmann in the analysis. Have an option to toggle assumptions on and off (including Wasabi Heuristics which latch ON by default). This could include hiding links to the coordinator (which does not help the analyst) and not altering the layout when Input/Output Collaborators stem from prior/subsequent CoinJoin mixes.

Updates