Churning Monero with Cake Wallet — when it helps and when it doesn't
Monero is private by design — every transaction hides the sender, the receiver and the amount. “Churning” is an optional technique on top of that: it helps in some situations and is simply unnecessary in others. Here’s an honest look at what it does, where its limits are, and how to do it with Cake Wallet (open source).
In short: churning is not a magic bullet and not a requirement. For everyday use, Monero’s built-in protection is enough. Churning becomes interesting mainly when your coins have a known origin (e.g. a withdrawal from a KYC exchange) or when you want to break a direct link between receiving and spending.
What is churning?
Churning means sending your Monero to yourself — to your own (sub)address in your wallet. The coins never leave your wallet. Each new “output” created this way can later appear as a decoy in other people’s transactions, making it harder to trace your own later spend.
An important framing: churning is a conjectured strategy to enlarge the anonymity set beyond the standard — it is not a formally proven mechanism. It is also not a mixer: it simply reuses Monero’s built-in ring signatures.
Why bother? The mechanics in four points
- Ring signatures / decoys. Every transaction input is mixed with decoy outputs from the blockchain — currently 16 ring members (15 decoys + 1 real), since the network upgrade in August 2022. An observer cannot compute which one is real.
- Decoy selection is the attack surface. Protection depends on your real output not standing out statistically. If it is “too fresh”, for example, it becomes conspicuous.
- The EAE attack (Eve–Alice–Eve). If the same counterparty first sends you money and later receives from you, it knows the inputs and outputs around your activity and can draw conclusions from the local transaction graph. A churn between receiving and spending breaks that chain.
- Known origin (KYC exchange). An exchange knows exactly which outputs it paid you. If you later spend them directly, the real output is known to them. Churning after the withdrawal cuts that direct link.
The honest assessment — both sides
Against: the benefit of churning is disputed and not conclusively proven in the research. Poorly timed, regular self-sends can, in the worst case, even flag you — there are statistical methods that try to detect churns. More churns means more fees and more footprint, not linearly more protection.
For: against the EAE attack and after contact with a KYC exchange, churning is one of the few practical countermeasures to break the direct graph linkage.
Looking ahead — FCMP++. Monero is working on Full-Chain Membership Proofs (FCMP++). That removes the decoy/ring-size concept: every input proves membership in the entire set of all outputs ever created (millions instead of 16). Once FCMP++ is live, churning becomes largely moot. As of this article, FCMP++ is in testing and audit phases — check the current status on getmonero.org before you bother.
Churning with Cake Wallet — step by step
Cake Wallet has no dedicated “churn” button. You churn by simply sending to your own subaddress. Here’s how:
- Fully synchronise the wallet. Wait until Cake shows “Synchronized” — otherwise the wallet doesn’t know all outputs.
- Create a fresh subaddress. Go to Receive and tap the refresh icon (top right) to generate a new subaddress (it starts with
8; your primary address starts with4). Optionally label it by tapping the address label. - Send to yourself. Tap Send, paste your freshly created
8…address, choose the amount (or “all”), leave the priority on Automatic, and confirm. - Wait. Received outputs are locked for a while in Monero by default (around 10 blocks / ~20 minutes). Don’t re-spend right at the edge of availability.
- Repeat if needed — but sparingly and not on a fixed schedule (see below).
Auto subaddresses: Cake generates a new subaddress automatically after each use by default. You can turn this off under Privacy Settings → “Auto generate subaddresses” if you want to manage them manually.
(Note: menu and button names can differ slightly between app versions — go by the function, not the exact wording.)
Best practices & pitfalls
- Don’t forward immediately. Wait at least for the lock period; spending immediately creates conspicuous patterns.
- No fixed rhythm. Always “every X minutes” is itself a pattern. Randomise the wait — aligned with Monero’s normal decoy distribution, so your spend blends in with its own decoys as much as possible. There is no “correct” number of hours or hops — distrust any source that gives you one.
- Don’t over-churn. Past a point you increase your conspicuousness rather than your anonymity.
- Fresh subaddresses for receiving, so senders don’t see your primary address.
- Most useful after KYC contact, or when you want to break a known receive-to-spend link.
Bottom line
Churning is a tool for special cases, not an everyday must. For most people, Monero’s built-in protection plus clean hygiene (fresh subaddresses, no address reuse) is enough. If your coins come from a KYC source or you’re worried about EAE linkage, a deliberate, randomised churn is a plausible extra measure — as long as FCMP++ isn’t live yet.
This article is educational content and not financial or legal advice.