ZK Stables
ZK Stables are EVM-native stablecoins designed to give holders the financial privacy that public blockchains otherwise remove, with strong guarantees over balances and transfers. They are issued and operated using the ZK Stables framework, a cryptographic framework for private token transfers.
Progressive privacy layers
The framework uses three layers to balance visibility with confidentiality:
- Layer 1 — Transparent Accounts. Standard ERC-20 flows with balances and transfers visible on-chain.
- Layer 2 — Encrypted Balances. Account balances and transaction amounts are cryptographically hidden, while the transaction graph (who sent to whom) remains public. This layer uses ElGamal encryption to obscure values and zero-knowledge proofs to verify transfer integrity without revealing what was transferred.
- Layer 3 — Shielded (coming soon). Funds are held in a shared privacy pool and moved using nullifiers and ZK proofs. This breaks the on-chain link between sender and recipient so neither the amount nor the participants are revealed.
Technical stack
Each layer is delivered through three coordinated tiers of software:
- Solidity contracts enforce state transitions and verify proofs on-chain.
- Noir circuits implement the zero-knowledge logic and generate the proofs required to validate private operations off-chain.
- TypeScript libraries orchestrate the client flow: local keys, encrypted state, proof generation, and transaction construction.
Gasless UX and integrated compliance
The ZK Stables framework provides permissionless gasless UX using infrastructure for privacy-sensitive submission paths, including Shielded Layer operations when that layer is added.
Compliance is built in. Operations that hide an amount attach an additional ciphertext encrypting that amount under a threshold compliance key held by a Guardian Committee. Decryption requires a quorum and a structured request workflow, so the system can meet regulatory obligations such as MiCA reserve reporting and AML inquiries without giving any single party unilateral access to private user data.
Putting it together
Every ZK Stable account can operate across multiple parallel states, letting users move between transparency and privacy in a single interface. Today, accounts hold a Public Balance and a Private Balance; a third Shielded Balance is coming with Layer 3.
- Public Balance. A standard transparent ERC-20 balance.
- Private Balance (Layer 2). An encrypted state addressed by an EPK Address, derived from the user's Encryption Public Key. These funds support encrypted transfers where amounts remain hidden.
- Shielded Balance (Layer 3, coming soon). A fully anonymous state addressed by a ZK Address, enabling transfers that break all on-chain links between participants.
Spending authority is decoupled from viewing authority. Users can keep the custody setup they already trust for fund control, while giving teams the read access they need for operations, reconciliation, and reporting.
Tokens and deployments
The first generation of ZK Stables includes zkUSD, zkEUR, zkGBP, and zkPLN, currently live on Base Sepolia.
Who this is for
This documentation is intended for two audiences:
- Application developers integrating private balances into an EVM application: wallets, on-ramps, payment apps, custody platforms. Start with the SDK. It exposes a high-level TypeScript API built on viem, with capability tiers so you only ship the WASM you actually need.
- Protocol engineers and auditors who need to understand the on-chain contracts, the ZK circuits, and the cryptographic constructions. Start with the Specification. It is the source of truth for the system as built.