Skip to main content

Overview

Each Umbra pool is deployed per token mint. A pool supports both the EncryptedTokenAccount flow (deposit / withdraw / convert) and the Stealth Pool flow (Stealth Pool Note create + burn). Token-2022 mints with a transfer fee extension are fully supported — the SDK accounts for the transfer fee before applying protocol fees. See Token-2022 Support. The list below is a snapshot. The authoritative source at runtime is the relayer’s getSupportedMints() endpoint — it returns only mints with deployed token-pool and fee-schedule PDAs, so it doubles as a “pool deployed” check.
import { getUmbraRelayer } from "@umbra-privacy/sdk";

const relayer = getUmbraRelayer({ apiEndpoint: "https://relayer.api.umbraprivacy.com" });
const live    = await relayer.getSupportedMints();

Mainnet

  • wSOL (Wrapped SOL)
    • Mint: So11111111111111111111111111111111111111112
    • Decimals: 9
    • Token program: SPL
    • EncryptedTokenAccount: enabled
    • Stealth Pool: enabled
  • USDC
    • Mint: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
    • Decimals: 6
    • Token program: SPL
    • EncryptedTokenAccount: enabled
    • Stealth Pool: enabled
  • USDT
    • Mint: Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB
    • Decimals: 6
    • Token program: SPL
    • EncryptedTokenAccount: enabled
    • Stealth Pool: enabled
  • UMBRA
    • Mint: PRVT6TB7uss3FrUd2D9xs2zqDBsa3GbMJMwCQsgmeta
    • Decimals: 6
    • Token program: SPL
    • EncryptedTokenAccount: enabled
    • Stealth Pool: enabled
  • CASH
    • Mint: CASHx9KJUStyftLFWGvEVf59SGeG9sh5FfcnZMVPCASH
    • Decimals: 6
    • Token program: SPL
    • EncryptedTokenAccount: enabled
    • Stealth Pool: enabled
  • ZINC
    • Mint: zinc155BS4mSPk8GXQj4R5hkVDQXcW253pTYq5SGyfi
    • Decimals: 9
    • Token program: SPL
    • EncryptedTokenAccount: enabled
    • Stealth Pool: enabled

Devnet

  • wSOL (Wrapped SOL)
    • Mint: So11111111111111111111111111111111111111112
    • Decimals: 9
    • Token program: SPL
    • EncryptedTokenAccount: enabled
    • Stealth Pool: enabled
  • dUSDC (Dummy USDC — mock of the USD Coin standard)
    • Mint: 4oG4sjmopf5MzvTHLE8rpVJ2uyczxfsw2K84SUTpNDx7
    • Decimals: 6
    • Token program: SPL
    • EncryptedTokenAccount: enabled
    • Stealth Pool: enabled
  • dUSDT (Dummy USDT — mock of Tether USD)
    • Mint: DXQwBNGgyQ2BzGWxEriJPVmXYFQBsQbXvfvfSNTaJkL6
    • Decimals: 6
    • Token program: SPL
    • EncryptedTokenAccount: enabled
    • Stealth Pool: enabled
Mints outside this list will fail at the account-fetch stage with error 3012 (pool missing).

Devnet Faucet

Get test tokens at faucet.umbraprivacy.com. The faucet distributes 1,000 tokens per wallet every 60 minutes for each of dUSDC and dUSDT — no signup, no KYC, just paste a Solana devnet wallet address. For devnet wSOL, use any standard Solana airdrop faucet (e.g. solana airdrop) and wrap it with the SDK.

Localnet

Localnet uses the same configuration as devnet — wSOL only — and runs against a local Solana validator + a locally-spun-up indexer/relayer stack.

Using a Supported Mint

Pass the mint address directly to any SDK function that accepts a mint parameter:
import { getATAIntoETADirectDepositorFunction } from "@umbra-privacy/sdk/deposit";
import { getETAIntoATAWithdrawerFunction } from "@umbra-privacy/sdk/withdrawal";

const USDC = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";

// Deposit: ATA → ETA
const deposit = getATAIntoETADirectDepositorFunction({ client });
await deposit(client.signer.address, USDC, 1_000_000n);

// Withdraw: ETA → ATA
const withdraw = getETAIntoATAWithdrawerFunction({ client });
await withdraw(client.signer.address, USDC, 1_000_000n);
The SDK fetches the pool configuration on-chain and selects the correct instruction variant automatically.
Always verify the mint is supported before building a transaction. Use relayer.getSupportedMints() at app boot and cache the result for the session. Calling a deposit / withdraw / create with an unsupported mint fails with error 3012 after the account-fetch stage — surface a clear user-facing error before you get there.