Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
b2a5415
add system,gkr air
hero78119 Mar 6, 2026
95c6898
ceno_recursion_v2: stub inner agg prover
hero78119 Mar 7, 2026
bb3b9fd
ceno_recursion_v2: wire dependencies and run check
hero78119 Mar 7, 2026
3adbe99
ceno_recursion_v2: flesh out inner test
hero78119 Mar 7, 2026
09942ff
ceno_recursion_v2: move skills folder local
hero78119 Mar 9, 2026
69f31f9
fork proof-shape module and expose required shims
hero78119 Mar 9, 2026
db92602
docs: add proof shape and system specs
hero78119 Mar 9, 2026
93f16f4
wrap BatchConstraintModule around upstream
hero78119 Mar 10, 2026
6ae7bc2
format code
hero78119 Mar 10, 2026
6fc4241
docs: capture planned GKR refactor
hero78119 Mar 10, 2026
b30a493
Add placeholder GKR idx and claims
hero78119 Mar 10, 2026
3815879
Align GKR layer AIR with new loop counters
hero78119 Mar 10, 2026
a525323
feat(gkr): scaffold prod/logup claim splits
hero78119 Mar 11, 2026
e8ee89d
chore(gkr): remove bus extension traits
hero78119 Mar 11, 2026
1cbced2
fix(gkr): correct per-layer loops and logup folding
hero78119 Mar 11, 2026
913c5d4
refactor(gkr): add lambda-prime accumulators
hero78119 Mar 12, 2026
f4b69af
more comment
hero78119 Mar 12, 2026
1f33490
fix(gkr): thread idx through sumcheck
hero78119 Mar 12, 2026
ccf37ef
feat(gkr): echo lambda/mu via layer output
hero78119 Mar 12, 2026
9109a9a
chore(gkr): drop xi sampler wiring
hero78119 Mar 12, 2026
1b3e494
wip more trait type in RecursionProof
hero78119 Mar 12, 2026
349196a
bump p3 to 0.4.1
hero78119 Mar 13, 2026
1625324
stub recursion tracegen path
hero78119 Mar 13, 2026
5848f97
rng stub
hero78119 Mar 13, 2026
41e4037
Populate GKR traces from ZKVM proofs
hero78119 Mar 13, 2026
8ece50a
commit docs change
hero78119 Mar 13, 2026
27b3135
add cuda module
hero78119 Mar 13, 2026
1dde903
Align recursion CPU/CUDA tracegen with upstream
hero78119 Mar 16, 2026
ec7b757
Simplify GKR buses and inventory
hero78119 Mar 16, 2026
7b05252
separate raed/write count constraint
hero78119 Mar 17, 2026
f59d198
Add main module trace wiring
hero78119 Mar 17, 2026
15b5cb0
add main sumcheck final eval airs
hero78119 Mar 17, 2026
77a3162
Refactor expression tracegen for recursion vk
hero78119 Mar 17, 2026
f6f2f23
use upstream SystemParam
hero78119 Mar 18, 2026
2568f0b
simplify and cleanup proof-shape
hero78119 Mar 18, 2026
e643b77
misc: update specs
hero78119 Mar 18, 2026
786a195
wip: investigate unittest output
hero78119 Mar 18, 2026
f631c17
Add diagnostics for subcircuit proving context failures
hero78119 Mar 18, 2026
91cc6ec
wip: unittest debug constraint panic
hero78119 Mar 18, 2026
882580d
Checkpoint local inner-circuit fork scaffold
hero78119 Mar 18, 2026
4cc427e
Re-enable inner pre/post context wiring for proving ctx
hero78119 Mar 18, 2026
6b1a269
Align inner-circuit RecursionProof fork and refresh migration skill
hero78119 Mar 19, 2026
d2bfbed
Fork transcript tracegen for RecursionProof and wire system module
hero78119 Mar 19, 2026
a9ebe3e
Patch stark-backend deps to hero78119 develop-v2 fork
hero78119 Mar 19, 2026
a45fcfe
Make placeholder traces width-correct and use real pow/exp tracegen
hero78119 Mar 19, 2026
e902c5f
misc: fmt
hero78119 Mar 19, 2026
c017ecf
rename gkr -> tower
hero78119 Mar 19, 2026
7bc2858
refactor(system): use local BusInventory in aggregation interfaces
hero78119 Mar 19, 2026
2d9c232
Refactor preflight transcript replay across proof-shape/main/tower
hero78119 Mar 19, 2026
f393565
Scaffold BatchConstraintModule and park system wiring behind TODOs
hero78119 Mar 19, 2026
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
686 changes: 461 additions & 225 deletions Cargo.lock

