Resources

Glossary

Terms and definitions

Tokens

UPD (Universal Private Dollar)

A stablecoin pegged 1:1 to USD, over-collateralized with stETH. UPD can be used both publicly (standard ERC-20) and privately (via UPP).

sUPD (Staked UPD)

A yield-bearing token representing staked UPD. sUPD is a share-based vault token that increases in value over time as the vault earns yield.

Privacy System

UPP (Universal Private Pool)

The privacy layer that enables private transactions for ERC-20 tokens. UPP uses zero-knowledge proofs to hide transaction details while maintaining compliance through the ASP layer.

Shield

The operation of depositing public tokens into the private pool. Shielding creates a private note that represents your balance.

Unshield

The operation of withdrawing from the private pool back to public tokens. Unshielding reveals the amount and recipient address.

Note

A private unit of value in UPP. Notes are like encrypted "coins" that represent a specific amount, token, and origin. Notes are consumed when spent and new notes are created.

Commitment

A cryptographic hash of a note's contents: Poseidon(amount, blinding, origin, token). Commitments are stored on-chain and hide the note details.

Nullifier

A unique identifier computed when a note is spent. Nullifiers prevent double-spending by tracking which notes have been used.

Blinding Factor

A random value included in a note's commitment that ensures two notes with the same amount/origin/token have different commitments.

Keys

Spending Key

A private key that authorizes spending notes. Without the spending key, notes cannot be transferred or withdrawn.

Viewing Key

A private key that allows decrypting and viewing notes but not spending them. Viewing keys can be shared for auditing without risking funds.

Master Viewing Key (MVK)

The root viewing key from which per-transaction viewing keys are derived. The MVK can decrypt all notes for an account.

Decryption Viewing Key (DVK)

A per-note viewing key that can decrypt only a specific note. DVKs are derived from the MVK and note index.

Stealth Address

A reusable address that allows senders to create unique one-time addresses for each payment. Stealth addresses prevent payment linkability.

Stealth Meta-Address

The public identifier containing spending and viewing public keys. Encoded in bech32m format with prefix 0zk.

Compliance

ASP (Association Set Provider)

An entity that maintains a list of compliant addresses. ASPs publish Merkle roots on-chain, and users prove their funds' origin is in the ASP's allowlist.

Origin

The address that originally deposited funds into the pool. Origin is used for compliance checking and can only be changed via merge.

Ragequit

A special withdrawal path that bypasses ASP checks when the recipient equals the origin. Ensures original depositors can always recover their funds.

Merge

The operation of combining two notes into one. Merge is the only way to change a note's origin - the merger becomes the new origin.

Restricted Transfer

A transfer where the origin is not in any ASP allowlist. Restricted notes can only be sent back to their origin address.

Cryptography

BabyJubJub

An elliptic curve optimized for ZK circuits. UPP uses BabyJubJub for all key operations.

Poseidon

A hash function designed for ZK circuits. Used for commitments, nullifiers, and Merkle trees.

Groth16

A zero-knowledge proof system used by UPP. Groth16 produces small, fast-to-verify proofs but requires a trusted setup.

LeanIMT

Lean Incremental Merkle Tree - the data structure used to store note commitments. Optimized for gas efficiency and ZK circuits.

ECDH (Elliptic Curve Diffie-Hellman)

A key agreement protocol used to derive shared secrets between sender and recipient for note encryption.

AES-GCM

The encryption algorithm used for note data. Provides both confidentiality and authentication.

Operations

Transfer

A private payment within the pool. Consumes one note and creates two new notes (recipient + change).

Merge

Combines two notes into one. The merger becomes the new origin.

Shield

Deposit public tokens into the pool.

Unshield

Withdraw from the pool to a public address.

Infrastructure

Merkle Tree

A hash-based data structure that allows efficient membership proofs. UPP uses Merkle trees for both note commitments (state tree) and ASP allowlists.

Merkle Root

The top hash of a Merkle tree. Publishing the root allows verification of membership without revealing all entries.

Merkle Proof

A path of hashes proving that a leaf is part of a Merkle tree with a given root.

Root History

A circular buffer of recent Merkle roots. Allows transactions to use slightly outdated roots for timing flexibility.

Indexer

Software that scans the blockchain for encrypted notes and decrypts those belonging to a user. Required for wallet functionality.

On this page