Skip to content

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:

CircuitInputsOutputsProving Time
1-1111.5s
1-2121.7s
1-3132.1s
2-1211.7s
2-2222.1s
2-3232.3s
3-1312.0s
3-2322.2s
3-3332.6s

Aggregation Circuits

For power users who need to consolidate many commitments:

CircuitInputsOutputsProving Time
8-1815.0s
16-11619.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

  1. Witness Generation: Create witness for specific inputs
  2. Proof Generation: Generate PLONK proof
  3. 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