Skip to content

Commit 84798b8

Browse files
authored
Reuse genesis page data for continuation global proof (#720)
1 parent abaedc6 commit 84798b8

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

prover/src/continuation.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,13 @@ fn global_memory_configs(
201201
) -> Vec<PageConfig> {
202202
let image = build_initial_image_paged(elf, private_inputs);
203203
let init_page_data = build_init_page_data(&image);
204+
global_memory_configs_from_init_page_data(boundaries, &init_page_data)
205+
}
206+
207+
fn global_memory_configs_from_init_page_data(
208+
boundaries: &[Vec<CellBoundary>],
209+
init_page_data: &HashMap<u64, Vec<u8>>,
210+
) -> Vec<PageConfig> {
204211
let touched_pages: std::collections::BTreeSet<u64> = boundaries
205212
.iter()
206213
.flatten()
@@ -504,9 +511,8 @@ fn verify_epoch(
504511
/// epoch's `init` and every genesis value matches the ELF.
505512
fn prove_global(
506513
boundaries: &[Vec<CellBoundary>],
507-
elf: &Elf,
508514
elf_bytes: &[u8],
509-
private_inputs: &[u8],
515+
init_page_data: &HashMap<u64, Vec<u8>>,
510516
opts: &ProofOptions,
511517
) -> Result<MultiProof<F, E, ()>, Error> {
512518
// Each cell's final state (boundaries are in epoch order, so the last fini wins).
@@ -523,7 +529,7 @@ fn prove_global(
523529
}
524530
}
525531

526-
let gm_configs = global_memory_configs(boundaries, elf, private_inputs);
532+
let gm_configs = global_memory_configs_from_init_page_data(boundaries, init_page_data);
527533

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

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

709716
Ok(ContinuationProof {
710717
epochs,

0 commit comments

Comments
 (0)