Skip to main content

What are Stealth Addresses?

A stealth address lets you receive funds or contract calls without linking transactions to your identity. Every sender generates a unique one-time address just for you — nobody watching the chain can tell which transactions belong to the same wallet. NEXUS implements the ERC-5564 Dual-Key Stealth Address Protocol using secp256k1 ECDH.
Stealth addresses are live in V1. They are separate from Zcash shielded pools (z-addr), which are planned for V2.

How it Works (Plain English)

  1. You publish a stealth meta-address — two public keys (scan key + spend key)
  2. Sender looks up your meta-address, generates a random one-time key, and computes a unique address just for this transaction
  3. Transaction goes to that one-time address — no link to your real identity on-chain
  4. You scan new transactions using your private scan key to find yours
  5. You spend using a derived private key only you can compute

View Tags: Fast Scanning

Every transaction carries a 1-byte view tag (the first byte of the HKDF output). Before doing any expensive elliptic curve math, the scanner checks the view tag — this filters out 99.6% of non-matching transactions instantly.

Privacy Properties

Stealth Contract Calls

Stealth addresses work for smart contract interactions too, not just transfers. The NEXUS miner resolves the stealth address to your real address before execution, so contracts see your real msg.sender — approvals, ownership checks, and balances all work correctly. The public block record only shows the unlinkable one-time address.

Using Stealth Addresses (TypeScript SDK)

Key Derivation

Stealth scan and spend keys are derived from your master key using HKDF-SHA256 with domain separation:
This means a single master key controls your entire identity, while scan and spend keys are separate — you can share your scan key with a watchtower service without giving it spending ability.

Scanning Privacy

Scanning is fully client-side — your scan private key never leaves your device. You fetch the global stealth transaction snapshot from a NEXUS node, then compute locally which transactions are yours. The node never learns which transactions belong to you.

Cryptographic Details