Wasabi 1.0 introduced assigning a numeric privacy value to the UTXOs in your wallet. This measurement was called an “anonymity set,” which is equal to the number of peers in your coinjoin transactions that share an output of an identical value. Wasabi 2.0 introduces a new coinjoin protocol called WabiSabi which uses a different measurement of a UTXO’s privacy value called an “anonymity score,” which is calculated from the perspective of individual clients.
So what is the difference between an anonymity set and an anonymity score? An anonymity set is a number that is equal to the size of the group you’re hiding in. For example, if you participate in a coinjoin round with 50 different peers in which each provides an input and each gets 1 coinjoined output of equal amounts, the anonymity set for each of the latter would be 50. On the other hand, the anonymity score extends the definition of the previous term by considering edge cases to give a more precise and conservative definition of quantifiable privacy guarantee.
If you want to know the details of what is an anonymity set, what makes the difference between the former term and anonymity score, how to set your anonymity score target on Wasabi, and how your post-coInjoin activity can impact your anonymity, keep reading this article because we will break all of that down.
Explaining A Coinjoin Anonymity Set
Coinjoin is a Bitcoin privacy-enhancing technology that allows multiple users to combine UTXOs into a single transaction that has multiple equal outputs, thus breaking the blockchain link of the UTXOs entering the coinjoin round. Coinjoin anonymity set is an essential part of coinjoin rounds. It’s a number equal to the size of the group you’re hiding in.
If you only participate in a single coinjoin round, then your anonymity set is equal to the number of peers that are part of that transaction. However, if you’re part of multiple coinjoin rounds, your anonymity set increases every time because it accumulates peers in every round, increasing the size of the group your UTXO is hiding in.
This concept is better understood with metaphors, so here’s one that well illustrates an anonymity set. Let’s say you have ten identical marbles and ten friends and you distribute one marble to each friend. Once each friend acknowledges the marble that he has received, you collect all the marbles and put them inside a cloth bag which you close and shake. You then redistribute a marble to each player and ask them to identify who it belonged to before they were all put together. There’s a 1 out of 10 chance they get the answer right, and they could only guess it in a randomized manner. The anonymity set is ten because the size of the group its initial identity is hiding in was ten.
Here’s an example of a Coinjoin transaction based on Wasabi. Here, the anonymity set is 5 for a 0.6 BTC output because there are 5 identical outputs of 0.06 and 5 participants.
How Is It Different from an Anonymity Score?
The anonymity score extends the definition of anonymity set by considering edge cases to give a more precise definition of quantifiable UTXO privacy. In the case of Wasabi Wallet 2.0, this approach is very conservative, thus always making the score equal to or lower than set.
It’s also important to note that the anonymity set is a publicly-visible measurement by anyone who can analyze a coinjoin transaction on a block explorer. On the other hand, the anonymity score is client-specific since it takes into consideration the existing privacy of inputs and number of outputs a client registered in a given coinjoin round.
The first edge case is if you have multiple outputs of the same denomination in a coinjoin transaction, your anonymity score becomes lower than if you only had one. This is different from how the anonymity set is calculated in Wasabi Wallet 1.0 because you can only receive one output of any sized denomination from a WW1 coinjoin.
Furthermore, the anonymity score of an output that is part of a transaction in which it is one of many outputs of the same denomination is calculated differently than for an output that finds itself to be the only output of the same denomination in that transaction.
For the former case, the anonymity score of a UTXO is the addition of the weighted average of the anonymity score of all inputs in the coinjoin transaction belonging to the user and the total number of outputs of the same denomination divided by the number of outputs belonging to us.
For the latter case, the anonymity score of a specific UTXO equals the lowest anonymity score of the inputs in the coinjoin transaction belonging to the user.
An Example to Calculate a UTXO’s Anonymity Score
Let’s say we have two inputs in a coinjoin round: one of 0.2 BTC with an anonymity score of 32, and the second of 0.3 BTC with an anonymity score of 16. Then, we have three outputs, two of 0.2 and one of 0.1. There are ten additional outputs of 0.2 and no other output of 0.1 in that transaction. The anonymity score of the outputs is calculated differently because 0.2 is part of the former case, and 0.1 is part of the latter case.
The anonymity score of the 0.2 outputs is calculated this way:
The weight value of the 0.2 BTC is 0.2 + 0.3 = 0.5… 0.2 / 0.5 = 40%.
The weight value of the 0.3 BTC is 0.2 + 0.3 = 0.5… 0.3 / 0.5 = 60%.
(32 * 0.4 + 16 * 0.6) + 12/2 = 28.4 anonymity score.
On the other hand, the anonymity score of the 0.1 BTC output is calculated this way:
MIN(16,32) = 16 anonymity score
This notion is very complex, but this example should give you a good idea of how the software Wasabi Wallet 2.0 calculates it.
How Do I Set my Anonymity Score Target on Wasabi?
To customize the targeted anonymity score on your Wasabi Wallet, here’s a link to our FAQ explaining how. When you first start using Wasabi, there are three recommended strategies offered: Minimize Costs, Maximize Speed, and Maximize Privacy. The first two strategies target an anonymity score of 5, and the last one is a random number between 50 and 100. If you select Maximize Privacy, your coins will need to enter multiple consecutive coinjoin rounds in order to reach a score target this high. Each option has different time and cost considerations to reach the desired level of privacy.
How Can My Post-Coinjoin Activity Impact My Anonymity?
To finish this article, it’s important to remind you that once a UTXO has reached your anonymity score target, you can lose that acquired level of privacy by making post-coinjoin mistakes. It’s important that you never send coins that are not private yet, or even worse, that you consolidate private coins with non-private coins. Wasabi manages the coin spending for you so that private and semi-private coins are sent first, leaving the non-private coins as the last option.
It’s also advisable to not consolidate your private coins because you’re revealing on the Bitcoin blockchain that they’re all owned by the same entity. The anonymity of a transaction as a whole inherits the lowest anonymity score out of the inputs used to create it, just as a chain is only as strong as its weakest link.
A special case is when you receive multiple outputs of a particular size in a single round. Merging two outputs of the same value from the same round in a single transaction would reduce the anonymity of those coins by half to outside observers, but spending the equal value coins from a single round in different transactions retains the full amount of privacy for each output.
In conclusion, this article serves to explain what a Coinjoin anonymity set is, how it differs from an anonymity score, how you can customize your anonymity score on Wasabi, and how your post-coinjoin activity impacts your anonymity. By being better informed when using Wasabi Wallet or similar coinjoin tools; you not only understand how anonymity is graded on Bitcoin but can avoid making privacy-compromising mistakes.