Core Concepts
Shade introduces a set of cryptographic concepts that enable private payments on a public blockchain. Understanding these concepts will help you use the protocol correctly and recognize what it protects.
Stealth Key
A Stealth Key is a dedicated key pair used only for receiving private payments.
Stealth Public Key
On-chain (Registry)
Allows senders to generate one-time addresses
Stealth Private Key
Local device
Allows recipients to detect incoming transfers
Unlike a normal wallet key:
It does not hold funds
It cannot spend funds
It is used only for privacy (generation and detection)
Publishing a Stealth Public Key does not reveal anything about the recipient’s identity or spending wallet.
One-Time Address
Every payment uses a fresh receiving address derived from a shared secret between the sender and receiver.
Properties:
Never reused
Not linked to recipient’s identity or wallet history
Appears as a normal wallet address on-chain
Only the intended recipient can discover its ownership
This breaks all visible links between sender and recipient.
Shared Secret (ECDH)
Shade uses Elliptic Curve Diffie-Hellman (ECDH) to establish a secret between sender and recipient, without any direct communication.
The shared secret is used to:
Derive a unique one-time receiving address
Encrypt a hint that helps the recipient detect funds
No observer can compute this secret from public information.
Detection (Viewing Capability)
After a payment is made, the recipient’s wallet scans Shade transfers on-chain.
Using the Stealth Private Key, it attempts to decrypt the detection hint embedded in each transfer. If decryption succeeds:
The wallet knows a payment belongs to this user
It can identify the one-time address and the amount
The user is notified of a pending withdrawal
Only the recipient can detect that a transfer is theirs.
Sweep (Withdrawal)
A Sweep transfers funds from the one-time address into a wallet that the recipient controls and wishes to spend from.
This wallet should ideally be:
A clean wallet with no public history
Never previously linked to the user’s identity
Sweeping ensures:
Funds are spendable
The final wallet remains unlinkable to the sender
The stealth address is discarded after use
The sweep completes the privacy flow.
Clean Wallet
A Clean Wallet is a wallet with no public connection to the user. Using a clean wallet prevents an observer from inferring the identity of the recipient at withdrawal time.
Best practice:
Use a new wallet for each sweep
Never combine swept funds with known assets or wallets
Clean wallets preserve privacy beyond the stealth address.
Anonymity Set
The anonymity set represents all possible recipients a payment could belong to.
In theory:
Any address that has ever transacted on-chain could be the recipient.
This provides a very large anonymity set by default.
In practice, it may be narrowed by:
Assumptions about registration in the Shade Registry
Withdrawal behavior
Timing and external context
Growing the user base and practicing wallet hygiene keeps anonymity strong.
Summary Table
Stealth Key
Generates & detects
No exposure of spending wallet
One-Time Address
Receives funds
No visible link between payments
Shared Secret
Derived via ECDH
Unlinkability at the cryptographic level
Detection
Scanning for hints
Only the recipient can locate payments
Sweep
Withdraw to clean wallet
Breaks transaction graph entirely
Clean Wallet
Final storage
Protects recipient identity
Anonymity Set
Potential recipient pool
Wider set = stronger privacy
Relationship Diagram
Sender
↓ (ECDH)
One-Time Address → Funds
↓ (Sweep)
Clean Wallet (Recipient)The one-time address does not reveal the clean wallet
The clean wallet does not reveal the sender
The sender does not know the clean wallet address
Last updated