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.

CARobinhood Chain$VILLE is published here at launch. Trust only this strip.
Notes on chain
…

ERC-5564 announcer · Robinhood Chain

Pool assets
02

ETH · USDG

Wallets with keys
…

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.

ville.cash/sendexample · robinhood

Pay alice 0.25 ETH.

alice's public keys are on chain. This address was made for your payment alone:

One-time address0x7c1e…a93b
view tag 3f · ERC-5564 · eip155:4663

✓ announced · paid · only alice can open it

Pay someone privately →

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.

Probe · exampleHover an address

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.

  1. T+0Sign

    One signature in your wallet becomes a viewing key and a spending key, inside this tab.

  2. T+1Derive

    The payer's browser mixes your public keys with a random number into a never-used address.

  3. T+2Announce and pay

    A public note with a one-byte view tag goes out, then the money lands on the new address.

  4. 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.

  • NotesERC-5564 · scheme 1
  • KeysERC-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])

05 · Start

Share one link.
Keep every payment yours.