Monero Stealth Addresses Explained (2026)

How one-time addresses protect the receiver in every Monero transaction. The second layer of XMR's privacy stack.

TL;DR

Every Monero transaction creates a unique, one-time "stealth address" for the recipient. Even if you give the same Monero address to 100 people, each payment lands at a different address on the blockchain. Nobody can link those payments together or trace them back to you. This is automatic and mandatory — no user action required.

The Problem Stealth Addresses Solve

Analogy: Imagine posting your home address online and asking people to send you letters. Anyone watching your mailbox can count how many letters you receive, who sent them, and when. Now imagine if every letter was delivered to a different, randomly generated P.O. box that only you have the key to. That's what stealth addresses do.

In Bitcoin, if you post your address on a website, anyone can look it up on the blockchain and see every transaction ever sent to it — amounts, dates, and the sending addresses. This is a massive privacy leak.

Monero solves this at the protocol level. Your public Monero address is never written to the blockchain. Instead, every sender generates a one-time stealth address derived from your public keys. Only you can detect which outputs belong to you.

How Stealth Addresses Work

Sender hasYour public address
GeneratesRandom number (r)
ComputesOne-time address
Blockchain seesUnique stealth address

The Cryptographic Process

  1. You share your public address — This contains two public keys: the public view key (A) and the public spend key (B).
  2. Sender generates a random number — A random scalar r (the transaction private key).
  3. Diffie-Hellman key exchange — The sender computes a shared secret using your public view key and their random number: shared_secret = r * A
  4. Derive one-time address — The stealth address is computed: P = H(r*A) * G + B where H is a hash function and G is the generator point.
  5. Include the transaction public key — The sender puts R = r * G in the transaction. This lets you (and only you) reconstruct the shared secret.
P = H(r · A) · G + B

Where: P = stealth address, r = random scalar, A = recipient's public view key, G = generator point, B = recipient's public spend key, H = hash function

Why Only You Can Find Your Payments

To check if a transaction output belongs to you, your wallet uses your private view key (a) to compute the same shared secret:

shared_secret = a · R

Since a * R = a * (r * G) = r * (a * G) = r * A, this matches what the sender computed. Your wallet then checks if the stealth address matches: P' = H(a*R) * G + B. If it matches, the output is yours. If not, it belongs to someone else.

Key insight: Without a (your private view key), nobody can compute this. They'd need to brute-force elliptic curve discrete logarithm, which is computationally infeasible.

Monero's Key Structure

Private Spend Key

The master secret. Derived from your seed phrase. Required to authorize spending. Never shared.

Private View Key

Derived from spend key. Scans blockchain for your payments. Can be shared for audit/monitoring without spending risk.

Public Keys (A, B)

Derived from private keys. Encoded in your Monero address. Used by senders to create stealth addresses. Safe to share publicly.

Stealth Addresses vs Subaddresses

Both improve privacy, but at different layers:

Feature Stealth Address Subaddress
Created by Sender (automatic) Recipient (manual)
When Every transaction Before sharing address
Purpose Hide recipient on-chain Isolate senders pre-chain
User action None (protocol-level) Generate new subaddress per contact
Blockchain visible? Only the one-time address No (subaddress never on-chain)

Best practice: Use a new subaddress for each person/service you give your address to. Stealth addresses handle the rest automatically.

Stealth Addresses in Monero's Privacy Stack

Stealth addresses are one of four privacy technologies working together in every Monero transaction:

  1. Ring Signatures (CLSAG) — Hide the sender among 16 decoys
  2. Stealth Addresses — Hide the receiver with one-time addresses (this page)
  3. RingCT — Hide the amount using Pedersen commitments
  4. Dandelion++ — Hide the IP address of the broadcaster

Together, these four layers make every Monero transaction opaque: unknown sender, unknown receiver, unknown amount, unknown origin.

How Monero Works — All 4 layers explained →

What Changes with FCMP++?

The upcoming FCMP++ upgrade replaces ring signatures with full-chain membership proofs. Stealth addresses remain unchanged. They're orthogonal to the ring signature system — FCMP++ changes how sender privacy works, not receiver privacy.

Stealth addresses are a permanent part of the Monero protocol. They've been there since day one (inherited from CryptoNote in 2014) and will remain through all future upgrades.

Comparison with Other Cryptocurrencies

Coin Stealth Addresses Receiver Privacy
Monero Mandatory, every TX Strong
Bitcoin None built-in None (unless manual)
Zcash (shielded) In shielded pool Only if both parties use shielded
Ethereum None (EIP-5564 proposed) None
Dash None None

Ethereum has EIP-5564 (proposed stealth address standard) but it's optional, complex, and barely used. Bitcoin has BIP-352 ("Silent Payments") in development. Monero has had mandatory stealth addresses since 2014.

For P2P traders: Stealth addresses mean you can safely post your Monero address on a public profile (XMRBazaar, forum, website) without anyone being able to see how many payments you've received or trace your trading volume. Your address is just a public key — the blockchain reveals nothing about it.