Common Privacy Footguns

From Kohaku CLI Wiki — Easy mistakes that undo wallet privacy

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-pools restricts 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 balances command 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-cache if 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 --broadcast first when unsure

Privacy is mostly discipline: fresh receives, Tornado for the real balance, patience while shielded, short public chapters afterward.