Estimates are lower bounds — assumes minimal column rotations (prev, current, next) and table numbers. Chip flags are the most precise input; additional circuit config flags trade precision for flexibility.
# Full breakdown: scalar/point ops, pairings, # MSM sizes, proof and VK byte sizes cargo run --bin estimate -- \ --nb-public-inputs 3 \ --native
cargo run --bin proof_size -- \ --nb-public-inputs 5 \ --committed-instances \ --poseidon --jubjub
cargo run --bin vk_size -- \ --nb-public-inputs 1 \ --committed-instances \ --bls12-381
Three binaries, three levels of detail:
estimate
Full breakdown — scalar/point operation counts, pairings, MSM sizes, proof byte size, VK byte size. Percentage of Cardano execution limits.
proof_size
Proof size in bytes, derived from column layout and commitment scheme. Fast single-number answer.
vk_size
Verification key size in bytes. Useful for on-chain storage budget planning independently of proof size.
--native Arith
Standard PLONK arithmetic gate + parallel_add gate. The baseline for any custom computation.
--automaton Automaton
Regular expression parsing via a fixed lookup-table automaton. Used for structural validation of committed byte strings.
--base64 Base64
Base64 decoding chip. Used to decode base64-encoded data inside the circuit.
--sha256 SHA256
Bitwise SHA256 hash chip. Used for hashing where SHA256 is required by the target protocol.
--sha512 SHA512
Bitwise SHA512 hash chip. Larger word size than SHA256, used where the protocol calls for it.
--poseidon Poseidon Hash
ZK-friendly Poseidon permutation over the BLS12-381 scalar field. Used in commitments and Merkle trees.
--jubjub JubJub
Edwards curve arithmetic chip for the JubJub curve (embedded in BLS12-381). Efficient scalar multiplication.
--hash-to-curve Hash-to-Curve
Maps an arbitrary message to a JubJub curve point via Poseidon hash. Required for BLS-style signature schemes.
--curve25519 Curve25519
Field and curve arithmetic chip for Curve25519. Supports Ed25519/X25519-style signature and key-exchange circuits.
--secp256k1 Secp256k1
Bitcoin/Ethereum elliptic curve. Supports ECDSA verification and threshold multisignature (ATMS) circuits.
--secp256r1 Secp256r1
NIST P-256 elliptic curve. Supports ECDSA verification circuits such as WebAuthn and TLS.
--bls12-381 BLS12-381
Primary commitment curve. BLS signatures, G1 MSM, and KZG verification are all built on BLS12-381.