How it works

Funding and exit

How value gets in without a separate exposed deposit step, and exactly what leaving publishes.

The ordinary way to fund a privacy pool from another chain is two moves: bridge to a public Starknet address, then deposit. The public address sits in the middle holding your money, and both legs are attributable to you.

Sealed's inbound lane uses Circle's CCTP V2 from Base Sepolia and claims and shields in the same flow, so the arriving USDC does not idle at a public address waiting for a second transaction you might forget to send.

What the inbound lane does not hide

CCTP burns on Base and mints on Starknet. Both of those are public events on public chains. Anyone watching can see that an amount crossed and roughly when.

Going out

Unshielding sends to a public address. The destination and the amount are visible, because that is the definition of the public leg. The pool fee is charged in public STRK on top, so the app warns before an unshield when your public STRK cannot cover it - a warning added after that exact failure happened live.

Unshielding MAX spends the whole note rather than a chosen slice, which follows from how notes work rather than from any policy decision here.

A separate public CCTP hop out to Base or Solana exists from native Starknet USDC. It is public by construction and labelled that way in the app.

Each route, and what it publishes

RoutePublicPrivate
CCTP in from BaseThe burn on Base and the mint on StarknetWhat you subsequently hold, once it is shielded
Direct shieldYour address, token and amount on the deposit legEverything after it
Unshield outDestination address, amount, and the STRK feeWhich notes funded it
CCTP hop outEntirely public, by design and by labelnot applicable