A short list of ways people accidentally deanonymize themselves. Skim it once; re-read when something feels “convenient.”
# On-chain habits
- Reusing deposit addresses — every payer and every deposit becomes one cluster, trivially linked
- Unshielding immediately — timing + amount patterns get easier to guess
- Unshielding back to the same address you deposited from — defeats the point.
- Unshielding to a used address with deanonymizing links - if you don’t unshield to a fresh address then it is important to understand that the links this receiving address has can leave clues to the identity of the unshielder
- Transferring between your own “anonymous” accounts — permanent public link. Be extremely careful, if you need to consolidate “dust” funds, don’t do this naively see here
- One long-lived address for “all private DeFi” — a biography in transaction form
- Matching Custom Shield/Unshield Amounts - If you shield 11.1 ETH from a public address and later unshield exactly 11.1 ETH to a new public address these matching amounts create an extremely high liklihood that you are the same person. Matching a distinctive combination of smaller denominations (for example 0.45 ETH) can give a similar clue.
- Assuming new Tornado denominations are equally private — the extended ETH pools are enabled by default but can have much smaller anonymity sets. Check the pool before shielding or spending;
--exclude-new-poolsrestricts Tornado operations to classic pools.
# Tooling & metadata
- Remote RPC endpoint — the provider sees which addresses and state you query, and any txs you submit to the standard mempool; prefer a local node for true privacy (Set Env)
- Checking etherscan links from your home IP - use
balancescommand rather than etherscan and when you do check etherscan on activity that you want to keep unlinked, use Tor or a VPN. - Disabling Tor on privacy HTTP — Pimlico and other endpoints see your home IP; leave Tor on unless you know why (Network traffic). Saga requests do not fall back to clearnet — if Tor fails, the op fails. Prefetch sync history with
fetch-sync-cacheif large Tor downloads are flaky. Proving circuits are bundled. - Importing an unlinked EOA key into a daily browser wallet — now you link the existing browser wallet activity to this key (Dapps in Browser)
- Leaving exported keys or seed phrase in terminal scrollback or screenshots - Just be careful whenever exporting private keys or revealing the seed - close that terminal session when you’re done and get the sensitive material off your copy clipboard.
# Operational
- Same seed on mainnet and testnet — overlapping address derivation can fingerprint you (Create Wallet)
- Weak or reused wallet password — encryption on disk only helps if the password holds
- Skipping dry-runs — always run shield / unshield / transfer without
--broadcastfirst when unsure
Privacy is mostly discipline: fresh receives, Tornado for the real balance, patience while shielded, short public chapters afterward.