Large diffs are not rendered by default.

25 changes: 13 additions & 12 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ members = [
"ceno_serde",
"ceno_rt",
"ceno_zkvm",
"ceno_recursion",
"derive",
"examples-builder",
"examples",
"guest_libs/*",
]
exclude = ["ceno_recursion_v2", "ceno_recursion"]
resolver = "2"

[workspace.package]
Expand All @@ -27,16 +27,17 @@ version = "0.1.0"
ceno_crypto_primitives = { git = "https://github.com/scroll-tech/ceno-patch.git", package = "ceno_crypto_primitives", branch = "main" }
ceno_syscall = { git = "https://github.com/scroll-tech/ceno-patch.git", package = "ceno_syscall", branch = "main" }

ff_ext = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "ff_ext", tag = "v1.0.0-alpha.22" }
mpcs = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "mpcs", tag = "v1.0.0-alpha.22" }
multilinear_extensions = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "multilinear_extensions", tag = "v1.0.0-alpha.22" }
p3 = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "p3", tag = "v1.0.0-alpha.22" }
poseidon = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "poseidon", tag = "v1.0.0-alpha.22" }
sp1-curves = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sp1-curves", tag = "v1.0.0-alpha.22" }
sumcheck = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sumcheck", tag = "v1.0.0-alpha.22" }
transcript = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "transcript", tag = "v1.0.0-alpha.22" }
whir = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "whir", tag = "v1.0.0-alpha.22" }
witness = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "witness", tag = "v1.0.0-alpha.22" }
ff_ext = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "ff_ext", branch = "feat/bump-p3" }
mpcs = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "mpcs", branch = "feat/bump-p3", features = ["whir"] }
multilinear_extensions = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "multilinear_extensions", branch = "feat/bump-p3" }
p3 = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "p3", branch = "feat/bump-p3" }
p3-field = { version = "=0.4.1", default-features = false }
poseidon = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "poseidon", branch = "feat/bump-p3" }
sp1-curves = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sp1-curves", branch = "feat/bump-p3" }
sumcheck = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sumcheck", branch = "feat/bump-p3" }
transcript = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "transcript", branch = "feat/bump-p3" }
whir = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "whir", branch = "feat/bump-p3" }
witness = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "witness", branch = "feat/bump-p3" }

anyhow = { version = "1.0", default-features = false }
bincode = "1"
Expand All @@ -60,7 +61,7 @@ proptest = "1"
rand = "0.8"
rand_chacha = { version = "0.3", features = ["serde1"] }
rand_core = "0.6"
rayon = "1.10"
rayon = "^1.11"
rustc-hash = "2.0.0"
secp = "0.4.1"
serde = { version = "1.0", features = ["derive", "rc"] }
Expand Down
3 changes: 1 addition & 2 deletions ceno_cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ tikv-jemallocator = { version = "0.6", optional = true }

ceno_emul = { path = "../ceno_emul" }
ceno_host = { path = "../ceno_host" }
ceno_recursion = { path = "../ceno_recursion" }
ceno_zkvm = { path = "../ceno_zkvm" }

openvm-circuit.workspace = true
Expand All @@ -49,7 +48,7 @@ mpcs.workspace = true
vergen-git2 = { version = "9.1.0", features = ["build", "cargo", "rustc", "emit_and_set"] }

