FAQ
Frequently asked questions about ZeroLedger.
How does privacy work in ZeroLedger?
The protocol uses a UTXO-like model, where each unspent commitment is a Poseidon hash of a token amount and a random number. All unspent commitments and their owners are stored on the public ledger (EVM contract). To transact, users generate a zero-knowledge proof that ensures transaction validity (inputs = outputs), while keeping the actual values private. Along with the proof, the transaction includes encrypted metadata that the recipient can use to retrieve transaction details later.
Beyond hiding transaction values, ZeroLedger supports advanced privacy techniques including zero-value commitments to randomly chosen addresses (decoy addresses), EIP-5564 stealth addresses, and invoice proxies. The ZeroLedger Web Wallet automatically inserts decoy addresses from a trusted set of addresses into each user transaction and invoice.
How does compliance work?
ZeroLedger ensures compliance by keeping sender and receiver addresses public and enabling OFAC screening through TES and Paymasters. Users can optionally disclose full transaction details to regulators, who in turn can independently verify them by recomputing the underlying commitments.
What is TES?
TES (Trusted Encryption Service) is a backend service that handles encryption and decryption of private transaction metadata for recipients who have not yet registered their View Accounts in the wallet.
Additionally, TES manages a set of potential decoy addresses. In the default TES implementation, any OFAC-compliant wallet address that has ever interacted with the protocol can be used as a decoy recipient.
What is a View Account?
A View Account is a special account derived from the main wallet account for transaction metadata encryption and decryption. It's created during wallet setup and requires a password to unlock. This ensures that only those who have View Account private keys can see your private balance and transaction details.
How do I get started with ZeroLedger?
To get started, connect your wallet (MetaMask, Coinbase Wallet, or other supported wallets), set up a password for your View Account, and authorize it. You can then deposit funds (which creates three confidential commitments), make private transfers using various spend patterns (1-1, 1-2, 2-1, etc.), and withdraw when needed. The ZeroLedger Web Wallet uses meta-transactions for gas abstraction and batching by default.
How fast are zero-knowledge proofs?
ZeroLedger generates zero-knowledge proofs on the client side with varying speeds depending on the client's available resources and the transaction type (M1-series laptop benchmarks):
- Fast (< 2s): Deposit (0→3), 1-1 spend, 1-2 spend, 2-1 spend
- Medium (2-2.5s): 1-3 spend, 3-1 spend, 2-2 spend, 2-3 spend, 3-2 spend, 3-3 spend
- Slower (> 3s): 8-1 and 16-1 aggregation circuits
What networks does ZeroLedger support?
Currently, ZeroLedger is deployed on Base Sepolia testnet, but the protocol is designed to be network-agnostic and can be deployed on other EVM-compatible networks.
What tokens can I use?
ZeroLedger supports any ERC-20 token. Currently, it's deployed with Mock USD token on the Base Sepolia testnet. The system is token-agnostic and can support additional tokens through the same protocol contracts.
Can I use ZeroLedger on mobile?
Yes, ZeroLedger is fully responsive and works on mobile browsers. You can connect mobile wallets like MetaMask Mobile or use WalletConnect to interact with the application.
How do deposits and withdrawals work?
Deposits transform public token amounts into three confidential commitments using zero-knowledge proofs. Withdrawals reveal a single commitment's plaintext by supplying the tuple (commitment, amount, randomness) and transfer the amount minus fees to the recipient's public address.
What are invoices in ZeroLedger?
Invoices allow you to receive payments privately. ZeroLedger supports two types of invoices: internal invoices for payments from other ZeroLedger users, and external invoices for payments from any wallet.
How do internal invoices work?
Internal invoices are used when the payer is also a ZeroLedger protocol user. The recipient simply fills in the invoice details (amount, token, recipient address) and shares a QR code or link with the payer. The payer scans the QR code in their ZeroLedger wallet and completes the payment using a private spend transaction. This is the simplest form of invoicing with instant, gasless payments.
How do external invoices work?
External invoices allow anyone to pay you, even if they don't use ZeroLedger. When you create an external invoice, the system:
- Generates three commitments in advance (one for you, two zero-value decoys)
- Computes a unique invoice proxy contract address (without deploying it yet)
- Provides you with an address to share with the payer
The payer simply sends ERC-20 tokens to this address using any wallet. Once sufficient tokens are detected, a paymaster automatically deploys and executes the invoice proxy, which deposits the tokens into the Vault and creates your private commitments.
What's the difference between internal and external invoices?
Internal invoices are for ZeroLedger-to-ZeroLedger payments and offer instant settlement with no blockchain interaction by the payer. External invoices accept payments from any wallet through simple ERC-20 transfers, but require the paymaster to execute the invoice proxy after payment is detected. Both types maintain your privacy by using decoy addresses and zero-knowledge proofs.
What are meta-transactions?
Meta-transactions allow a third party, called a relayer or paymaster, to send transactions on behalf of users and pay for the gas fees. ZeroLedger uses meta-transactions for gasless operations and to enable atomic batch execution of multiple transactions. Anyone can become a paymaster in the permissionless system, and paymasters can sponsor transactions based on their own criteria.
How do I get test tokens?
You can use the built-in faucet feature to get test USD tokens. Simply click the 'Faucet' button in the menu tab, and you'll receive test tokens to try out the system on Base Sepolia testnet.
