# Vitalik Buterin - An Incomplete Guide to Stealth Addresses (Highlights)

## Metadata
**Review**:: [readwise.io](https://readwise.io/bookreview/23513071)
**Source**:: #from/readwise
**Zettel**:: #zettel/fleeting
**Status**:: #x
**Authors**:: [[Vitalik Buterin]]
**Full Title**:: An Incomplete Guide to Stealth Addresses
**Category**:: #articles #readwise/articles
**Category Icon**:: 📰
**Document Tags**:: #blockchain #idea
**URL**:: [vitalik.ca](https://vitalik.ca/general/2023/01/20/stealth.html)
**Host**:: [[vitalik.ca]]
**Highlighted**:: [[2023-01-21]]
**Created**:: [[2023-02-14]]
## Highlights
- Tornado Cash can hide transfers of mainstream fungible assets such as ETH or major ERC20s (though it's most easily useful for privately *sending to yourself*), but it's very weak at adding privacy to transfers of obscure ERC20s, and it cannot add privacy to NFT transfers at all. ([View Highlight](https://read.readwise.io/read/01gq9qhd2fa057fsczzvr29n27)) ^460609478
- A stealth address is an address that can be generated by either Alice or Bob, but which can only be controlled by Bob. Bob generates and keeps secret a **spending key**, and uses this key to generate a **stealth meta-address**. He passes this meta-address to Alice (or registers it on ENS). Alice can perform a computation on this meta-address to generate a **stealth address** belonging to Bob. ([View Highlight](https://read.readwise.io/read/01gq9qpz66h21dxwrtz93v0t4y)) ^460609809
- Another way to look at it is: stealth addresses give the same privacy properties as Bob generating a fresh address for each transaction, but without requiring any interaction from Bob. ([View Highlight](https://read.readwise.io/read/01gq9qr28zsawq5vrtwfvxqwrt)) ^460609853
- This all relies on two uses of cryptographic trickery. First, we need a pair of algorithms to generate a **shared secret**: one algorithm which uses Alice's secret thing (her ephemeral key) and Bob's public thing (his meta-address), and another algorithm which uses Bob's secret thing (his root spending key) and Alice's public thing (her ephemeral public key). This can be done in many ways; [Diffie-Hellman key exchange](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange) was one of the results that founded the field of modern cryptography, and it accomplishes exactly this. ([View Highlight](https://read.readwise.io/read/01gq9qvxb14m6gn38r2bx1hyxj)) ^460611049
- But a shared secret by itself is not enough: if we just generate a private key from the shared secret, then Alice and Bob could both spend from this address. ([View Highlight](https://read.readwise.io/read/01gq9qxttedg7j621016fy96x9)) ^460611657
- Stealth addresses using elliptic curve cryptography were originally introduced in the context of Bitcoin [by Peter Todd in 2014](https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2014-January/004020.html). ([View Highlight](https://read.readwise.io/read/01gq9qywsw21kpvqgwmgfpyht5)) ^460611698
#further-reading
<https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2014-January/004020.html>
- Suppose that someone sends you an NFT. Mindful of your privacy, they send it to a stealth address that you control. After scanning the ephem pubkeys on-chain, your wallet automatically discovers this address. You can now freely prove ownership of the NFT or transfer it to someone else. But there's a problem! That account has 0 ETH in it, and so there is no way to pay transaction fees. ([View Highlight](https://read.readwise.io/read/01gq9r6y9mqkr0y8rvz9sbqksf)) ^460612081