-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Churning using random amounts is unnecessary at best, but mostly harmful #4
Comments
Hello, thank you for your feedback. I believe you are overlooking a few nuances that could still justify the use of a random amount churn strategy within specific bounds. Before we get into it please keep in mind I designed Yes, you're obviously correct that amounts are hidden via RingCT, randomizing the amounts doesn't add any meaningful privacy benefit because the amounts can't be seen anyway. I agree to an extent, but you overlook the broader context. While RingCT does indeed hide amounts from external observers on the blockchain, there are other factors that can make transferring the same amount repeatedly detectable. I do explain in the README.md and other markdown files that the real privacy gain from randomizing amounts comes from reducing pattern recognition and statistical analysis mainly from Chainalysis (yes, they're very good at it.). Chainalysis can still make probabilistic guesses about which inputs and outputs belong to the same person based on transaction size (if it's always the same), timing, and other metadata that could be exposed when you sign the same transfer size repeatedly. Chainalysis runs a lot of Monero nodes I plan to push my writing on this in writeup.md by tomorrow or the day after. Regarding your point on TXOs vs. Amounts in Churning I hope you read this example of Your concern does NOT apply to
The key here in the example is that 10 separate transactions create distinct TXOs that belong to individual accounts. The 10 XMR per account remains intact and is not split in the process. After distribution process from Account 0 happens, the churning process begins, when those accounts created in the distribution process churn their 10 XMR each into new accounts (11-20), each of those TXOs is still intact and not split up. The amount and identity of the transaction are kept discrete across different accounts. This process creates a new TXO for each account, and there is no splitting of funds into smaller chunks like in your example (where 10 XMR becomes 4 XMR and 6 XMR). This significantly reduces the chance of linking transactions. My point is, There is no risk of TXO reuse as long as the user who uses Even though, the example markdown file is simplified, the core logic behind the random amount within the How the
|
This is a bad strategy on so many levels. Let's start of with why it's useless: RingCT. As you're probably aware, RingCT hides the amounts of inputs and outputs from external observers. Only those who send/receive can see the amounts transferred. So from an external observer's viewpoint, the amount makes absolutely zero difference in the transaction graph. There is a whole realm of discussion to be had about quantizing amounts when you transfer XMR to other people, but that is out of scope for an automatic churner.
Now why's it's actively harmful to privacy. Let's say that you start with 10 XMR, and you need to pay for something that is 7 XMR. Scenario A) you don't bother churning a random amount and use the 10 XMR TXO as an input in your 1-in transfer transaction. Scenario B) you try churning and split your TXO worth 10 XMR into two TXOs, worth 4 and 6. Then to spend 7 XMR, you create a 2-in transfer transaction where each ring contains 1 member from the churn transaction. An external observer can detect that the funds for the transfer transaction originated from the churn transaction with higher probability.
In general, you should not be thinking about amounts at all when churning in Monero post-RingCT, you should be thinking about TXOs. If you want to add anonymity to the spend of a specific TXO, you should churn that TXO, not group multiple together to spend some random arbitrary amount. In my humble opinion, you should get yourself familiar with some of the research that's already out there on this topic, instead of trying to wing it. For example: https://github.com/cypherstack/churn
The text was updated successfully, but these errors were encountered: