Yet Another Way to Use Tornado Cash in 2025, a Tool Implemented in Python&c++
Key topics
I re-implemented the Tornado Cash command-line tool in Python to interact with the Tornao Cash contracts.
*Compares to the original one, I added some practical features*
1. Batch deposit & withdrawal Manage large amounts of ETH with a single command and distribute funds across different instances easily.
2. Deposit age query Check how many deposit and withdrawal events have happened since your deposit, the higher the number, the better mixed your funds are.
*Also, some engineering and performance improvements*
The original project stores event history in JSON files and relies on subgraphs for data analysis. In this Python rewrite, I switched to SQLite as the storage layer, and all analytics will be built on top of the database (with proper indexing/transactions), making queries faster, more consistent, and easier to maintain.
Aside from zk-proof generation/verification, I re-implemented the rest of the heavy algorithms in C++ via pybind11 (Keccak256, MiMC sponge, Pedersen, BabyJubJub, etc.), which significantly improves the runtime for rebuilding the Merkle tree.
*Why I built this*
1. I was scammed by a phishing site. There are many "Tornado" websites out there and it's hard to tell which ones are legit. Some tutorials link to a site and claim it's "official", but there's no reputation behind it, often it's a honeypot and the article was written by the scammer. The bigger problem is we can only see a site's frontend; there's no way to audit what actually runs on the backend. After being scammed, I treat such sites as untrustworthy. Since Tornado Cash is a set of smart contracts, the safest way is to run audited code locally and interact with the contracts directly, whether via a website or a CLI is just different implementation.
2. I prefer Python to JavaScript The original tornado-cli depends on an old Node.js runtime (v14), which took time to set up. I'm a Python/C++ fan and didn't want to keep maintaining or adding features in JS.
*Looking for contributors who share this vision*
While the CLI is enough for me, it's not ideal for most users. The next step is a web UI so people can connect a wallet (MetaMask, etc.) instead of pasting private keys into a terminal, similar to the original Tornado frontends. I don't have much spare time, so if anyone wants to help with the UI (or docs/tests), I'd really appreciate it. Please open an issue or PR on GitHub, or DM me.
A developer re-implemented Tornado Cash in Python and C++ to improve security and functionality, allowing users to interact with the contracts directly and avoid potential phishing scams.
Snapshot generated from the HN discussion
Discussion Activity
No activity data yet
We're still syncing comments from Hacker News.
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.
Discussion hasn't started yet.