Search

Search for projects by name or address

ZK Catalog

Barretenberg logo
BarretenbergAztec

About

Barretenberg includes several zk-SNARK proof systems built by Aztec, including UltraHonk and CHONK.


  • Total Value SecuredTVS
    No data

  • Trusted Setups

    Used in

    Aztec Network logo

    Verifiers

    1by

    Used in

    Aztec Network logo

    Verifiers

    1by

    Tech Stack

    zkVM
    UltraHonk
    CHONK
    BN254
    Grumpkin
    AVM
  • Total Value SecuredTVS
    No data
  • About

    Barretenberg includes several zk-SNARK proof systems built by Aztec, including UltraHonk and CHONK.



    Total
    Canonically BridgedCanonically Bridged ValueCanonical
    Natively MintedNatively Minted TokensNative
    Externally BridgedExternally Bridged ValueExternal

    ETH & derivatives
    Stablecoins
    BTC & derivatives
    Other

    Description

    Barretenberg is a C++ library that implements several Plonk-based proof systems, developed by Aztec. It notably includes UltraHonk SNARK as an optimized version of previous Plonk implementation, and CHONK (Client-side Highly Optimized ploNK) SNARK for client-side proving on weaker devices. Barretenberg implements actual zero-knowledge SNARK modifications that allow proving over private data, and provides tools to generate UltraHonk smart contract verifiers. It also contains circuits to prove private and public transactions on Aztec L2.

    Proof system

    The main application of Barretenberg is proving Aztec L2 state transition, which includes users locally proving private transactions with true ZK CHONK and more powerful nodes proving public transactions using UltraHonk. CHONK proofs must be verified within UltraHonk, so Barretenberg also includes tools for recursive proving. Both proving systems operate on arithmetic circuits that could be compiled from Noir programs into ACIR, which is a native circuit representation for Barretenberg.

    UltraHonk

    UltraHonk is built on top of Plonk proof system, with several optimizations for performance. It also serves as a basis for CHONK. The main optimization comes from using sumcheck protocol over the boolean hypercube as described in the HyperPlonk paper. This trick allows reducing prover time and memory requirements at the expense of larger proofs. Barretenberg also contains code for circuits verifying Honk proofs within UltraHonk verifier, allowing prover recursion. For more technical details on UltraHonk see here.

    CHONK

    CHONK is the proof system that is most optimized for client side proving in memory-restricted environments like mobile and browsers. In addition, CHONK has zero-knowledge property to protect prover private inputs, which is achieved by adding random masking polynomials at several stages of the pipeline and some other measures. For the full description of ZK-related modifications see here.

    One of CHONK’s key innovations is Goblin architecture that efficiently manages elliptic curve operations over BN254 used e.g. in signatures. Elliptic curve operations are collected in a queue during the circuit proving, but the proof of their correctness is deferred to the very end of the proving process. The final step of the proving is done over a different curve called Grumpkin, which is chosen to make these EC operations native (i.e. extremely efficient). The correctness of translation between BN254 and Grumpkin is handled by the Translator VM and the correctness of EC operations is proven by the ECCVM.

    CHONK also introduces a folding scheme inspired by HyperNova for more memory-efficient proving of recursive smart contract calls. In this case different smart contract are represented by different circuits, which are proven separately and then aggregated. The folding scheme allows efficient aggregation of these proofs that results in only one expensive polynomial commitment check in the end, instead of having to check it for each smart contract call.

    For more technical details on CHONK see here.

    Noir and trusted setups

    Although not technically a part of Barretenberg proving repo, Noir language represents the most developer-friendly way to create circuits to be proven with UltraHonk or CHONK. It’s a domain-specific language inspired by Rust.

    All Barretenberg proving systems extend Plonk, which is based on KZG commitment schemes. That requires a trusted setup, which is chosen to be Aztec Ignition trusted setup. Some internal proofs, like ECCVM proof, are based on IPA (inner product argument) and thus they require no trusted setup.

    Aztec Ignition

    UltraHonk

    Detailed description

    Aztec Ignition is a trusted setup ceremony for KZG commitments over BN254 curve that was run by Aztec for KZG commitment over BN254 curve in 2019. It included 176 participants and was publicly open for participation.

    List of different onchain verifiers for this proving system. Unique ID distinguishes differents deployments of the same verifier from different verifiers (e.g. different versions).

    Plonk: UltraHonk

    A KZG-based PLONKish proving system featuring many optimizations, including a sumcheck argument over a boolean hypercube. Developed by Aztec as a part of Barretenberg library.

    Verifier
    Verification
    Used in
    Known deployments
    Barretenberg Aztec verifier v4
    by
    Aztec Network logo