Zero Knowledge
Zeroledger uses zk to prove transaction amount validity without disclosing transferred amount publicly. Please take a look at open-source circuits repo that contains all components nessasary to compile, generate and verify proofs.
PLONK Proving System
Why PLONK?
PLONK (Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge) was chosen for ZeroLedger because:
- Universal Setup: Single trusted setup ceremony for all circuits
- Efficiency: Optimized for practical proving times
- Flexibility: Supports various circuit constraints
- Browser Compatibility: Works well in web environments
Trusted Setup
ZeroLedger uses the public BN254 "Powers of Tau" ceremony, which means:
- No additional trusted setup required
- Publicly verifiable parameters
- Reduced trust assumptions
- Community-validated security
Circuit Architecture
Circuit Types
ZeroLedger implements multiple circuit variants to handle different transaction patterns:
Deposit Circuit
- Purpose: Convert public tokens to private commitments
- Inputs: Public token amount, randomization factors
- Outputs: Three private commitments
- Proving Time: ~1.5 seconds
Spend Circuits
Multiple variants supporting different input/output combinations:
| Circuit | Inputs | Outputs | Proving Time |
|---|---|---|---|
| 1-1 | 1 | 1 | 1.5s |
| 1-2 | 1 | 2 | 1.7s |
| 1-3 | 1 | 3 | 2.1s |
| 2-1 | 2 | 1 | 1.7s |
| 2-2 | 2 | 2 | 2.1s |
| 2-3 | 2 | 3 | 2.3s |
| 3-1 | 3 | 1 | 2.0s |
| 3-2 | 3 | 2 | 2.2s |
| 3-3 | 3 | 3 | 2.6s |
Aggregation Circuits
For power users who need to consolidate many commitments:
| Circuit | Inputs | Outputs | Proving Time |
|---|---|---|---|
| 8-1 | 8 | 1 | 5.0s |
| 16-1 | 16 | 1 | 9.0s |
Proof Generation
Browser-Based Proving
ZeroLedger generates proofs directly in the browser using:
- WebAssembly: For efficient circuit execution.
- Web Workers: For non-blocking proof generation
- Optimized Libraries: CircomlibJS and SnarkJS
Proving Process For Compiled Circuit
- Witness Generation: Create witness for specific inputs
- Proof Generation: Generate PLONK proof
- Verification: On-chain proof verification
Official tools from circom were used for circuit compilation and evm verifiers generation
Security Considerations
Trust Assumptions
- Trusted Setup: Relies on public Powers of Tau ceremony
- Cryptographic Primitives: Assumes security of Poseidon and BN254
- Circuit Correctness: Assumes circuits correctly implement logic
Attack Vectors
- Circuit Bugs: Incorrect circuit implementation
- Trusted Setup: Compromised setup parameters
- Cryptographic Attacks: Advances in cryptanalysis
Mitigations
- Audits: Regular security audits of circuits
- Public Setup: Ptau from pupular trusted setup ceremony used
- Standard Primitives: Use of well-established and simple cryptographic functions
