Skip to content

leanEthereum/leanMultisig

Repository files navigation

♦ leanMultisig ♦

XMSS + minimal zkVM = lightweight PQ signatures, with unbounded aggregation

Status

  • branch main: optimized for prover efficiency
  • branch lean-vm-simple: optimized for simplicity

Both versions will eventually merge into one.

Proving System

The VM design is inspired by the famous Cairo paper.

Benchmarks

Benchmarks are performed on 2 laptops:

  • i9-12900H, 32 gb of RAM
  • mac m4 max

target ≈ 128 bits of security, currently using conjecture: 4.12 of WHIR, "up to capacity" (TODO: provable security)

Poseidon2

Poseidon2 over 16 KoalaBear field elements.

RUSTFLAGS='-C target-cpu=native' cargo run --release -- poseidon --log-n-perms 20

Alt text

Recursion

The full recursion program is not finished yet. Instead, we prove validity of a WHIR opening, with 25 variables, and rate = 1/4.

  • 1-to-1: Recursive proof of a single WHIR opening
  • n-to-1: Recursive proof of many WHIR openings (≈ 8) (we report prover time per WHIR)
RUSTFLAGS='-C target-cpu=native' cargo run --release -- recursion --count 8

Alt text

XMSS aggregation

RUSTFLAGS='-C target-cpu=native' cargo run --release -- xmss --n-signatures 1775

Trivial encoding (for now).

Alt text

Alt text

Fibonacci:

n = 2,000,000

FIB_N=2000000 RUSTFLAGS='-C target-cpu=native' cargo test --release --package lean_prover --test test_zkvm -- --nocapture -- test_prove_fibonacci --exact --nocapture

Proving time:

  • i9-12900H: 2.0 s (1.0 MHz)
  • mac m4 max: 1.2 s (1.7 MHz)

Proof size

With conjecture "up to capacity", current proofs with rate = 1/2 are about ≈ 400 - 500 KiB, of which ≈ 300 KiB comes from WHIR.

  • The remaining 100 - 200 KiB will be significantly reduced in the future (this part has not been optimized at all).
  • WHIR proof size will also be reduced, thanks to merkle pruning (TODO).

Target: 256 KiB for fast proof, 128 KiB for slower proofs (rate = 1/4 or 1/8).

Credits

  • Plonky3 for its various performant crates (Finite fields, poseidon2 AIR etc)
  • whir-p3: a Plonky3-compatible WHIR implementation
  • Whirlaway: Multilinear snark for AIR + minimal zkVM

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 8

Languages