Private payments · Robinhood Chain + ERC-5564
Pay Anyone.
Hide Everything.
Ville gives you one link to share. Every payment through it lands on a fresh one-time address that only you can open. Pay from the privacy pool and a bundler carries it, so your wallet stays off the payment too.
- Notes on chain
- …
- Pool assets
- 02
- Wallets with keys
- …
ERC-5564 announcer · Robinhood Chain
ETH · USDG
ERC-6538 registry · block …
Built onERC-5564 announcer 0x5564…5564ERC-6538 registry 0x6538…6538
00 · Why
Payments went public.
Your wallet became a diary.
Hand someone your address and they can read every payment you ever received, your balance today and who pays you. Every friend, client or stranger who sends you money learns all of it, forever.
Ville breaks that link. People pay a name or a link, each payment lands on a brand-new address, and only your viewing key ties them together. The chain keeps working as normal; it just stops talking about you.
01 · Pieces
Four pieces.
One private payment.
Links point payers at fresh addresses, the inbox finds them, the pool hides who paid. Use one or all of them.
Pay alice 0.25 ETH.
alice's public keys are on chain. This address was made for your payment alone:
✓ announced · paid · only alice can open it
02 · Map
Every payment,
its own address.
Each square is one example address. Hover to read what it held. On chain they look unrelated; only their owner can group them.
Each square stands for one fresh address. On chain they look like strangers; only their owner can group them.
- ETH paymentsnative
- USDG paymentsstable
- Other tokensany ERC-20
- Paid from the poolvia bundler
- Moved onswept out
03 · Sequence
One private payment,
end to end.
- T+0Sign
One signature in your wallet becomes a viewing key and a spending key, inside this tab.
- T+1Derive
The payer's browser mixes your public keys with a random number into a never-used address.
- T+2Announce and pay
A public note with a one-byte view tag goes out, then the money lands on the new address.
- T+3Find
Your browser reads every note and keeps the ones your viewing key opens. No server is asked.
// what your browsers do, with example values → resolve alice st:eth:0x02f1…7b03 05d4…6ab1 → random r = 32 fresh bytes, used once → secret S = r · viewingPub → address 0x7c1e…a93b view tag 3f → announce ERC-5564 scheme 1 ✓ included → pay 0.25 ETH → 0x7c1e…a93b ✓ included ← scan alice's tab reads every note tag 3f match → open with the viewing key key spending key + hash(S) → this address only // nobody else can link 0x7c1e…a93b to alice
04 · Standards
Open standards.
Nothing new to trust.
Ville speaks the same stealth address standards other wallets use, on contracts anyone can read on Robinhood Chain. Your browser does the maths; the site never sees a key.
- Notes
ERC-5564 · scheme 1 - Keys
ERC-6538 registry - Curvesecp256k1 with one-byte view tags
- ProofsNoir circuit, proven in your browser
- CustodyNone. Keys never leave the tab
// a stealth address, the way your browser makes one const r = secp256k1.utils.randomPrivateKey(); const S = secp256k1.getSharedSecret(r, meta.viewingPub); const h = keccak_256(S); // 33-byte point const viewTag = h[0]; const P = Point.fromHex(meta.spendingPub) .add(Point.BASE.multiply(toBigInt(h))); const address = toAddress(P); // fresh, used once // announce(1, address, R, [viewTag, ...metadata])