• Pricings

  • Groth16 Proof System: Why Proof Size Is the Most Underrated Performance Metric

    July 14, 2026

    12 mins read

    Groth16 produces 192-byte proofs regardless of circuit complexity. On EVM, verification costs approximately 200,000 gas. Proving time is under 0.5 seconds. These three numbers define why Groth16 remains the benchmark for institutional on-chain verification in 2026.

    TL;DR: The Groth16 proof system produces constant 192-byte proofs regardless of circuit complexity. On EVM, verification costs approximately 200,000 gas. Proving time is under 0.5 seconds. For institutions running continuous on-chain verification, reserve proofs, collateral checks, NAV updates, this combination is the difference between an economically viable system and one that burns millions in gas annually.
    The standard evaluation checklist for a Groth16 proof system starts and ends with proving time. Engineers want to know: how fast can a proof be generated? It is a reasonable question, latency matters in production systems. But proving time is only half the equation, and for institutional on-chain use cases it is arguably the less important half. The metric that determines whether a Zero-Knowledge Proof system is economically viable at scale is proof size: how many bytes reach the verification contract, and what does that cost in gas, executed hundreds or thousands of times per year?
    Copy of Bản sao của Blog by Chao (1).png For institutional Zero-Knowledge Proof workflows, proof size matters because every on-chain verification repeats the same cost pattern. Groth16 keeps the verification payload fixed even as circuit complexity changes.
    Groth16 answers that question more precisely than any other production-grade proof system available today. A Groth16 proof is always exactly three group elements, approximately 192 bytes, regardless of the circuit being proved. On Ethereum, verifying that 192-byte proof costs approximately 200,000 gas. Combined with proving times under 0.5 seconds, Groth16 occupies a position no other Zero-Knowledge Proof system has displaced for gas-sensitive on-chain verification workloads.
    Key Takeaways:
    • Groth16 proofs are always 192 bytes, a fixed size determined by protocol mathematics, not circuit complexity
    • EVM verification costs approximately 200,000 gas per proof, making continuous on-chain verification economically viable
    • Proving time under 0.5 seconds enables near-real-time proof generation for time-sensitive data states
    • Alternative proof systems trade proof size for other properties: universal trusted setup, or no trusted setup, both at the cost of significantly larger proofs and higher verification gas
    • For institutions running daily or sub-daily on-chain verification (reserve proofs, collateral checks, NAV updates), the gas cost differential between Groth16 and alternatives compounds to material operating cost differences over a year

    Why Does Proof Size Determine On-Chain Viability?

    Proof size is the primary driver of on-chain verification cost because every byte submitted to an Ethereum contract costs gas. A smaller proof means a smaller calldata payload, fewer field element operations during pairing verification, and lower total gas consumed per verification call.
    This is not an abstract concern. For a system that verifies verifiable data on-chain once, during an audit or a one-time proof-of-concept, proof size is a minor consideration. For a system that verifies reserve data daily, collateral sufficiency in response to price movements, or NAV state on a rolling basis, the cost per verification multiplies across every call over a year's operation.
    At 200,000 gas per Groth16 verification, a stablecoin issuer running daily reserve proofs on Ethereum mainnet consumes approximately 73 million gas per year. At current gas pricing that translates to operating costs that are measurable but manageable. Run the same workload with a proof system producing 100KB proofs, a realistic ceiling for STARK-based systems, and the calldata cost alone pushes annual gas consumption past one billion gas. The economics do not work. The verification layer becomes the bottleneck, not the business logic.

    What Makes Groth16's 192-Byte Proof Structurally Constant?

    Groth16 is a pairing-based zk-SNARK. The proof consists of exactly three elliptic curve group elements: two elements from a base group G1 and one from G2, over a bilinear pairing-friendly curve (typically BN254 for EVM compatibility). The mathematical structure of the proof is determined by the protocol, not by the circuit being proved.
    This is the property that makes Groth16 unusual among Zero-Knowledge Proof systems. The proof does not grow as circuits grow more complex. Whether the circuit encodes a simple hash preimage or a full Merkle membership proof over a million-leaf tree, the output is the same three group elements, the same 192 bytes. Circuit complexity affects proving time, not proof size.
    The practical consequence: a CTO evaluating Groth16 for data integrity use cases can fix the verification cost as a known constant and then scale the proving infrastructure independently. The on-chain verification layer does not need to be re-engineered as data models grow more complex.
    The one architectural constraint Groth16 carries is its trusted setup requirement. Each distinct circuit requires a one-time multi-party computation (MPC) ceremony to generate the circuit-specific proving and verification keys. This is not a recurring cost, but it is a commitment. For a database proof system with well-defined, stable Merkle circuits, the dominant structure for verifiable data use cases, this constraint is manageable. The circuit is defined once, the setup ceremony runs once, and the keys remain valid for the lifetime of that circuit configuration.

    How Does Groth16 Compare Against Alternative Proof Systems?

    The performance gap between Groth16 and the alternatives is wide enough to be decisive for on-chain use cases.
    Proof SystemProof SizeEVM Verification GasProving TimeTrusted Setup
    Groth16~192 bytes~200,000 gas<0.5 secondsPer-circuit MPC (one-time)
    PLONK~600-800 bytes~300,000-450,000 gasSlowerUniversal (reusable)
    STARKs100KB+Prohibitively high for frequent verificationFaster at large scaleNone required
    Nova / Folding SchemesVariableNot yet production-validated on EVMEfficient for recursionNone required
    PLONK's primary advantage is its universal trusted setup: the same setup ceremony can support any circuit up to a fixed size, which simplifies deployment across diverse circuit types. The trade-off is proof size. At 600 to 800 bytes, PLONK proofs carry roughly 3 to 4 times the calldata overhead of a Groth16 proof, and the pairing operations during EVM verification are correspondingly more expensive. For a one-time verification, the difference is marginal. For a continuous verification workload, it compounds.
    STARKs remove the trusted setup requirement entirely, which is a meaningful property for systems where trust assumptions over the setup ceremony are a concern. The cost is proof size measured in kilobytes, not bytes. STARK proofs in the 100KB range are appropriate for off-chain verification or for rollup settlement where a single proof amortizes the cost across many transactions. They are not appropriate for use cases requiring frequent, independent on-chain verification. The gas cost per verification at that proof size makes the model economically unworkable for institutions running daily or sub-daily verification cycles.
    Nova and other folding-scheme-based proof systems offer efficient recursive proof composition, which is valuable for aggregating many computation steps into a single succinct proof. The category is promising for long-running computations, but the EVM verification story for Nova is not yet production-validated at institutional scale. It is an appropriate track to watch, not an appropriate track to build on today.

    What Does the Gas Cost Differential Mean at Institutional Scale?

    The numbers in the comparison table become consequential when projected across a realistic operating cadence. Zero-knowledge proofs blockchain infrastructure is not evaluated by a single proof, it is evaluated by total cost of on-chain operations over a year.
    Consider a stablecoin issuer running daily Proof of Reserves verification on Ethereum mainnet. At Groth16's 200,000 gas per verification, the annual gas consumption is approximately 73 million gas. Under comparable market conditions, this represents a manageable and predictable operating cost, a line item, not a constraint.
    Run the same workload with a STARK-based proof. The calldata cost for a 100KB proof at current Ethereum gas pricing is substantially higher per verification, and that cost multiplies across 365 annual calls. Annual gas consumption for the same verification workload crosses into territory that materially changes the economics of the compliance infrastructure.
    For a capital markets protocol running collateral verification in response to price movements, potentially dozens of verification calls per day rather than one, the arithmetic compounds further. Groth16's fixed 200,000 gas per call remains the only proof system with proof size and verification cost characteristics that make continuous on-chain verification financially viable at this frequency.
    The comparison with direct on-chain data anchoring is even more striking. Anchoring 1KB of data directly to Ethereum costs approximately $25 at standard gas prices. Generating a Groth16 proof over that same data and verifying it on-chain costs approximately $0.002. That represents a cost reduction of approximately 12,500 times for the same data integrity guarantee, with the added property that the proof is cryptographically verifiable rather than simply stored.

    Where Does Groth16 Fit in a Verifiable Data Pipeline?

    Groth16's proof size and gas characteristics make it specifically well-suited to Merkle membership circuits, the core computation underlying a verifiable database architecture. Proving that a specific data record is a member of a Merkle tree committed on-chain, or that a tree state transition was computed correctly, is the fundamental operation in any system that needs to prove data integrity without re-publishing the underlying data.
    This is the computation zkDatabase runs. The Verifiable Data Pipeline, from data ingestion through storage, query, and on-chain proof, uses Groth16 as the proof system for its Merkle membership proofs precisely because the circuit structure is stable and the gas cost is fixed. The zkDatabase mainnet implementation achieves proving times under 0.5 seconds on production hardware, a 50x improvement over the previous Kimchi-based stack.
    The architecture separates the proving layer (off-chain, fast, parallelizable) from the verification layer (on-chain, fixed cost, public). Institutions generate proofs over their data state as data changes. Verification contracts on-chain accept the 192-byte proof and confirm it against the committed Merkle root. Smart contracts, regulators, or counterparties can verify the proof without accessing the underlying data. The trust assumption on the operator is replaced by a mathematical verification.
    This is the property that matters for data integrity in regulated contexts. Attestation-based systems require trusting the entity that generated the attestation. A Groth16 proof requires trusting the mathematics. The distinction is not philosophical, it is architectural, and it has direct consequences for what can and cannot be verified independently.

    What Should Engineers Know Before Adopting Groth16?

    Groth16 is battle-tested. It is deployed across ZK-Data-Rollups, ZK identity systems, ZK bridges, and verifiable database infrastructure. The cryptography has been reviewed extensively and the EVM verification contracts are well-audited. This is not experimental infrastructure.
    The practical consideration for new deployments is the trusted setup. Each circuit requires its own MPC ceremony. For organizations with a small number of well-defined circuits, which describes most data integrity use cases, this is a one-time engineering task, not an ongoing overhead. The ceremony participants contribute randomness to the setup; as long as at least one participant is honest, the setup is secure. Large-scale MPC ceremonies with dozens of participants are now standard practice and have been run for circuits of significant complexity.
    Circuit stability is the related consideration. If the data model changes significantly, requiring new fields in the Merkle tree structure or a different hash function, the circuit changes and a new trusted setup is required. For production deployments, this argues for careful circuit design upfront. zkDatabase's Merkle membership circuits are designed for stability, the proof system is built around a fixed circuit architecture that can accommodate data model changes at the application layer without changing the underlying proving circuit.
    The decision to evaluate Groth16 versus alternatives should not rest primarily on the trusted setup overhead. That cost is bounded and one-time. The decision should rest on the gas cost of verification over the intended operating lifetime and cadence. For any institution running on-chain verification more than a handful of times per year, the proof size arithmetic favors Groth16 decisively.

    Frequently Asked Questions

    Does Groth16's trusted setup introduce meaningful trust assumptions for institutional deployments?
    The trusted setup requires that at least one participant in the MPC ceremony does not reveal their secret randomness (the "toxic waste"). If all participants collude and retain their secrets, they could generate false proofs that pass verification. In practice, ceremonies are run with large numbers of geographically distributed participants from independent organizations, making collusion implausible. The ceremony is also run once per circuit; it does not create ongoing trust dependencies. For institutional deployments, the setup ceremony is comparable in trust model to trusting the hardware security modules used in traditional financial infrastructure, a bounded, auditable assumption, not an open-ended one.
    Can Groth16 proofs be aggregated to further reduce verification costs?
    Yes. Multiple Groth16 proofs can be aggregated using techniques such as Groth16 proof aggregation via inner product arguments, reducing the on-chain verification cost for a batch of proofs to a fixed overhead regardless of batch size. This is the approach used in ZK-Data-Rollups settlement and is applicable to data integrity use cases where multiple state transitions can be batched and proved together. Aggregation further extends the cost advantage of Groth16 in high-frequency verification scenarios.
    What circuit complexity can Groth16 handle without degrading proving time below the 0.5-second threshold?
    Proving time scales with the number of constraints in the circuit, not the proof size (which remains fixed). For Merkle membership circuits over trees of standard depth (32 levels), proving time under 0.5 seconds is achievable on production hardware using parallel witness generation and GPU-accelerated multi-scalar multiplication. Significantly more complex circuits, those with millions of constraints, will require longer proving times. The zkDatabase Merkle circuits are sized and optimized specifically for the proving time target; circuit complexity is a design parameter, not an inherent limitation of the proof system.