Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Recursion Circuit: snark-verifier-ce #1401

Draft
wants to merge 7 commits into
base: feat/migrate_compression
Choose a base branch
from
Draft
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
move recursion circuit into own package
z2trillion committed Aug 19, 2024
commit 58dccafd03336499afea2eb1f2b952eb63289d83
37 changes: 37 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -14,6 +14,7 @@ members = [
"aggregator",
"prover",
"compression",
"recursion",
]
resolver = "2"

3 changes: 0 additions & 3 deletions aggregator/src/lib.rs
Original file line number Diff line number Diff line change
@@ -6,8 +6,6 @@ mod aggregation;
mod batch;
/// blob struct and constants
mod blob;
/// Config to recursive aggregate multiple aggregations
mod recursion;
// This module implements `Chunk` related data types.
// A chunk is a list of blocks.
mod chunk;
@@ -31,7 +29,6 @@ pub use chunk::ChunkInfo;
pub use constants::MAX_AGG_SNARKS;
pub(crate) use constants::*;
pub use param::*;
pub use recursion::*;

mod mock_chunk;
pub use mock_chunk::MockChunkCircuit;
1 change: 0 additions & 1 deletion aggregator/src/tests.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
mod aggregation;
mod blob;
mod recursion;
mod rlc;

#[macro_export]
1 change: 1 addition & 0 deletions prover/Cargo.toml
Original file line number Diff line number Diff line change
@@ -12,6 +12,7 @@ bus-mapping = { path = "../bus-mapping", default-features = false }
compression = { path = "../compression" }
eth-types = { path = "../eth-types" }
mpt-zktrie = { path = "../zktrie" }
recursion = { path = "../recursion" }
zkevm-circuits = { path = "../zkevm-circuits", default-features = false }

snark-verifier.workspace = true
3 changes: 2 additions & 1 deletion prover/src/common/prover/recursion.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
use std::env;

use aggregator::{initial_recursion_snark, RecursionCircuit, StateTransition, MAX_AGG_SNARKS};
use aggregator::MAX_AGG_SNARKS;
use anyhow::Result;
use rand::Rng;
use recursion::{initial_recursion_snark, RecursionCircuit, StateTransition};
use snark_verifier_sdk::{gen_snark_shplonk, Snark};

use crate::{
3 changes: 2 additions & 1 deletion prover/src/recursion.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use halo2_proofs::halo2curves::bn256::Fr;

use aggregator::{BatchCircuit, StateTransition};
use aggregator::BatchCircuit;
use recursion::StateTransition;
use snark_verifier_sdk::Snark;

/// 4 fields for 2 hashes (Hi, Lo)
51 changes: 51 additions & 0 deletions recursion/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
[package]
name = "recursion"
version.workspace = true
edition.workspace = true
license.workspace = true

[dependencies]
aggregator = { path = "../aggregator" }
eth-types = { path = "../eth-types" }
gadgets = { path = "../gadgets" }
zkevm-circuits = { path = "../zkevm-circuits", default-features=false, features = ["debug-annotations", "parallel_syn"] }

ark-std.workspace = true
ctor.workspace = true
env_logger.workspace = true
ethers-core.workspace = true
hex.workspace = true
log.workspace = true
itertools.workspace = true
once_cell.workspace = true
serde.workspace = true
serde_json.workspace = true
rand.workspace = true
halo2-base.workspace = true
halo2-ecc.workspace = true
halo2_proofs.workspace = true
snark-verifier.workspace = true
snark-verifier-sdk.workspace = true
ce-snark-verifier-sdk.workspace = true
strum.workspace = true
strum_macros.workspace = true

# da-4844
revm-precompile.workspace = true
revm-primitives.workspace = true
c-kzg.workspace = true
num-bigint.workspace = true

# da-compression
bitstream-io = "2.2.0"
zstd-encoder = { package = "encoder", git = "https://github.com/scroll-tech/da-codec.git", tag = "v0.1.0" }

[dev-dependencies]

csv = "1.1"

[features]
default = ["revm-precompile/c-kzg"]
print-trace = ["ark-std/print-trace"]
# This feature is useful for unit tests where we check the SAT of pi batch circuit
disable_proof_aggregation = []
Original file line number Diff line number Diff line change
@@ -25,7 +25,7 @@ use sv_halo2_base::{
QuantumCell::Existing,
};

use crate::param::ConfigParams as RecursionCircuitConfigParams;
use aggregator::ConfigParams as RecursionCircuitConfigParams;

use super::*;

File renamed without changes.
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@ use snark_verifier::loader::halo2::halo2_ecc::{
halo2_base::gates::{flex_gate::FlexGateConfig, range::RangeConfig},
};

use crate::param::ConfigParams as RecursionCircuitConfigParams;
use aggregator::ConfigParams as RecursionCircuitConfigParams;

use super::*;

4 changes: 1 addition & 3 deletions aggregator/src/recursion.rs → recursion/src/lib.rs
Original file line number Diff line number Diff line change
@@ -37,12 +37,10 @@ use snark_verifier::{
};
use snark_verifier_sdk::{
types::{PoseidonTranscript, POSEIDON_SPEC},
CircuitExt, Snark,
CircuitExt, Snark, BITS, LIMBS,
};
use sv_halo2_base::halo2_proofs;

use crate::constants::{BITS, LIMBS};

/// Any data that can be recursively bundled must implement the described state transition
/// trait.
pub trait StateTransition: Sized {
File renamed without changes.
File renamed without changes.