Chameleon
Start
OverviewHow it worksQuickstart
Concepts
ConceptsPrivacy model
Reference
The routerJavaScript engineContracts and addresses
Practice
Real examplesSelling and exitingSecurity and limitsFAQChangelog
Robinhood Chain · 4663

Concepts

A short glossary. Every term below is used elsewhere in these docs.

Keys and addresses

TermMeaning
Spending keyThe private key that controls funds on your stealth addresses. Keep it secret and backed up.
Viewing keyA second private key that only lets someone recognise your payments. It cannot spend. You can give it to a scanner.
Meta-addressThe two public keys joined into one string, st:eth:0x.... Safe to publish. Never used as an address on chain.
Ephemeral keyThe sender's one-time random key for a single buy. Its public half is published, its private half is thrown away.
Shared secretThe point both sides compute separately: ephemeral private key times viewing public key, or viewing private key times ephemeral public key.
Stealth addressThe one-time address for a single buy. Derived from the spending public key plus a hash of the shared secret.
Stealth private keyThe spending key plus the same hash. Only the receiver can compute it.

Standards

TermMeaning
ERC-5564The stealth address standard: how to derive addresses and how to announce payments. Scheme 1 is secp256k1 with view tags.
ERC-6538A registry where people can publish their meta-address under their own address. Optional.
AnnouncerThe singleton contract that emits Announcement events. Same address on every chain.
View tagThe first byte of the hashed shared secret, published with each announcement so scanners can skip most of them.

Chameleon pieces

TermMeaning
RouterThe contract that buys from a Pons curve into a stealth address, tops it up with gas and announces it.
CurveA Pons bonding curve for one token. Exposes buy, sell, token, getReserves, graduated.
Gas dustA small amount of ETH the router sends to the new address so it can pay for its own transactions.
One-time funderA wallet used once to call the router, so the wallet people watch is not the one sending the transaction.
SkinThe colour the site gives an address, taken from its first two bytes. Decoration only.

Why each buy has its own address

If two buys used the same address, a tracker could link them. Because the shared secret depends on a fresh random key every time, the derived address is different every time, and nothing on chain connects them except the viewing key, which you control.