> ## Documentation Index
> Fetch the complete documentation index at: https://sdk.umbraprivacy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Umbra privacy protocol for Solana: shield SPL/Token-2022 balances via Arcium MPC EncryptedTokenAccounts, transfer anonymously through a Stealth Pool, and grant selective compliance access.

## What is Umbra?

Umbra adds a privacy layer on top of standard Solana [SPL and Token-2022 tokens](https://spl.solana.com/token). It lets you:

* **Shield balances** — move tokens from a public 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](https://arcium.com) multi-party computation (MPC) for the confidential arithmetic.

<Note>
  You do **not** need to understand MPC or zero-knowledge proofs to use Umbra. The SDK handles all cryptographic operations for you.
</Note>

## Key terms

The SDK and these docs use this vocabulary throughout:

* **ATA** — `AssociatedTokenAccount`. A standard SPL Associated Token Account holding plaintext tokens.
* **ETA** — `EncryptedTokenAccount`. An Umbra-managed account whose balance is encrypted. Two modes: **MXE-only** (Arcium decrypts) and **Shared** (the user can also decrypt locally).
* **Stealth Pool Note** — a leaf in the shared mixer tree. On-chain it is a commitment in the Indexed Merkle Tree; the SDK surfaces it as a "note".
* **Burn** — consuming a note: it reveals the note's nullifier on-chain and credits the destination balance.

The on-chain instruction is `burn_*` and the relayer endpoint is `/v1/claims` — the wire protocol uses these lower-level nouns, and a handful of TS aliases bridge them so the relayer client plugs into the burner factories unchanged. You should not need to touch any of that as an SDK consumer.

## Core Concepts at a Glance

<CardGroup cols={2}>
  <Card title="Encrypted Balances" icon="shield" href="/concepts/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.
  </Card>

  <Card title="Stealth Pool" icon="shuffle" href="/concepts/utxos-and-mixer">
    Break the on-chain link between sender and recipient using a shared Merkle tree of Stealth Pool Notes and zero-knowledge burn proofs.
  </Card>

  <Card title="SDK" icon="code" href="/sdk/installation">
    One TypeScript package, `@umbra-privacy/sdk`. The ZK prover, indexer client, and relayer client all ship as subpath modules — no separate `@umbra-privacy/web-zk-prover` package.
  </Card>

  <Card title="Indexer API" icon="server" href="/indexer/overview">
    A read-only REST API for Stealth Pool Note records and Merkle proofs — used internally by the SDK and available for direct integration.
  </Card>
</CardGroup>

## 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, ZINC.
* `devnet` — Development and integration testing. wSOL only.
* `localnet` — Local validator. wSOL only.

## Next Steps

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Install the SDK and run your first deposit + burn in under 5 minutes.
  </Card>

  <Card title="How Umbra Works" icon="book-open" href="/concepts/how-umbra-works">
    Understand the privacy model before you start building.
  </Card>
</CardGroup>
