Hold, spend and send on Starknet. Everyone can see that you have an account. No one can see what is in it.
Live on Starknet mainnet for holding, shielding, private send and unshield, through the canonical STRK20 pool. The card, vault and bridge loops run on Sepolia, where this project's own contracts are deployed. Not a licensed bank. Not a mixer.
First shield into the canonical pool 0x04c4bea0…d49193
Card swipe settled to the merchant 0x063b3fe7…88acf4
Dinner paid, lending position opened 0x4d94fa79…3e2639
Same dinner, paid from vault shares 0x45b8c5d7…a3f0e0
Funded in from Base over CCTP V2 0x28b053d9…b11fe2
Received privately from a second account 0x6342cd9a…39360e
The public chain shows these as six transfers in and out of a pool address; whose account they are and what is left in it stay under the viewing key.
Every row links to its receipt on Voyager. Amounts come from src/lib/evidence.ts and strk20.json.
5 on mainnet, 6 on Sepolia
8 deployed for this project, 3 of StarkWare's
The vault class whose missing allowance entrypoint reverted the atomic lend
Counted from src/lib/evidence.ts, which imports every address from src/utils/constants.ts rather than restating it. npm run verify:evidence reads the record back against chain. Open the full record.
Starknet mainnet head block
Reading the Starknet mainnet head from the RPC this app uses for every mainnet call.
A privacy pool on a public blockchain is not invisible. It is selectively decryptable. Here is exactly what that means, fact by fact, not a marketing promise.
Who holds the key that unlocks the revealed column?
Your personal wallet generates and holds your viewing key on your own device the first time you shield with it. Sealed's app code never receives or stores it. The one exception is the hosted card-settlement account used to process swipes: it has its own separate, server-held viewing key so it can operate that one account. It cannot decrypt your personal wallet's notes.
Why does it have to be Ready?
Private actions need a wallet that implements the Starknet privacy wallet API, the part that generates your viewing key on-device and produces the proofs behind every private transfer. Ready is the wallet that does this today. Other Starknet wallets can still hold your public funds; they just can't do the private actions yet.
Four of the transactions on the record: one on mainnet against the live STRK20 pool, three on Sepolia through this project's own contracts. Each is confirmed on chain, so click through to Voyager and read it yourself.
A viewing key registered and STRK shielded in the live STRK20 pool, 6 STRK of it the pool fee. Real money, not test money.
A card authorization sells shielded STRK and pays the merchant in USDC. Approval and settlement are the same transaction.
A shadow spend settles through a per-merchant identity, so two visits to the same merchant don’t chain.
USDC bridged from Base lands and shields into the pool in the same flow. There is no separate deposit step.