Overview
Stealth addresses protect recipient privacy by generating unique one-time addresses for each transaction. The sender can generate these addresses without interacting with the recipient, and only the recipient can:- Detect payments to their stealth addresses (using viewing key)
- Spend funds from stealth addresses (using spending key)
- Non-interactive: No communication between sender and recipient required
- Forward secrecy: Past transactions remain private if viewing key compromised
- Unlinkability: Stealth addresses appear unrelated to each other and recipient
Quick Start
- Recipient: Generate Meta-Address
- Sender: Generate Stealth Address
- Recipient: Check & Spend
How It Works
1. Setup (Recipient)
Recipient generates two key pairs:- Spending keys: For spending funds (keep spending private key secret)
- Viewing keys: For scanning blockchain (can be delegated to scanner)
2. Payment (Sender)
Sender uses recipient’s meta-address to:- Generate ephemeral key pair
- Perform ECDH with recipient’s spending public key
- Derive stealth address using keccak256
- Generate 1-byte view tag for efficient scanning
- Publish ephemeral public key and view tag (announcement)
- Send payment to stealth address
3. Detection (Recipient)
Recipient scans announcements:- Check view tag first (cheap 1-byte comparison)
- If view tag matches, perform full check (ECDH + address derivation)
- If match confirmed, compute stealth private key for spending
API Documentation
generateMetaAddress
Create 66-byte meta-address from key pairs
parseMetaAddress
Extract spending and viewing public keys
generateStealthAddress
Generate stealth address and announcement
checkStealthAddress
Check if stealth address is for recipient
computeStealthPrivateKey
Derive private key for spending
computeViewTag
Generate 1-byte view tag for scanning
View Tags Optimization
View tags reduce scanning cost by ~99%:Privacy Considerations
Forward Secrecy:- Viewing key compromise: Past stealth addresses remain private
- Spending key compromise: Catastrophic (all funds at risk)
- Best practice: Use hardware wallet for spending key
- Transaction amounts visible on-chain
- Timing correlation possible
- Consider mixing with other privacy techniques
- Spending key: Never expose (offline/hardware wallet)
- Viewing key: Can delegate to scanner service
- Ephemeral keys: Generate fresh for each payment
Specification References
- ERC-5564 - Stealth Address specification
- ERC-6538 - Stealth Meta-Address Registry
- Stealth Addresses Research

