Documentation
Sealed-size private trade
Goal: trade without printing full size to the public book. Not shipped. The vault trade adapter is a stepping stone.
What lives today
Vault trade adapter
Cash out
Unshield a vault note to your open wallet (public edge).
Swap
Public DEX swap — size and pair are visible on the explorer.
Re-shield
Proceeds go back into the vault. Hold is private again.
- 1
Cash out
Unshield a vault note to your open wallet (public edge).
- 2
Swap
Public DEX swap — size and pair are visible on the explorer.
- 3
Re-shield
Proceeds go back into the vault. Hold is private again.
Useful: you do not leave inventory sitting public forever. Not sealed trade: the swap edge still leaks size.
What “sealed” means
- Public observers cannot read your trade size as free signal
- Settlement still ends on-chain (we do not claim invisibility)
- No theatrical “private success” without a real mechanism
Design options (next engineering)
- Intent + batch settlement — users post sealed intents; a matcher settles net flows so individual sizes blur in a batch.
- Vault-native pool — AMM or RFQ that spends notes and mints notes without an intermediate public wallet hop.
- Hybrid — adapter for thin markets; sealed path when liquidity and circuits support it.
Each option needs circuits (or TEE/intent infra), liquidity design, and the same production-key gate as the rest of the private path. See Production gate.
What we will not do
- Hide a public swap behind a “private” button
- Ship sealed UI before proofs/settlement exist
- Promise dark-pool guarantees on thin testnet liquidity
Repo pointers
- Engineering design:
contracts/SEALED_TRADE.md - Type placeholders only:
app/src/lib/sealedTrade.ts(sealedTradeReady() === false) - Production keys gate: /docs/production
Try the adapter: Trade → From vault. Hold/move: Move.