Chainanalysis track me if you can.

Let's talk Whirlpool Forward-Looking Anonymity Sets.

Whirlpool Coinjoin Transaction ID:
1fed0d526e89cd3f2ac14be0cfc1fe13e5cb8a772977551f0922f0c6907ab8f3
Let's say that chainanalysis has been tracking my on-chain bitcoin transactions.

They then notice I have sent my bitcoin into Whirlpool, the coinjoin implementation by @SamouraiWallet

Next they have to determine where my bitcoin has gone...
In a Whirlpool coinjoin, 5 parties (or wallet clients) come together to create a collaborative transaction which has:
5 x input UTXOs
5 x output UTXOs

Each input belongs to 1 client.
Each output belongs to 1 Client.

All outputs are equal.

So which output belongs to me?...
Observing on-chain you cannot determine which one of the 5 outputs is my bitcoin, as all deterministic links have been broken.

So I could be 1 of 5, right? Well I could actually be WAY more than 5!

Enter Whirlpool Forward-Looking Anonymity Sets...
Due to the architecture of Whirlpool, UTXOs which remain in pool denomination sizes (0.5, 0.05, 0.01, or 0.001 BTC) can continue to remix for free.

So after my first mix, if I, or one of my mixing peers remixes, the crowd which I am hiding in increases from 5 to 9.
Chainanalysis can no longer assume I am 1 of 5, but instead now 1 of 9.

9 is my new Forward-Looking Anonymity Set.

My equal output UTXO from my first mix does not need to remix for my Forward-Looking Anonymity Set (the crowd in which I'm hiding in) to increase.
In this graphic my UTXO from my first mix is the red dot.

I have not remixed.

2 mixing peers have continued to remix.

My new Forward-Looking Anonymity Set is now 21.

Chainanalysis would have to pursue 21 different leads in an attempt to track me since entering Whirlpool.
Even if Chain Analysis were to pursue all 21 leads, they could not say with any certainty which one is my UTXO. This is because for every Whirlpool coinjoin transaction there are no deterministic links between the inputs and outputs.
So how do you work out the Forward-Looking Anonymity Set to see how large the crowd is that YOU are hiding in?

Try using oxt.me, from the first mix transaction manually expand each output which is remixed...
...mark in orange any UTXO which is unspent (remaining in a Whirlpool pool size), and mark any UTXO which is spent (leaving Whirlpool).

Add up the orange lines to get your Forward-Looking Anonymity Set, in this example 33.
This works well for smaller numbers, but Whirlpool mixes occur frequently (average of 215 mixes per day in the 0.001 pool so far during 2022).

Manually counting the Forward-Looking Anonymity Set can quickly become impossible.

Queue Whirlpool Stat Tool...
Whirlpool Stat Tool uses a set of python scripts to calculate your Forward-Looking Anonymity Set for you.

Enter in the Transaction ID from your first mix and it'll tell you the size of the crowd you're hiding in since this Whirlpool coinjoin occurred.

code.samourai.io/whirlpool/whir…
Using Whirlpool Stat Tool over the last 60 days I have been monitoring the Forward-Looking Anonymity Set of this Whirlpool coinjoin transaction ID:

1fed0d526e89cd3f2ac14be0cfc1fe13e5cb8a772977551f0922f0c6907ab8f3

Let's see how large the crowd its participants are hiding in...
28 days after mix.
Forward-Looking Anonymity Set = 1,644

35 days after mix.
Forward-Looking Anonymity Set = 6,722
60 days after mix.

Forward-Looking Anonymity Set = 20,475

(Screenshot from Whirlpool Stat Tool)
Hiding in a crowd of 20,000 it is now impossible (dare I say it) for any chainanalysis company to determine where the original mix participant's bitcoin is. Perhaps they've already left Whirlpool and spent their bitcoin, or maybe they have stuck around to get free remixes.
What I find interesting about this particular transaction ID is that one of the outputs remains unspent (just like the red dot of the earlier graphic).

This unspent output has remained this way since the transaction was confirmed into block 728735 on 24th March 2022...
...and yet this unspent output has benefited from Whirlpool's architecture, as three of the other participants went on to remix.

This allowed this unspent output of 0.001 BTC to gain a larger Forward-Looking Anonymity Set without remixing itself...
...if none of the outputs from this transaction went on to remix, the Forward-Looking Anonymity Set would remain at 5.

It's important to remember that all deterministic links are broken after 1 mix, but you get greater privacy benefits if you, or other peers remix...
...so what's the best practice to better your Forward-Looking Anonymity Set when using Whirlpool?

- Mix as soon as possible, building up a spending balance in your Postmix wallet.
- Allow your Postmix bitcoin to remix for free.

Prepare, doing this ahead of time.
For remixing:

- run the Whirlpool GUI desktop application.
or better yet
- run a RoninDojo node.

Using either makes your Postmix bitcoin eligible for free remixing 24/7.

Whirlpool GUI samouraiwallet.com/download/whirl…

RoninDojo ronindojo.io
Whirlpool Stat Tool comes pre-installed on @RoninDojoNode

The tool at the moment is only available within the Ronin Command Line Interface, but it is easy enough to use by following this guide:

wiki.ronindojo.io/en/setup/whirl…
So to recap, your Forward-Looking Anonymity Set from a Whirlpool mix is often not 1 of 5, but much more.

The crowd in which you are hiding in increases with every remix which follows your first mix.

Let's see some more Forward-Looking Anonymity Set stats from some mixes...
Whirlpool coinjoin transaction ID:
a603ffc7eee59838254a55d6d6176c8eac8611bdf2996beec47e1018334cf6b4

2 days after mix.
Forward-Looking Anonymity Set = 96
Whirlpool coinjoin transaction ID:
097cc4c4550b70442895bd902cf685bafac823646dfa830605e81a0725aaa992

9 days after mix.
Forward-Looking Anonymity Set = 945
Whirlpool coinjoin transaction ID:
12616c077eb419ae1b5e88803950e23e4167cb5316561814dc2cded4f5c7dbcd

28 days after mix.
Forward-Looking Anonymity Set = 12,773
Value your on-chain privacy? You should use Whirlpool to break all deterministic links to your bitcoin's previous history.

If you want to dive further into Whirlpool anonymity sets, read this article:
medium.com/samourai-walle…

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Brother Rabbit

Brother Rabbit Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @BrotherRabbit_

Mar 15
Wasabi refugee migration guide. Thread 🧵👇

Download Samourai Wallet

F-Droid: sovereignty.tools
Direct APK: samouraiwallet.com/download/wallet
Set up a new bitcoin wallet.

Don't forget to write down your 12 Seed Words + Passphrase !

Double check your 12 Seed Words + Passphrase:

Read 11 tweets
Aug 21, 2021
1 Minute and 40 Seconds is all it takes to:

-Download FOSS.

-Import dev's PGP public key.

-Verify hash fingerprint has been signed by dev's PGP key.

-Perform sha256 hash on downloaded file.

-Visually compare the two hash fingerprints.

-Install FOSS.

What's your excuse?
While this demonstration to verify an .apk file was a little on the quick side, it highlights that verifying software doesn't have to be inconvenient.

Using these apps from @fdroidorg makes it easy:

@OpenKeychain
f-droid.org/packages/org.s…

HashEasily
f-droid.org/en/packages/io…
Best practice is to run a VPN when browsing and downloading files from the internet.

You can pay for @mullvadnet VPN using bitcoin. No email or personal identification information required.

Download the app from F-Droid here:
f-droid.org/en/packages/ne…

Read 6 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(