Umbra Privacy LogoUmbra Privacy
Core Concepts

The Anonymity Layer

An overview of the privacy mechanisms behind Umbra's anonymous deposits and claims.

The Anonymity Layer is the core privacy engine of the Umbra protocol. Its function is to break the on-chain link between where funds come from (a deposit) and where they go (a claim). It transforms a standard, transparent transaction into a private transfer where the sender, receiver, and amount can be concealed.

Think of it as a cryptographic vault: tokens from many users go in and are mixed together. When tokens come out, an outside observer cannot link them back to the original depositor.


The Core Concept: The Shielded Pool

The foundation of the Anonymity Layer is the shielded pool. This is a smart contract that holds a large, mixed collection of tokens from many different users.

The privacy of any single transaction is derived from the "anonymity set" — the total number of other deposits in the pool. The core idea is simple: the larger the crowd, the harder it is to pick out an individual.

Analogy: A shielded pool is like a community vault where everyone deposits identical-looking tokens. Once your tokens are in the vault and mixed with everyone else's, it's computationally impossible for an outsider to determine which tokens originally belonged to you.

As more users and assets flow into the pool, the anonymity set grows, and the privacy guarantees for every user become exponentially stronger.


How It Works: A Two-Step Process

Interacting with the Anonymity Layer is a simple, two-step process for the user: making a deposit and making a claim.

Step 1: Making a Deposit

When a user wants to make a transaction private, they deposit their tokens into the shielded pool.

  1. The protocol takes the key details of the deposit (like the amount and the intended recipient Umbra Address) and seals them in a cryptographic "note" or commitment.
  2. This commitment is added to a public, on-chain list that tracks all deposits ever made to the pool.

An on-chain observer can see that a deposit was made from a specific Solana address, but they cannot see the contents of the secret note. They only see the public commitment, which looks like a random string of numbers. The link between the depositor and the eventual recipient is hidden at this stage.

Step 2: Making a Claim

When the recipient wants to access the funds, they must prove to the smart contract that they own one of the secret notes on the public list, without revealing which one.

  1. This is achieved using a Zero-Knowledge Proof (ZKP). A ZKP is a powerful cryptographic tool that allows you to prove a statement is true without revealing the secret information that makes it true.

    It's like proving you know a secret password without ever typing it in public. You provide a mathematical proof that you could provide the password, which is just as good.

  2. The recipient generates a ZKP to prove they own a valid, unspent commitment from the list.
  3. The Umbra smart contract verifies this proof. If it's valid, the contract releases the funds to the recipient's Umbra Address.

To prevent the same deposit from being claimed twice, the user also reveals a nullifier — a unique serial number tied to their deposit that the contract invalidates upon use.


A sophisticated observer might try to link a claim to a user by looking at who paid the gas fee (the SOL transaction fee). If a new, empty Umbra Address suddenly makes a transaction, where did it get the SOL to pay for it?

Umbra solves this with a Relayer Network.

  • A relayer is a third-party service that submits the claim transaction on the user's behalf.
  • The relayer pays the SOL gas fee upfront.
  • The relayer is then automatically reimbursed for the fee out of the funds being claimed.

This system means the recipient's new Umbra Address doesn't need to be pre-funded with SOL, breaking the final potential on-chain link and providing a seamless, "gasless" user experience.


What This Achieves: Strong Privacy Guarantees

By combining these concepts, the Anonymity Layer provides robust, multi-faceted privacy:

  • Unlinkability: The shielded pool, combined with Zero-Knowledge Proofs, breaks the cryptographic link between the deposit and claim transactions.
  • Confidentiality: Umbra also encrypts the transaction amounts, so not only is the linkage hidden, but the exact value of a user's balance within the pool is also kept private.
  • Fee Abstraction: The relayer network removes gas-based linkages, further strengthening privacy and improving the user experience.

For a Deeper Dive

This page describes the high-level concepts of the Anonymity Layer. The specific cryptographic primitives—such as Poseidon hashing, Groth16 zkSNARKs, and the Rescue cipher—are detailed on our main cryptography page.

Deep Dive into the Cryptography

Explore the technical implementation details starting with master seed generation and cryptographic foundations