[features]
gpu = ["gkr_iop/gpu", "ceno_zkvm/gpu", "ceno_recursion/gpu", "dep:openvm-cuda-backend", "openvm-native-circuit/cuda"]
gpu = ["gkr_iop/gpu", "ceno_zkvm/gpu", "dep:openvm-cuda-backend", "openvm-native-circuit/cuda"]
jemalloc = ["dep:tikv-jemallocator", "ceno_zkvm/jemalloc"]
jemalloc-prof = ["jemalloc", "tikv-jemallocator?/profiling"]
nightly-features = [
Expand Down
2 changes: 1 addition & 1 deletion ceno_cli/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1 +1 @@
pub mod sdk;
// SDK temporarily disabled due to OpenVM dependency incompatibility
2 changes: 1 addition & 1 deletion ceno_recursion/src/aggregation/internal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ use openvm_stark_sdk::{
config::{FriParameters, baby_bear_poseidon2::BabyBearPoseidon2Config},
openvm_stark_backend::p3_field::PrimeField32,
};
use p3::field::FieldAlgebra;
use p3_field::PrimeCharacteristicRing as FieldAlgebra;

use openvm_continuations::verifier::{
common::{
Expand Down
5 changes: 3 additions & 2 deletions ceno_recursion/src/aggregation/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ use openvm_continuations::{
internal::types::{InternalVmVerifierInput, InternalVmVerifierPvs, VmStarkProof},
},
};
use crate::field_ext::CanonicalFieldExt;
#[cfg(feature = "gpu")]
use openvm_cuda_backend::engine::GpuBabyBearPoseidon2Engine as BabyBearPoseidon2Engine;
use openvm_native_circuit::{NativeBuilder, NativeConfig};
Expand Down Expand Up @@ -56,7 +57,7 @@ use openvm_stark_sdk::{
openvm_stark_backend::keygen::types::MultiStarkVerifyingKey,
p3_bn254_fr::Bn254Fr,
};
use p3::field::FieldAlgebra;
use p3_field::PrimeCharacteristicRing as FieldAlgebra;
use serde::{Deserialize, Serialize};
use std::{borrow::Borrow, sync::Arc, time::Instant};
pub type RecPcs = Basefold<E, BasefoldRSParams>;
Expand Down Expand Up @@ -720,7 +721,7 @@ mod tests {
};
use mpcs::{Basefold, BasefoldRSParams};
use openvm_stark_sdk::{config::setup_tracing_with_log_level, p3_bn254_fr::Bn254Fr};
use p3::field::FieldAlgebra;
use p3_field::PrimeCharacteristicRing as FieldAlgebra;
use std::fs::File;

pub fn aggregation_inner_thread() {
Expand Down
6 changes: 4 additions & 2 deletions ceno_recursion/src/arithmetics/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ use openvm_native_circuit::EXT_DEG;
use openvm_native_compiler::prelude::*;
use openvm_native_compiler_derive::iter_zip;
use openvm_native_recursion::challenger::{FeltChallenger, duplex::DuplexChallengerVariable};
use openvm_stark_backend::p3_field::{FieldAlgebra, FieldExtensionAlgebra};
use openvm_stark_backend::p3_field::{FieldExtensionAlgebra, PrimeCharacteristicRing as FieldAlgebra};
use crate::field_ext::CanonicalFieldExt;

type E = BabyBearExt4;
const MAX_NUM_VARS: usize = 25;
Expand Down Expand Up @@ -1060,7 +1061,8 @@ mod tests {
conversion::{CompilerOptions, convert_program},
ir::Ext,
};
use p3::{babybear::BabyBear, field::FieldAlgebra};
use p3::babybear::BabyBear;
use p3_field::PrimeCharacteristicRing as FieldAlgebra;

use crate::arithmetics::eval_stacked_wellform_address_vec;

Expand Down
4 changes: 2 additions & 2 deletions ceno_recursion/src/basefold_verifier/field.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ const TWO_ADIC_GENERATORS: [usize; 33] = [
];

use openvm_native_compiler::prelude::*;
use p3_field::FieldAlgebra;
use p3_field::PrimeCharacteristicRing as FieldAlgebra;

fn two_adic_generator<C: Config>(
builder: &mut Builder<C>,
Expand All @@ -51,4 +51,4 @@ fn two_adic_generator<C: Config>(
builder.set_value(&two_adic_generator, i, C::F::from_canonical_usize(TWO_ADIC_GENERATORS[i.value()]));
});
builder.get(&two_adic_generator, bits)
}
}
2 changes: 1 addition & 1 deletion ceno_recursion/src/basefold_verifier/mmcs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ pub mod tests {
use openvm_native_circuit::{Native, NativeConfig};
use openvm_native_compiler::asm::AsmBuilder;
use openvm_native_recursion::hints::Hintable;
use p3::field::FieldAlgebra;
use p3_field::PrimeCharacteristicRing as FieldAlgebra;

use super::{E, F, MmcsCommitment, MmcsVerifierInput, mmcs_verify_batch};

Expand Down
4 changes: 3 additions & 1 deletion ceno_recursion/src/basefold_verifier/query_phase.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@ use openvm_native_recursion::{
use openvm_stark_sdk::p3_baby_bear::BabyBear;
use p3::{
commit::ExtensionMmcs,
field::{Field, FieldAlgebra},
field::Field,
};
use p3_field::PrimeCharacteristicRing as FieldAlgebra;
use serde::Deserialize;

use super::{basefold::*, extension_mmcs::*, mmcs::*, rs::*, utils::*};
use crate::{arithmetics::eq_eval_with_index, tower_verifier::binding::*};
use crate::field_ext::CanonicalFieldExt;

pub type F = BabyBear;
pub type E = BabyBearExt4;
Expand Down
6 changes: 4 additions & 2 deletions ceno_recursion/src/basefold_verifier/rs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ use std::{cell::RefCell, collections::BTreeMap};
use openvm_native_compiler::{asm::AsmConfig, prelude::*};
use openvm_native_recursion::hints::Hintable;
use openvm_stark_sdk::p3_baby_bear::BabyBear;
use p3::field::{FieldAlgebra, extension::BinomialExtensionField};
use p3::field::extension::BinomialExtensionField;
use p3_field::PrimeCharacteristicRing as FieldAlgebra;
use serde::Deserialize;

use super::{structs::*, utils::pow_felt_bits};
Expand Down Expand Up @@ -230,7 +231,8 @@ pub mod tests {
use openvm_stark_sdk::{
config::baby_bear_poseidon2::BabyBearPoseidon2Config, p3_baby_bear::BabyBear,
};
use p3::field::{FieldAlgebra, extension::BinomialExtensionField};
use p3::field::extension::BinomialExtensionField;
use p3_field::PrimeCharacteristicRing as FieldAlgebra;

type SC = BabyBearPoseidon2Config;

Expand Down
3 changes: 2 additions & 1 deletion ceno_recursion/src/basefold_verifier/utils.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use openvm_native_compiler::ir::*;
use openvm_native_recursion::vars::HintSlice;
use p3::{babybear::BabyBear, field::FieldAlgebra};
use p3::babybear::BabyBear;
use p3_field::PrimeCharacteristicRing as FieldAlgebra;

use crate::basefold_verifier::mmcs::MmcsProof;

Expand Down
5 changes: 3 additions & 2 deletions ceno_recursion/src/basefold_verifier/verifier.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ use openvm_native_recursion::challenger::{
duplex::DuplexChallengerVariable,
};
use openvm_stark_sdk::p3_baby_bear::BabyBear;
use p3::field::FieldAlgebra;
use p3_field::PrimeCharacteristicRing as FieldAlgebra;

pub type F = BabyBear;
pub type E = BabyBearExt4;
Expand Down Expand Up @@ -176,7 +176,8 @@ pub mod tests {
use openvm_native_recursion::{challenger::duplex::DuplexChallengerVariable, hints::Hintable};
use openvm_stark_backend::p3_challenger::GrindingChallenger;
use openvm_stark_sdk::{config::baby_bear_poseidon2::Challenger, p3_baby_bear::BabyBear};
use p3::field::{Field, FieldAlgebra};
use p3::field::Field;
use p3_field::PrimeCharacteristicRing as FieldAlgebra;
use rand::thread_rng;
use serde::Deserialize;
use transcript::{BasicTranscript, Transcript};
Expand Down
2 changes: 1 addition & 1 deletion ceno_recursion/src/extensions/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ mod tests {
};
use openvm_stark_backend::{
config::StarkGenericConfig,
p3_field::{Field, FieldAlgebra},
p3_field::{Field, PrimeCharacteristicRing as FieldAlgebra},
};
use openvm_stark_sdk::{
config::baby_bear_poseidon2::BabyBearPoseidon2Config, p3_baby_bear::BabyBear,
Expand Down
1 change: 1 addition & 0 deletions ceno_recursion/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#![allow(clippy::too_many_arguments)]
mod arithmetics;
mod basefold_verifier;
mod field_ext;
pub mod constants;
mod tower_verifier;
mod transcript;
Expand Down
5 changes: 3 additions & 2 deletions ceno_recursion/src/tower_verifier/program.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ use crate::{
use openvm_native_compiler::prelude::*;
use openvm_native_compiler_derive::iter_zip;
use openvm_native_recursion::challenger::{FeltChallenger, duplex::DuplexChallengerVariable};
use openvm_stark_backend::p3_field::FieldAlgebra;
use openvm_stark_backend::p3_field::PrimeCharacteristicRing as FieldAlgebra;
use crate::field_ext::CanonicalFieldExt;
const NATIVE_SUMCHECK_CTX_LEN: usize = 9;

pub fn iop_verifier_state_verify<C: Config>(
Expand Down Expand Up @@ -494,7 +495,7 @@ pub fn verify_tower_proof<C: Config>(
// use p3_baby_bear::BabyBear;
// use p3_field::extension::BinomialExtensionField;
// use p3_field::Field;
// use p3_field::FieldAlgebra;
// use p3_field::PrimeCharacteristicRing as FieldAlgebra;
// use rand::thread_rng;
//
// type F = BabyBear;
Expand Down
3 changes: 1 addition & 2 deletions ceno_recursion/src/transcript/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@ use openvm_native_compiler::prelude::*;
use openvm_native_recursion::challenger::{
CanObserveVariable, CanSampleBitsVariable, duplex::DuplexChallengerVariable,
};
use openvm_stark_backend::p3_field::FieldAlgebra;

use crate::arithmetics::challenger_multi_observe;
use crate::field_ext::CanonicalFieldExt;

pub fn transcript_observe_label<C: Config>(
builder: &mut Builder<C>,
Expand Down
3 changes: 2 additions & 1 deletion ceno_recursion/src/zkvm_verifier/binding.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,11 @@ use openvm_native_compiler::{
};
use openvm_native_compiler_derive::iter_zip;
use openvm_native_recursion::hints::{Hintable, VecAutoHintable};
use openvm_stark_backend::p3_field::{FieldAlgebra, extension::BinomialExtensionField};
use openvm_stark_backend::p3_field::{PrimeCharacteristicRing as FieldAlgebra, extension::BinomialExtensionField};
use openvm_stark_sdk::p3_baby_bear::BabyBear;
use p3::field::FieldExtensionAlgebra;
use sumcheck::structs::IOPProof;
use crate::field_ext::CanonicalFieldExt;

pub type F = BabyBear;
pub type E = BinomialExtensionField<F, 4>;
Expand Down
3 changes: 2 additions & 1 deletion ceno_recursion/src/zkvm_verifier/verifier.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,9 @@ use openvm_native_compiler_derive::iter_zip;
use openvm_native_recursion::challenger::{
CanObserveVariable, FeltChallenger, duplex::DuplexChallengerVariable,
};
use openvm_stark_backend::p3_field::FieldAlgebra;
use openvm_stark_backend::p3_field::PrimeCharacteristicRing as FieldAlgebra;
use p3::babybear::BabyBear;
use crate::field_ext::CanonicalFieldExt;

type F = BabyBear;
type E = BabyBearExt4;
Expand Down
Loading
Loading