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.

Component
Stored Where
Purpose

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

Concept
Role
Privacy Benefit

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