Sepolia testnet by default · connect a wallet on mainnet to use the live STRK20 pool.

A money account the public ledger can't read.

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.

Sealed
Account statement
Period
2026-08-14 / 2026-10-02
Owner
0x071c62…494d
Date and referenceAmount

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.

11
settled transactions on the record

5 on mainnet, 6 on Sepolia

11
contracts behind them

8 deployed for this project, 3 of StarkWare's

1
deployment retired, still listed

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.

What the account does

  1. 01HoldDeposit stays yours to seeBring in USDC or STRK. Your balance shows on your screen, not on a public explorer./app
  2. 02SpendA card that settles privatelySwipe and it approves instantly. The merchant sees a card number, never your balance or your other activity./spend
  3. 03EarnPut idle balance to workRestaurant swipes lend into a vault automatically. Total assets are read live from the contract, not a projection./earn
  4. 04FundBridge in already shieldedBring USDC in from Base and it lands shielded. No separate deposit step, no exposed transfer./fund

What's hidden, what isn't

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.

  • HiddenWhich other notes were spent alongside yoursUnlinkable. Protected by the pool’s anonymity set.
  • Key gatedSender and receiver of a private transferDecryptable by whoever holds either side’s viewing key.
  • Key gatedPrivate transfer and spend amountsDecryptable by a viewing-key holder.
  • Key gatedYour current shielded balance and history in the poolDecryptable by a viewing-key holder.
  • PublicDeposit and withdrawal amounts (the public ERC-20 legs)Always visible, no key needed.
  • PublicThat an address touched the pool, and whenAlways visible, no key needed.
  • PublicThe pool fee, paid separately in public STRKAlways visible, no key needed.
  • PublicThe relayer’s address as transaction sender, never yoursAlways visible, no key needed.

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.

Not a demo recording. Four receipts you can open.

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.

Every contract and transaction, with the file each value comes from