Skip to content
Merged
Changes from all commits
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
15 changes: 11 additions & 4 deletions prover/src/continuation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,13 @@ fn global_memory_configs(
) -> Vec<PageConfig> {
let image = build_initial_image_paged(elf, private_inputs);
let init_page_data = build_init_page_data(&image);
global_memory_configs_from_init_page_data(boundaries, &init_page_data)
}

fn global_memory_configs_from_init_page_data(
boundaries: &[Vec<CellBoundary>],
init_page_data: &HashMap<u64, Vec<u8>>,
) -> Vec<PageConfig> {
let touched_pages: std::collections::BTreeSet<u64> = boundaries
.iter()
.flatten()
Expand Down Expand Up @@ -504,9 +511,8 @@ fn verify_epoch(
/// epoch's `init` and every genesis value matches the ELF.
fn prove_global(
boundaries: &[Vec<CellBoundary>],
elf: &Elf,
elf_bytes: &[u8],
private_inputs: &[u8],
init_page_data: &HashMap<u64, Vec<u8>>,
opts: &ProofOptions,
) -> Result<MultiProof<F, E, ()>, Error> {
// Each cell's final state (boundaries are in epoch order, so the last fini wins).
Expand All @@ -523,7 +529,7 @@ fn prove_global(
}
}

let gm_configs = global_memory_configs(boundaries, elf, private_inputs);
let gm_configs = global_memory_configs_from_init_page_data(boundaries, init_page_data);

let mut l2g_traces: Vec<TraceTable<F, E>> = boundaries
.iter()
Expand Down Expand Up @@ -624,6 +630,7 @@ pub fn prove_continuation(
// The cross-epoch memory image, carried forward: epoch i+1's init is epoch i's
// fini, updated in place with each epoch's touched-cell final values.
let mut image = build_initial_image_paged(&elf, private_inputs);
let init_page_data = build_init_page_data(&image);
let mut provenance =
local_to_global::genesis_provenance(image.iter().map(|(a, v)| (a, v as u64)));

Expand Down Expand Up @@ -704,7 +711,7 @@ pub fn prove_continuation(
// One global LogUp over all the (kept) local-to-global tables.
let all_boundaries: Vec<Vec<CellBoundary>> =
epochs.iter().map(|e| e.boundary.clone()).collect();
let global = prove_global(&all_boundaries, &elf, elf_bytes, private_inputs, opts)?;
let global = prove_global(&all_boundaries, elf_bytes, &init_page_data, opts)?;

Ok(ContinuationProof {
epochs,
Expand Down
Loading