plonky2/src/lib.rs
Daniel Lubarov 8438d23937
Tree of scopes (#106)
* Tree of scopes

This is an extension of the context concept.

Earlier I was planning to store a simple stack of contexts, but I ended up storing the whole history, in a tree structure. This gives us more control over the output, i.e. we can print the gate count of a parent scope before those of its child scopes, which seems more user-friendly.

Sample gate count output:

    [2021-07-19T18:09:24Z INFO  plonky2::circuit_builder] 27829 gates to root
    [2021-07-19T18:09:24Z INFO  plonky2::circuit_builder] | 2373 gates to evaluate the vanishing polynomial at our challenge point, zeta.
    [2021-07-19T18:09:24Z INFO  plonky2::circuit_builder] | | 1284 gates to evaluate gate constraints
    [2021-07-19T18:09:24Z INFO  plonky2::circuit_builder] | 25312 gates to verify FRI proof
    [2021-07-19T18:09:24Z INFO  plonky2::circuit_builder] | | 650 gates to verify 0'th FRI query
    [2021-07-19T18:09:24Z INFO  plonky2::circuit_builder] | | | 96 gates to check FRI initial proof
    [2021-07-19T18:09:24Z INFO  plonky2::circuit_builder] | | | 65 gates to compute x from its index
    [2021-07-19T18:09:24Z INFO  plonky2::circuit_builder] | | | 233 gates to combine initial oracles
    ...

Sample copy constraint failure:

    Error: Copy constraint 'root > verify FRI proof > verify 0'th FRI query > check FRI initial proof > verify 0'th initial Merkle proof > check Merkle root: 0-th hash element' between wire 12 of gate #2550 [...] and wire 0 of gate #0 [...] is not satisfied. Got values of 6861386743364621393 and 0 respectively.

* No min

* info -> debug

* Move to its own file
2021-07-19 12:22:18 -07:00

31 lines
567 B
Rust

#![feature(destructuring_assignment)]
pub mod circuit_builder;
pub mod circuit_data;
pub mod context_tree;
pub mod copy_constraint;
pub mod field;
pub mod fri;
pub mod gadgets;
pub mod gates;
pub mod generator;
pub mod gmimc;
pub mod hash;
pub mod merkle_proofs;
mod merkle_tree;
mod permutation_argument;
pub mod plonk_challenger;
pub mod plonk_common;
pub mod polynomial;
pub mod proof;
pub mod prover;
pub mod recursive_verifier;
pub mod rescue;
pub mod target;
pub mod util;
pub mod vanishing_poly;
pub mod vars;
pub mod verifier;
pub mod wire;
pub mod witness;