Monero Ring Signatures — How XMR Hides Senders

Updated March 2026 · By arnoldnakamura · Technical deep-dive

TL;DR: Ring signatures are Monero's method of hiding who sent a transaction. Your real spending input is mixed with 15 decoys from the blockchain. The current scheme (CLSAG) is 25% smaller than its predecessor. FCMP++ (coming 2026) will replace rings with full-chain membership proofs — anonymity set goes from 16 to 100+ million.

What Is a Ring Signature?

A ring signature is a type of digital signature invented by Rivest, Shamir, and Tauman in 2001. It proves that a message was signed by someone in a defined group, without revealing which member.

In Monero's context: when you spend XMR, your wallet creates a ring containing your real input (the output you're spending) plus 15 decoy inputs (real outputs from other transactions on the blockchain). The ring signature proves you own one of these 16 inputs — but not which one.

What the sender sees:

D1
D2
D3
YOU
D4
D5
D6
D7
D8
D9
D10
D11
D12
D13
D14
D15
You know which one is yours. Ring size = 16.

What everyone else sees:

?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
One of these 16 is the real spender. Which one? Impossible to tell.

Ring Size Evolution

2014

Monero launches with variable ring size (minimum 3). Users choose their own ring size. Many use ring size 1 (no mixing) — effectively transparent.

2016

RingCT introduced (mandatory Jan 2017). Ring size minimum raised to 5.

2018

Ring size set to mandatory 11. No more user choice — everyone uses the same ring size. This is critical because variable ring sizes leak information.

2020

CLSAG replaces MLSAG. Ring signatures become 25% smaller and 20% faster to verify. Same ring size 11.

2024

Ring size increased to mandatory 16 (August hard fork). Larger anonymity set per transaction.

2026

FCMP++ expected. Ring signatures replaced by full-chain membership proofs. Anonymity set: entire blockchain (100+ million outputs).

CLSAG: The Current Ring Signature Scheme

CLSAG (Concise Linkable Spontaneous Anonymous Group signatures) is Monero's ring signature algorithm since October 2020. It's an improvement over MLSAG (Multi-Layered Linkable Spontaneous Anonymous Group).

What CLSAG Proves

  1. Ownership: The signer controls the private key for exactly one of the 16 inputs in the ring.
  2. Linkability: Via a key image (a deterministic, one-way derivation from the private key), the network detects double-spends. If the same output is spent twice, both transactions produce the same key image, and the second is rejected.
  3. Anonymity: No observer can determine which of the 16 inputs corresponds to the real signer.

Key Image — Preventing Double-Spends

The key image is what makes Monero's ring signatures "linkable" — not to the signer, but to the spending event. Each output can only be spent once because spending produces a unique key image: I = x * Hp(P) where x is your private key and Hp is a hash-to-point function.

The key image is:

Why this matters: Every node maintains a set of all used key images. When a transaction arrives, the node checks: "Have I seen this key image before?" If yes, reject (double-spend attempt). If no, accept and add the key image to the set. The network prevents double-spending without knowing who spent or what they spent.

Decoy Selection — The Gamma Distribution

The strength of ring signatures depends on the quality of decoy selection. If decoys are chosen poorly, statistical analysis can narrow down the real input.

Monero uses a gamma distribution (specifically, a truncated log-gamma) to select decoys. This distribution mimics real spending behavior:

By matching decoy age distribution to real spending patterns, an observer cannot distinguish real inputs from decoys based on age alone.

Known weakness: The gamma distribution is a model, not reality. If your actual spending pattern differs significantly from the model (e.g., you always spend very old outputs), this creates a statistical signal. FCMP++ eliminates this attack vector entirely — with the full chain as your anonymity set, no distribution model is needed.

Known Attack Vectors

AttackHow It WorksMitigation
Timing analysis Outputs spent immediately after receipt are more likely to be real (shorter time between creation and spending) Wait before spending. Gamma distribution accounts for this statistically.
Output merging If you receive 5 outputs and spend all 5 in one transaction, the 5 rings share one real input each, leaking correlation Wallet "churning" (send to yourself first). FCMP++ makes this irrelevant.
Poisoned outputs Attacker sends you dust, then watches when that output appears in a ring — it's likely real Don't spend dust. Modern wallets automatically exclude tiny outputs.
Chain reaction If ring members are eliminated by other information (e.g., known spent in other transactions), the ring shrinks Larger ring size (16 is more resilient). FCMP++ fully resolves this.
EAE attack Exchange-to-exchange: if an exchange knows both sending and receiving addresses, they can correlate through timing + known outputs Use non-KYC on-ramps. Churn between exchanges. Avoid direct exchange-to-exchange.

CLSAG vs MLSAG vs FCMP++

PropertyMLSAG (2017-2020)CLSAG (2020-present)FCMP++ (upcoming)
Signature typeMulti-Layered LinkableConcise LinkableFull-Chain Membership Proof
Ring size1116Entire chain (~100M+ outputs)
Signature size~2.0 KB (11 ring)~1.5 KB (16 ring)~2.5 KB (full chain)
Verification speedBaseline~20% fasterSlightly slower (worth it)
Decoy model neededYes (gamma)Yes (gamma)No (entire set)
Statistical attacksVulnerableLess vulnerableNot applicable

Why Ring Size 16 Was Chosen

Ring size is a tradeoff:

Ring size 16 was chosen as the optimal balance point for CLSAG. The jump from 11 to 16 increased the anonymity set by 45% while only increasing transaction size by ~12% (thanks to CLSAG's concise signatures).

The endgame: FCMP++ makes the ring size debate obsolete. The anonymity set becomes the entire blockchain — there is no larger set possible. Transaction size increases by ~1 KB versus CLSAG, but the privacy improvement is orders of magnitude better than any ring size increase could achieve.

Practical Implications for Traders

As a P2P trader, here's what ring signatures mean for you:

Trade Monero Privately

arnoldnakamura — Cash by Mail (EU-wide) and Face-to-Face (SW Germany). 683 trades, 100% feedback.

Telegram: @arnoldnakamura