The Gloam SDK is live. Add private balances, payments, and disclosure to any Robinhood Chain app.

Explore the SDK →

Documentation

Sealed-size private trade

Goal: trade without printing full size to the public book. Live on Robinhood Chain testnet with fixed rates and dev proving keys. Real rates and production keys still ship next.

What lives today

Private trade (sealed path)

  1. 1

    Pick direction + vault note

    Buy (ETH → stock) or sell (stock → ETH). Spend a note you already hold in the vault.

  2. 2

    Prove the trade

    Browser builds a sealed-swap proof. Size stays private; the chain only sees a vault proof.

  3. 3

    Settle in vault

    You receive the out asset as a new vault note, plus change. No public DEX hop.

Testnet rates use coarsened display marks (Yahoo / CoinGecko for the UI), not an on-chain oracle. If marks fail, 1:1 fallback. Dev ceremony keys only.

Size privacy (default on): public amountOutMin is a 1-wei floor, not your real output. Your first private trade leaked size because min-out equaled the exact amount, that is fixed. Rates and asset pair remain public. Cash out still publishes amount. See privacy model · production gate.

Vault trade adapter (fallback)

From vault (public swap step)

  1. 1

    Cash out

    Unshield a vault note to your open wallet (public edge).

  2. 2

    Swap

    Public DEX swap. Size and pair are visible on the explorer.

  3. 3

    Re-shield

    Proceeds go back into the vault. Hold is private again.

Useful on thin books. Not sealed trade: the swap edge still leaks size. The product shows both paths honestly.

What “sealed” means

  • Public observers do not get your exact size as a free signal (with max size privacy on)
  • Settlement still ends on-chain (we do not claim invisibility)
  • No theatrical “private success” without a real proof
  • Explorer shows sealedSwap + pair, not a Uniswap fill

What ships next

  1. On-chain rates, replace display-mark rates with oracle-bound or pool-bound pricing (Pyth / AMM). Full write-up: Prices & oracles.
  2. Vault inventory, seed faucet stocks so cash-out after a sealed trade does not fail for empty deposited.
  3. Production ceremony keys, multi-party proving keys before any mainnet value.
  4. Ethereum expansion, same private rails where the largest onchain audience already sits.
  5. Deeper liquidity design, intent batching or vault-native pool when books are thin.

Each step keeps the same rule: no fake private fills. See Production gate.

What we will not do

  • Hide a public swap behind a “private” button
  • Claim production readiness on dev proving keys
  • Promise dark-pool guarantees on thin testnet liquidity

Repo pointers

  • Engineering design: contracts/SEALED_TRADE.md
  • Status helper: app/src/lib/sealedTrade.ts (sealedTradeReady() === true when artifacts ship; panel still checks the on-chain verifier)
  • UI: app/src/components/app/SealedTradePanel.tsx
  • Production keys gate: /docs/production

Try it: Trade → Private trade. Adapter fallback: From vault. Hold/move: Move.