Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
209 commits
Select commit Hold shift + click to select a range
fcb8ed5
Dense Matrix
Apr 22, 2025
66c7734
Added hints
Apr 22, 2025
6f8fe11
Finished get_base_codeword_dimensions
Apr 23, 2025
3813078
WIP mmcs
Apr 23, 2025
b10539b
WIP mmcs
Apr 24, 2025
8c35009
Update mmcs
Apr 25, 2025
3afc01b
WIP mmcs
Apr 26, 2025
1156331
Finished MMCS
Apr 28, 2025
18aef52
Added dot_product
Apr 29, 2025
31cd29c
query_phase input
Apr 29, 2025
85f00f2
WIP query_phase
Apr 29, 2025
ef34a42
Fix bug in sorting
Apr 30, 2025
b63abd8
WIP query phase
May 1, 2025
2a5f3da
WIP query phase
May 1, 2025
f4c21af
WIP query phase
May 1, 2025
746f04f
WIP query phase
May 2, 2025
6f98a17
New Sorting Impl
May 4, 2025
8e3312b
WIP query phase
May 5, 2025
dda2fff
WIP query phase
May 6, 2025
39443ef
WIP query phase
May 6, 2025
520da7e
Finished query_phase encoding
May 6, 2025
282892f
Support serialized input
May 10, 2025
0dc7b56
Implement the naive encode small method
yczhangsjtu May 15, 2025
c06f3c9
Bug workaround
May 16, 2025
7da7077
Merge branch 'kunming/basefold-verifier' into cyte/remove-early-stopping
yczhangsjtu May 16, 2025
4553fc3
Temp store: starting to use openvm mmcs instruction
yczhangsjtu May 30, 2025
39fa15c
Temp store: index to bits
yczhangsjtu May 30, 2025
2acf9eb
Temp store: clean up mmcs
yczhangsjtu May 30, 2025
4ffe361
Temp store: clear compilation errors
yczhangsjtu May 30, 2025
fbeda8b
Merge e2e modification
yczhangsjtu Jun 3, 2025
629bb23
Fix compilation error
yczhangsjtu Jun 3, 2025
8044af5
Merge remote-tracking branch 'origin/main' into cyte/switch-mmcs
yczhangsjtu Jun 3, 2025
2516cf5
Fix hash variable reading bug
yczhangsjtu Jun 3, 2025
ba93b0b
Use dyn array for dimensions
yczhangsjtu Jun 3, 2025
ec5e218
Fix multiplication between var and ext
yczhangsjtu Jun 3, 2025
586bc0d
Fix mmcs reading
yczhangsjtu Jun 6, 2025
b35aa5d
Remove unnecessary witness stream
yczhangsjtu Jun 10, 2025
0b8d751
Add doc for generating mmcs test data
yczhangsjtu Jun 10, 2025
ac1cbfd
Try fixing mmcs
yczhangsjtu Jun 11, 2025
4f22895
Try fixing mmcs
yczhangsjtu Jun 11, 2025
0b66801
Try fixing mmcs
yczhangsjtu Jun 11, 2025
25c21c0
Add comment
yczhangsjtu Jun 11, 2025
edc4848
Use the same poseidon2 constants as the test data
yczhangsjtu Jun 11, 2025
c04e4b7
Specify branch for test data gen
yczhangsjtu Jun 11, 2025
d5c8baa
MMCS test passes
yczhangsjtu Jun 11, 2025
8029daa
Rewrite fold coeff according to current basefold code
yczhangsjtu Jun 13, 2025
c1e92b0
Fix
yczhangsjtu Jun 19, 2025
188eb85
Merge branch 'main' of https://github.com/scroll-tech/ceno-recursion-…
yczhangsjtu Jun 19, 2025
fa3210c
Merge branches 'cyte/fix-query-phase' and 'main' of https://github.co…
yczhangsjtu Jun 23, 2025
e28b481
Merge e2e modification
yczhangsjtu Jun 23, 2025
dd6d6bd
Fix compilation errors from merge
yczhangsjtu Jun 23, 2025
6ba1fea
Fix compilation errors from merge
yczhangsjtu Jun 23, 2025
5c2b6b5
Fix compilation errors from merge
yczhangsjtu Jun 23, 2025
8cb2ad7
(WIP) Connecting e2e with query phase
yczhangsjtu Jun 23, 2025
cde8886
Merge remote-tracking branch 'origin/main' into cyte/fix-query-phase
kunxian-xia Jun 23, 2025
5361f3f
WIP
yczhangsjtu Jun 23, 2025
5f60470
Merge branch 'cyte/fix-query-phase' of https://github.com/scroll-tech…
yczhangsjtu Jun 23, 2025
37fb5f8
(WIP) transform ceno query phase verifier input to current
yczhangsjtu Jun 24, 2025
1feb92c
(WIP) Fix query phase transform
yczhangsjtu Jun 24, 2025
410e996
(WIP) Fix query phase transform
yczhangsjtu Jun 24, 2025
fbd5f1f
(WIP) Fix query phase transform
yczhangsjtu Jun 24, 2025
dd7951d
(WIP) Fix query phase transform
yczhangsjtu Jun 24, 2025
6f35d7b
Fix query phase transform
yczhangsjtu Jun 24, 2025
478ef69
Comment out connecting code temporarily
yczhangsjtu Jun 25, 2025
9689d1d
Query phase compile successful
yczhangsjtu Jun 25, 2025
94d4c13
(WIP) Debugging query phase
yczhangsjtu Jun 25, 2025
d0a45ca
Fix a bug in verifier query phase
yczhangsjtu Jun 26, 2025
8a61142
Read additional hints from binary file
yczhangsjtu Jun 26, 2025
f01ae48
Fix: batch opening (#28)
kunxian-xia Jul 8, 2025
6417088
Switch ceno reliance
yczhangsjtu Jul 11, 2025
4ac1628
Merge remote-tracking branch 'origin/main' into feat/simplify-basefol…
yczhangsjtu Jul 11, 2025
6069a53
Fix compilation errors due to out of date code
yczhangsjtu Jul 11, 2025
4e6d3e0
Update test query phase batch
yczhangsjtu Jul 14, 2025
07d2fba
Fix query opening proof
yczhangsjtu Jul 14, 2025
662396a
Implement basefold proof variable
yczhangsjtu Jul 15, 2025
e1c9ded
Update query phase verifier input
yczhangsjtu Jul 15, 2025
11fbced
Preparing test data for query phase with updated code
yczhangsjtu Jul 15, 2025
b6bdd1a
Implement basefold proof transform
yczhangsjtu Jul 15, 2025
a511a98
Prepare query phase verifier input
yczhangsjtu Jul 15, 2025
fc4e5ba
Prepare query phase verifier input
yczhangsjtu Jul 15, 2025
7ee316c
Fix final message access
yczhangsjtu Jul 16, 2025
0dc34f7
Switch ceno reliance to small field support
yczhangsjtu Jul 16, 2025
34f53ce
Create basefold verifier function
yczhangsjtu Jul 16, 2025
1dd84da
Check final message sizes
yczhangsjtu Jul 16, 2025
3744986
Fix final message size
yczhangsjtu Jul 16, 2025
ba814a5
Fix final message size
yczhangsjtu Jul 16, 2025
f130d21
Check query opening proof len
yczhangsjtu Jul 16, 2025
e883efb
Compute total number of polys
yczhangsjtu Jul 16, 2025
3629b44
Sample batch coeffs
yczhangsjtu Jul 16, 2025
12b81e3
Compute max_num_var
yczhangsjtu Jul 17, 2025
a68999b
Write sumcheck messages and commits to transcript
yczhangsjtu Jul 17, 2025
f9f244c
Write final message to transcript
yczhangsjtu Jul 17, 2025
89e5e7e
Complete the code for batch verifier
yczhangsjtu Jul 17, 2025
5ac05e7
Add verifier test
yczhangsjtu Jul 21, 2025
ac4cc44
Try to fix some compilation errors in e2e
yczhangsjtu Jul 21, 2025
33fba3d
Connecting pcs with e2e
yczhangsjtu Jul 21, 2025
21c4d41
Simplify BaseFold verifier (#34)
yczhangsjtu Jul 21, 2025
389e2b2
Merge remote-tracking branch 'origin/cyte/fix-query-phase' into feat/…
yczhangsjtu Jul 21, 2025
b6c3942
Fix some issues after merge
yczhangsjtu Jul 21, 2025
d5861f2
Make compilation pass temporarily
yczhangsjtu Jul 21, 2025
785bb58
Make test pass before query phase
yczhangsjtu Jul 21, 2025
71482b7
Merge remote-tracking branch 'origin/main' into cyte/fix-query-phase
kunxian-xia Jul 21, 2025
1c246a1
add multiple matrices as inputs to the basefold's unit test
kunxian-xia Jul 21, 2025
ba4ff69
fix
kunxian-xia Jul 21, 2025
c5f67c5
unit test passed
kunxian-xia Jul 21, 2025
24ba27e
support matrices that have same height
kunxian-xia Jul 21, 2025
f2faf8e
refactor tests
kunxian-xia Jul 21, 2025
d1269c2
Merge pull request #39 from scroll-tech/feat/basefold_multiple_mats
yczhangsjtu Jul 22, 2025
d3b6627
Merge remote
yczhangsjtu Jul 22, 2025
197ed35
Supply the permutation and make the random case pass
yczhangsjtu Jul 22, 2025
6824da4
Try fixing transcript inconsistency
yczhangsjtu Jul 22, 2025
db26b0f
Use bin to dec le
yczhangsjtu Jul 22, 2025
45a2c4c
Add pow witness
yczhangsjtu Jul 22, 2025
dcc4c5c
Basefold verifier passes for simple case
yczhangsjtu Jul 22, 2025
5aa023c
Update dependency
yczhangsjtu Jul 23, 2025
7e67692
Basefold verifier passes decreasing and random batches
yczhangsjtu Jul 23, 2025
88a78d7
update ceno dependencies
kunxian-xia Jul 23, 2025
eac11ed
comment out patch
kunxian-xia Jul 23, 2025
cd9f4d9
refactor
kunxian-xia Jul 23, 2025
32eacb6
the computation of max_num_var is simplified
kunxian-xia Jul 23, 2025
692f453
put perm to RoundVariable
kunxian-xia Jul 24, 2025
8e0911a
Change the way for computing batch
yczhangsjtu Jul 24, 2025
ec51a95
Remove the unnecessary slice
yczhangsjtu Jul 24, 2025
156f5e6
Simplify code
yczhangsjtu Jul 24, 2025
86476a1
Fix bug: the first mmcs batch verify passes
yczhangsjtu Jul 24, 2025
6f91a61
Initialize all zeros
yczhangsjtu Jul 24, 2025
ed96105
remove debug routines
kunxian-xia Jul 24, 2025
136c6b6
rename
kunxian-xia Jul 24, 2025
bc81fdb
clean
kunxian-xia Jul 24, 2025
a3c83e1
cleanup
kunxian-xia Jul 24, 2025
18fd5d3
ignore e2e test
kunxian-xia Jul 24, 2025
eba50fd
Complete Basefold verifier and Basefold e2e integration (#36)
yczhangsjtu Jul 24, 2025
75b0270
Merge remote
yczhangsjtu Jul 24, 2025
989eb3e
Fix
yczhangsjtu Jul 24, 2025
9d02328
Fix one bug: alpha is batch coeffs 1 not 0
yczhangsjtu Jul 24, 2025
946612f
Handle case when batch size is 1
yczhangsjtu Jul 24, 2025
d16990c
Allocate all zeros only once
yczhangsjtu Jul 25, 2025
64f47e7
Construct test multiple rounds and test with fibonacci e2e data
yczhangsjtu Jul 28, 2025
ad1b459
Add trace subscriber to profile cycles
yczhangsjtu Jul 28, 2025
2b8bf5b
Profile query phase
yczhangsjtu Jul 28, 2025
f988e21
Profile query phase
yczhangsjtu Jul 29, 2025
9dfcd39
Some small optimizations
yczhangsjtu Jul 30, 2025
0684e6b
Allocate opened values buffer outside query loop
yczhangsjtu Jul 30, 2025
444c3ab
Compute low high values buffer outside loop
yczhangsjtu Jul 30, 2025
ee50a8f
Compute alpha offset outside loop
yczhangsjtu Jul 30, 2025
b31940f
Remove batch coeffs offset
yczhangsjtu Jul 30, 2025
2963e88
Compute all zero slices outside loop
yczhangsjtu Jul 30, 2025
dfc2282
Remove round openings from loop
yczhangsjtu Jul 30, 2025
c841a51
Clean ups
yczhangsjtu Jul 30, 2025
147da66
Compute height outside loop
yczhangsjtu Jul 30, 2025
5b4d094
Compute permuted dimensions outside loop
yczhangsjtu Jul 30, 2025
22418cc
Merge two loops over openings
yczhangsjtu Jul 30, 2025
70705e1
Profile fri rounds
yczhangsjtu Jul 31, 2025
dbdd10f
Merge branch 'feat/basefold-verifier-e2e' into feat/basefold-optimize…
yczhangsjtu Jul 31, 2025
7a0b71e
Merge branch 'feat/basefold-optimize-batch' into feat/basefold-profil…
yczhangsjtu Jul 31, 2025
6186354
Merge remote-tracking branch 'origin/main' into feat/basefold-profile…
yczhangsjtu Jul 31, 2025
d6a423c
Fix compilation errors after merge
yczhangsjtu Jul 31, 2025
23f0eb5
Dependencies moved to dev
yczhangsjtu Jul 31, 2025
d070e31
Start profiling zkvm verifier
yczhangsjtu Aug 1, 2025
92188f3
Profile zkvm verifier
yczhangsjtu Aug 4, 2025
34e26ce
Profile read input
yczhangsjtu Aug 4, 2025
411a1ce
Optimize FRI round
yczhangsjtu Aug 4, 2025
77d4735
Small improve
yczhangsjtu Aug 4, 2025
2b26986
Small improve
yczhangsjtu Aug 4, 2025
d281473
Small improve
yczhangsjtu Aug 4, 2025
38075e0
Remove unnecessary computing coeff
yczhangsjtu Aug 4, 2025
d45c1e0
Profile read input
yczhangsjtu Aug 5, 2025
1d489d4
Flatten vec of iop messages
yczhangsjtu Aug 5, 2025
6d75bd2
Three dimensional vector flattened
yczhangsjtu Aug 5, 2025
9a78fb5
Merge remote-tracking branch 'origin/main' into feat/basefold-profile…
kunxian-xia Aug 5, 2025
17bf6ac
Fix unit test failed
yczhangsjtu Aug 6, 2025
6c309d6
Merge zkvm profile cycles
yczhangsjtu Aug 6, 2025
4cb5006
Fix typo
yczhangsjtu Aug 6, 2025
fb42c50
Remove comment
yczhangsjtu Aug 6, 2025
7c2c1df
Add one line back
yczhangsjtu Aug 6, 2025
a404da9
Remove printlns
yczhangsjtu Aug 6, 2025
68cb411
Remove cycle tracker
yczhangsjtu Aug 6, 2025
1c0f151
Merge remote-tracking branch 'origin/main' into feat/basefold-profile…
kunxian-xia Aug 6, 2025
0870a21
chore remove unused dev dependencies
kunxian-xia Aug 6, 2025
bd58b18
chore revert Cargo.lock changes
kunxian-xia Aug 6, 2025
d8ffe0c
Merge remote-tracking branch 'origin/main' into feat/zkvm-profile-cyc…
yczhangsjtu Aug 6, 2025
6d15b0b
Fix unit tests
yczhangsjtu Aug 6, 2025
80b3122
Merge branch 'feat/zkvm-profile-cycles-split-basefold' into feat/zkvm…
yczhangsjtu Aug 6, 2025
dc978b6
chore remove unused dependency
kunxian-xia Aug 6, 2025
c7146c1
Remove opening height from round context: duplicate of log2_height
yczhangsjtu Aug 7, 2025
e49a175
Merge branch 'feat/zkvm-profile-cycles-split-basefold' into feat/zkvm…
yczhangsjtu Aug 7, 2025
490a0b4
Compute low and high values buffer in loop
yczhangsjtu Aug 7, 2025
7f1b50a
Merge branch 'feat/zkvm-profile-cycles-split-basefold' into feat/zkvm…
yczhangsjtu Aug 7, 2025
91fed2c
Provide some comments
yczhangsjtu Aug 7, 2025
b41b949
Merge branch 'feat/zkvm-profile-cycles-split-basefold' into feat/zkvm…
yczhangsjtu Aug 7, 2025
181c583
All zeros slice computed in loop
yczhangsjtu Aug 7, 2025
09b7a48
Merge branch 'feat/zkvm-profile-cycles-split-basefold' into feat/zkvm…
yczhangsjtu Aug 7, 2025
19befdf
Optimize FRI round
yczhangsjtu Aug 4, 2025
c4505d5
Small improve
yczhangsjtu Aug 4, 2025
53adffa
Small improve
yczhangsjtu Aug 4, 2025
5724e01
Small improve
yczhangsjtu Aug 4, 2025
fba0e8a
Remove unnecessary computing coeff
yczhangsjtu Aug 4, 2025
5e38460
Fix small issues
yczhangsjtu Aug 7, 2025
f3923ee
Merge branch 'feat/zkvm-profile-cycles-split-basefold' into feat/zkvm…
yczhangsjtu Aug 7, 2025
5b9bbdf
Merge branch 'feat/zkvm-profile-cycles-split-fri' into feat/zkvm-prof…
yczhangsjtu Aug 7, 2025
b71287b
Merge main
yczhangsjtu Aug 7, 2025
9f42b6b
Merge from zkvm-profile-fri
yczhangsjtu Aug 7, 2025
e0c2995
Recover some commented cycle trackers
yczhangsjtu Aug 7, 2025
319000c
Recover some commented cycle trackers
yczhangsjtu Aug 7, 2025
5ee88b9
Clean up cycle trackers
yczhangsjtu Aug 7, 2025
a5fe7a8
Clean up
yczhangsjtu Aug 7, 2025
bbaa571
Improve comment
yczhangsjtu Aug 7, 2025
33a89b6
Merge branch 'feat/zkvm-profile-cycles-split-fri' into feat/zkvm-prof…
yczhangsjtu Aug 7, 2025
0bb34b1
Merge remote-tracking branch 'origin/main' into feat/zkvm-profile-cycles
yczhangsjtu Aug 8, 2025
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
28 changes: 5 additions & 23 deletions src/basefold_verifier/query_phase.rs
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,6 @@ pub(crate) fn batch_verifier_query_phase<C: Config>(
builder: &mut Builder<C>,
input: QueryPhaseVerifierInputVariable<C>,
) {
builder.cycle_tracker_start("Before checking opening proofs");
let inv_2 = builder.constant(C::F::from_canonical_u32(0x3c000001));
let two_adic_generators_inverses: Array<C, Felt<C::F>> = builder.dyn_array(28);
for (index, val) in [
Expand Down Expand Up @@ -393,11 +392,11 @@ pub(crate) fn batch_verifier_query_phase<C: Config>(
input.proof.commits.len() + Usize::from(1),
input.fold_challenges.len(),
);
builder.cycle_tracker_end("Before checking opening proofs");

builder.cycle_tracker_start("Build round context");
let rounds_context: Array<C, RoundContextVariable<C>> = builder.dyn_array(input.rounds.len());
let batch_coeffs_offset: Var<C::N> = builder.constant(C::N::ZERO);

builder.cycle_tracker_start("Construct round context");
iter_zip!(builder, input.rounds, rounds_context).for_each(|ptr_vec, builder| {
let round = builder.iter_ptr_get(&input.rounds, ptr_vec[0]);
// This buffer is not initialized here in providing the context.
Expand Down Expand Up @@ -465,13 +464,10 @@ pub(crate) fn batch_verifier_query_phase<C: Config>(
};
builder.iter_ptr_set(&rounds_context, ptr_vec[1], round_context);
});
builder.cycle_tracker_end("Build round context");
builder.cycle_tracker_end("Construct round context");

builder.cycle_tracker_start("Checking opening proofs");
iter_zip!(builder, input.indices, input.proof.query_opening_proof).for_each(
|ptr_vec, builder| {
builder.cycle_tracker_start("Checking opening proofs (per index)");
builder.cycle_tracker_start("Prepare");
// TODO: change type of input.indices to be `Array<C, Array<C, Var<C::N>>>`
let idx = builder.iter_ptr_get(&input.indices, ptr_vec[0]);
let idx = builder.unsafe_cast_var_to_felt(idx);
Expand All @@ -496,9 +492,8 @@ pub(crate) fn batch_verifier_query_phase<C: Config>(
builder.set_value(&reduced_codeword_by_height, ptr_vec[0], zero_codeword);
});
let query = builder.iter_ptr_get(&input.proof.query_opening_proof, ptr_vec[1]);
builder.cycle_tracker_end("Prepare");

builder.cycle_tracker_start("MMCS Verify Loop Rounds");
builder.cycle_tracker_start("Batching and first FRI round");
iter_zip!(builder, query.input_proofs, input.rounds, rounds_context).for_each(
|ptr_vec, builder| {
let batch_opening = builder.iter_ptr_get(&query.input_proofs, ptr_vec[0]);
Expand Down Expand Up @@ -584,9 +579,7 @@ pub(crate) fn batch_verifier_query_phase<C: Config>(
mmcs_verify_batch(builder, mmcs_verifier_input);
},
);
builder.cycle_tracker_end("MMCS Verify Loop Rounds");

builder.cycle_tracker_start("Initial folding");
builder.cycle_tracker_end("Batching and first FRI round");
let opening_ext = query.commit_phase_openings;

// fold 1st codeword
Expand Down Expand Up @@ -614,7 +607,6 @@ pub(crate) fn batch_verifier_query_phase<C: Config>(
// check commit phases
let commits = &input.proof.commits;
builder.assert_eq::<Var<C::N>>(commits.len(), opening_ext.len());
builder.cycle_tracker_end("Initial folding");
builder.cycle_tracker_start("FRI rounds");
let i: Var<C::N> = builder.constant(C::N::ZERO);
iter_zip!(builder, commits, opening_ext).for_each(|ptr_vec, builder| {
Expand Down Expand Up @@ -697,8 +689,6 @@ pub(crate) fn batch_verifier_query_phase<C: Config>(
builder.assign(&i, i_plus_one);
});
builder.cycle_tracker_end("FRI rounds");

builder.cycle_tracker_start("Finalizing");
// assert that final_value[i] = folded
let final_idx: Var<C::N> = builder.constant(C::N::ZERO);
builder
Expand All @@ -713,13 +703,8 @@ pub(crate) fn batch_verifier_query_phase<C: Config>(
});
let final_value = builder.get(&final_codeword.values, final_idx);
builder.assert_eq::<Ext<C::F, C::EF>>(final_value, folded);
builder.cycle_tracker_end("Finalizing");
builder.cycle_tracker_end("Checking opening proofs (per index)");
},
);
builder.cycle_tracker_end("Checking opening proofs");

builder.cycle_tracker_start("Checking sumcheck proofs");
// 1. check initial claim match with first round sumcheck value
let batch_coeffs_offset: Var<C::N> = builder.constant(C::N::ZERO);
let expected_sum: Ext<C::F, C::EF> = builder.constant(C::EF::ZERO);
Expand Down Expand Up @@ -766,9 +751,7 @@ pub(crate) fn batch_verifier_query_phase<C: Config>(
let right: Ext<C::F, C::EF> = builder.eval(eval0 + eval1);
builder.assert_eq::<Ext<C::F, C::EF>>(left, right);
});
builder.cycle_tracker_end("Checking sumcheck proofs");

builder.cycle_tracker_start("Checking final evaluations");
// 3. check final evaluation are correct
let final_evals = builder
.get(&input.proof.sumcheck_proof, fold_len_minus_one.clone())
Expand Down Expand Up @@ -816,7 +799,6 @@ pub(crate) fn batch_verifier_query_phase<C: Config>(
});
builder.assert_eq::<Var<C::N>>(j, input.proof.final_message.len());
builder.assert_eq::<Ext<C::F, C::EF>>(left, right);
builder.cycle_tracker_end("Checking final evaluations");
}

#[cfg(test)]
Expand Down
3 changes: 2 additions & 1 deletion src/basefold_verifier/verifier.rs
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,8 @@ pub mod tests {

let system_config = SystemConfig::default()
.with_public_values(4)
.with_max_segment_len((1 << 25) - 100);
.with_max_segment_len((1 << 25) - 100)
.with_profiling();
let config = NativeConfig::new(system_config, Native);

let executor = VmExecutor::<BabyBear, NativeConfig>::new(config);
Expand Down
50 changes: 35 additions & 15 deletions src/e2e/mod.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use crate::basefold_verifier::basefold::BasefoldCommitment;
use crate::tower_verifier::binding::IOPProverMessage;
use crate::tower_verifier::binding::IOPProverMessageVec;
use crate::zkvm_verifier::binding::{TowerProofInput, ZKVMChipProofInput, ZKVMProofInput, E, F};
use crate::zkvm_verifier::verifier::verify_zkvm_proof;

Expand Down Expand Up @@ -81,10 +81,11 @@ pub fn parse_zkvm_proof_import(

// Tower proof
let mut tower_proof = TowerProofInput::default();
let mut proofs: Vec<Vec<IOPProverMessage>> = vec![];
let mut proofs: Vec<IOPProverMessageVec> = vec![];

for proof in &chip_proof.tower_proof.proofs {
let mut proof_messages: Vec<IOPProverMessage> = vec![];
let mut proof_messages: Vec<E> = vec![];
let mut prover_message_size = None;
for m in proof {
let mut evaluations_vec: Vec<E> = vec![];

Expand All @@ -93,11 +94,17 @@ pub fn parse_zkvm_proof_import(
serde_json::from_value(serde_json::to_value(v.clone()).unwrap()).unwrap();
evaluations_vec.push(v_e);
}
proof_messages.push(IOPProverMessage {
evaluations: evaluations_vec,
});
if let Some(size) = prover_message_size {
assert_eq!(size, evaluations_vec.len());
} else {
prover_message_size = Some(evaluations_vec.len());
}
proof_messages.extend_from_slice(&evaluations_vec);
}
proofs.push(proof_messages);
proofs.push(IOPProverMessageVec {
prover_message_size: prover_message_size.unwrap(),
data: proof_messages,
});
}
tower_proof.num_proofs = proofs.len();
tower_proof.proofs = proofs;
Expand All @@ -118,7 +125,7 @@ pub fn parse_zkvm_proof_import(
prod_specs_eval.push(inner_v);
}
tower_proof.num_prod_specs = prod_specs_eval.len();
tower_proof.prod_specs_eval = prod_specs_eval;
tower_proof.prod_specs_eval = prod_specs_eval.into();

let mut logup_specs_eval: Vec<Vec<Vec<E>>> = vec![];
for inner_val in &chip_proof.tower_proof.logup_specs_eval {
Expand All @@ -136,23 +143,36 @@ pub fn parse_zkvm_proof_import(
logup_specs_eval.push(inner_v);
}
tower_proof.num_logup_specs = logup_specs_eval.len();
tower_proof.logup_specs_eval = logup_specs_eval;
tower_proof.logup_specs_eval = logup_specs_eval.into();

// main constraint and select sumcheck proof
let mut main_sumcheck_proofs: Vec<IOPProverMessage> = vec![];
if chip_proof.main_sumcheck_proofs.is_some() {
let main_sumcheck_proofs = if chip_proof.main_sumcheck_proofs.is_some() {
let mut main_sumcheck_proofs: Vec<E> = vec![];
let mut prover_message_size = None;
for m in chip_proof.main_sumcheck_proofs.as_ref().unwrap() {
let mut evaluations_vec: Vec<E> = vec![];
for v in &m.evaluations {
let v_e: E =
serde_json::from_value(serde_json::to_value(v.clone()).unwrap()).unwrap();
evaluations_vec.push(v_e);
}
main_sumcheck_proofs.push(IOPProverMessage {
evaluations: evaluations_vec,
});
main_sumcheck_proofs.extend_from_slice(&evaluations_vec);
if let Some(size) = prover_message_size {
assert_eq!(size, evaluations_vec.len());
} else {
prover_message_size = Some(evaluations_vec.len());
}
}
}
IOPProverMessageVec {
prover_message_size: prover_message_size.unwrap(),
data: main_sumcheck_proofs,
}
} else {
IOPProverMessageVec {
prover_message_size: 0,
data: vec![],
}
};

let mut wits_in_evals: Vec<E> = vec![];
for v in &chip_proof.wits_in_evals {
Expand Down
Loading
Loading