Stealth addresses are a privacy-enhancing technology for blockchain payments. They allow a recipient to publish a single address, while each payment is sent to a unique, unlinkable address on-chain.
Stealth addresses prevent observers from linking multiple payments to the same recipient, even if the stealth address is reused.
Key pairs: The recipient generates a stealth address, which is derived from two key pairs:
A scan key (public/private)
A spend key (public/private)
Stealth address: The recipient shares the stealth address (usually a combination of the scan and spend public keys).
Sender derives one-time address:
The sender generates an ephemeral key pair.
Using the recipient’s scan public key and the sender’s ephemeral private key, the sender computes a shared secret.
The sender uses this secret and the recipient’s spend public key to derive a unique one-time public key (address).
Payment: The sender sends funds to the one-time address. The ephemeral public key is included in the transaction.
Detection: The recipient’s wallet scans the blockchain, using their scan private key and the ephemeral public key from each transaction to compute the shared secret and check if the one-time address belongs to them.
Spending: If a match is found, the recipient can use their spend private key and the shared secret to spend the funds.