Skip to main content

What is Umbra?

Umbra adds a privacy layer on top of standard Solana SPL and Token-2022 tokens. It lets you:
  • Shield balances — move tokens from an Associated Token Account (ATA) into an EncryptedTokenAccount (ETA) where the balance is hidden from everyone except authorized viewers.
  • Transfer anonymously — write a Stealth Pool Note into a shared mixer tree, then burn it from any wallet with no on-chain linkage to the sender.
  • Control who sees what — grant selective viewing access to auditors or compliance systems without exposing your full history.
Everything runs on Solana using a combination of on-chain programs and Arcium multi-party computation (MPC) for the confidential arithmetic.
You do not need to understand MPC or zero-knowledge proofs to use Umbra. The SDK handles all cryptographic operations for you.

Key Terms

These are the nouns and verbs you will see throughout the SDK and the rest of these docs:
  • ATAAssociatedTokenAccount. A standard SPL Associated Token Account holding plaintext tokens. Source/destination of deposits and withdrawals.
  • ETAEncryptedTokenAccount. An Umbra-managed account whose balance is encrypted. Has two modes: MXE-only (only the Arcium MPC network can decrypt) and Shared (you can also decrypt locally with your viewing key).
  • Stealth Pool Note — an anonymous note stored as a commitment in the on-chain Indexed Merkle Tree. Senders create notes; either the original sender (self-burnable) or a designated recipient (receiver-burnable) burns them later to redeem the value.
  • Burn — the operation that redeems a Stealth Pool Note: it reveals the note’s nullifier (preventing double-spend), discharges the value into either an ETA or an ATA, and emits no on-chain link back to the creator.

Core Concepts at a Glance

Encrypted Balances

Shield any SPL or Token-2022 token balance in an EncryptedTokenAccount. Only you — and anyone you explicitly grant access to — can see the amount.

Stealth Pool

Break the on-chain link between sender and recipient using a shared Merkle tree of Stealth Pool Notes and zero-knowledge burn proofs.

SDK

One TypeScript package, @umbra-privacy/sdk. The ZK prover, indexer client, and relayer client all ship as subpath modules of the same package.

Indexer API

A read-only REST API for Stealth Pool Note records and Merkle proofs — used internally by the SDK and available for direct integration.

How It Fits Into Your Stack

Umbra is designed to slot into an existing Solana application. You bring your wallet adapter; Umbra handles the rest.
Your App
  └── Wallet (Phantom, Solflare, etc.)
        └── Umbra SDK (@umbra-privacy/sdk)
              ├── Solana RPC     — sends and confirms transactions
              ├── Arcium MPC     — performs confidential computation off-chain
              ├── Umbra Indexer  — indexes Stealth Pool Notes + Merkle proofs
              ├── Umbra Relayer  — submits burn transactions for the user
              └── ZK prover      — Groth16 (snarkjs), runs in a Web Worker

Program IDs

The Umbra on-chain program is deployed at different addresses per network:
  • Mainnet: UMBRAD2ishebJTcgCLkTkNUx1v3GyoAgpTRPeWoLykh
  • Devnet: DSuKkyqGVGgo4QtPABfxKJKygUDACbUhirnuv63mEpAJ
The SDK resolves the correct program address automatically based on the network parameter.

Supported Networks

  • mainnet — Production. wSOL, USDC, USDT, UMBRA, CASH.
  • devnet — Development and integration testing. wSOL, dUSDC, dUSDT, STREAMFLOW. Get dUSDC / dUSDT test tokens at faucet.umbraprivacy.com.
  • localnet — Local validator (development).

Next Steps

Quickstart

Install the SDK and run your first deposit + burn in under 5 minutes.

How Umbra Works

Understand the privacy model before you start building.