Skip to content

Commit 9d0dbd9

Browse files
committed
Remove shared preprocessing
1 parent 6029e4b commit 9d0dbd9

File tree

16 files changed

+124
-201
lines changed

16 files changed

+124
-201
lines changed

examples/recursion/src/main.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -477,17 +477,12 @@ fn run_recursion_proof(
477477
jolt_sdk::JoltVerifierPreprocessing::from(&recursion_prover_preprocessing);
478478

479479
// update program_size in memory_config now that we know it
480-
recursion.memory_config.program_size = Some(
481-
recursion_verifier_preprocessing
482-
.shared
483-
.memory_layout
484-
.program_size,
485-
);
480+
recursion.memory_config.program_size =
481+
Some(recursion_verifier_preprocessing.memory_layout.program_size);
486482

487483
let mut output_bytes = vec![
488484
0;
489485
recursion_verifier_preprocessing
490-
.shared
491486
.memory_layout
492487
.max_output_size as usize
493488
];

jolt-core/src/guest/verifier.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ where
4545
{
4646
use common::jolt_device::JoltDevice;
4747
let memory_config = MemoryConfig {
48-
max_untrusted_advice_size: preprocessing.shared.memory_layout.max_untrusted_advice_size,
49-
max_trusted_advice_size: preprocessing.shared.memory_layout.max_trusted_advice_size,
50-
max_input_size: preprocessing.shared.memory_layout.max_input_size,
51-
max_output_size: preprocessing.shared.memory_layout.max_output_size,
52-
stack_size: preprocessing.shared.memory_layout.stack_size,
53-
memory_size: preprocessing.shared.memory_layout.memory_size,
54-
program_size: Some(preprocessing.shared.memory_layout.program_size),
48+
max_untrusted_advice_size: preprocessing.memory_layout.max_untrusted_advice_size,
49+
max_trusted_advice_size: preprocessing.memory_layout.max_trusted_advice_size,
50+
max_input_size: preprocessing.memory_layout.max_input_size,
51+
max_output_size: preprocessing.memory_layout.max_output_size,
52+
stack_size: preprocessing.memory_layout.stack_size,
53+
memory_size: preprocessing.memory_layout.memory_size,
54+
program_size: Some(preprocessing.memory_layout.program_size),
5555
};
5656
let mut io_device = JoltDevice::new(&memory_config);
5757

jolt-core/src/zkvm/bytecode/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ fn gen_ra_one_hot_provers<F: JoltField>(
168168
transcript: &mut impl Transcript,
169169
) -> (HammingWeightSumcheckProver<F>, BooleanitySumcheckProver<F>) {
170170
let (preprocessing, _, trace, _, _) = state_manager.get_prover_data();
171-
let bytecode_preprocessing = &preprocessing.shared.bytecode;
171+
let bytecode_preprocessing = &preprocessing.bytecode;
172172

173173
let r_cycle: Vec<F::Challenge> = opening_accumulator
174174
.get_virtual_polynomial_opening(VirtualPolynomial::UnexpandedPC, SumcheckId::SpartanOuter)

jolt-core/src/zkvm/bytecode/read_raf_checking.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ impl<F: JoltField> ReadRafSumcheckProver<F> {
134134
let (preprocessing, _, trace, _, _) = state_manager.get_prover_data();
135135

136136
let params = ReadRafSumcheckParams::gen(
137-
&preprocessing.shared.bytecode,
137+
&preprocessing.bytecode,
138138
trace.len().log_2(),
139139
opening_accumulator,
140140
transcript,
@@ -172,7 +172,7 @@ impl<F: JoltField> ReadRafSumcheckProver<F> {
172172
array::from_fn(|_| unsafe_allocate_zero_vec::<F>(params.K));
173173

174174
for (j, cycle) in trace_chunk.iter().enumerate() {
175-
let pc = preprocessing.shared.bytecode.get_pc(cycle);
175+
let pc = preprocessing.bytecode.get_pc(cycle);
176176
for stage in 0..N_STAGES {
177177
res_per_stage[stage][pc] += eq_evals[stage][j]
178178
}
@@ -229,7 +229,7 @@ impl<F: JoltField> ReadRafSumcheckProver<F> {
229229

230230
let pc = trace
231231
.par_iter()
232-
.map(|cycle| preprocessing.shared.bytecode.get_pc(cycle))
232+
.map(|cycle| preprocessing.bytecode.get_pc(cycle))
233233
.collect();
234234

235235
Self {

jolt-core/src/zkvm/dag/jolt_dag.rs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,9 @@ pub fn prove_jolt_dag<
8888
let trace_length = trace.len();
8989
let padded_trace_length = trace_length.next_power_of_two();
9090

91-
tracing::info!("bytecode size: {}", preprocessing.shared.bytecode.code_size);
91+
tracing::info!("bytecode size: {}", preprocessing.bytecode.code_size);
9292

93-
let bytecode_d = preprocessing.shared.bytecode.d;
93+
let bytecode_d = preprocessing.bytecode.d;
9494

9595
// Commit to untrusted_advice
9696
let _untrusted_advice_opening_proof_hints =
@@ -524,7 +524,7 @@ pub fn prove_jolt_dag<
524524
reduced_opening_proof,
525525
trace_length: prover_state.trace.len(),
526526
ram_K: state_manager.ram_K,
527-
bytecode_d: prover_state.preprocessing.shared.bytecode.d,
527+
bytecode_d: prover_state.preprocessing.bytecode.d,
528528
twist_sumcheck_switch_index: state_manager.twist_sumcheck_switch_index,
529529
};
530530

@@ -547,7 +547,7 @@ pub fn verify_jolt_dag<
547547
state_manager.fiat_shamir_preamble(transcript);
548548

549549
let ram_K = state_manager.ram_K;
550-
let bytecode_d = state_manager.get_verifier_data().0.shared.bytecode.d;
550+
let bytecode_d = preprocessing.bytecode.d;
551551
let _guard = AllCommittedPolynomials::initialize(ram_K, bytecode_d);
552552

553553
// Append commitments to transcript
@@ -571,7 +571,7 @@ pub fn verify_jolt_dag<
571571
let spartan_key = UniformSpartanKey::new(padded_trace_len);
572572
let twist_sumcheck_switch_index = proof.twist_sumcheck_switch_index;
573573
let initial_ram_state =
574-
ram::gen_ram_initial_memory_state::<F>(ram_K, &preprocessing.shared.ram, program_io);
574+
ram::gen_ram_initial_memory_state::<F>(ram_K, &preprocessing.ram, program_io);
575575

576576
// Stage 1:
577577
let spartan_outer_uni_skip_state = verify_stage1_uni_skip(
@@ -717,16 +717,13 @@ pub fn verify_jolt_dag<
717717

718718
// Stage 6:
719719
let bytecode_read_raf = BytecodeReadRafSumcheckVerifier::gen(
720-
&preprocessing.shared.bytecode,
720+
&preprocessing.bytecode,
721721
n_cycle_vars,
722722
&opening_accumulator,
723723
transcript,
724724
);
725-
let (bytecode_hamming_weight, bytecode_booleanity) = bytecode::new_ra_one_hot_verifiers(
726-
&preprocessing.shared.bytecode,
727-
n_cycle_vars,
728-
transcript,
729-
);
725+
let (bytecode_hamming_weight, bytecode_booleanity) =
726+
bytecode::new_ra_one_hot_verifiers(&preprocessing.bytecode, n_cycle_vars, transcript);
730727
let ram_hamming_weight = ram::new_ra_hamming_weight_verifier(ram_K, transcript);
731728
let lookups_ra_virtual = LookupsRaSumcheckVerifier::new(&opening_accumulator);
732729
let lookups_booleanity =

jolt-core/src/zkvm/dag/state_manager.rs

Lines changed: 6 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ use crate::poly::multilinear_polynomial::MultilinearPolynomial;
66
use crate::transcripts::Transcript;
77
use crate::utils::math::Math;
88
use crate::zkvm::witness::compute_d_parameter;
9-
use crate::zkvm::{JoltProverPreprocessing, JoltSharedPreprocessing, JoltVerifierPreprocessing};
9+
use crate::zkvm::{JoltProverPreprocessing, JoltVerifierPreprocessing};
1010
use rayon::prelude::*;
1111
use tracer::emulator::memory::Memory;
12-
use tracer::instruction::{Cycle, Instruction};
12+
use tracer::instruction::Cycle;
1313
use tracer::{JoltDevice, LazyTraceIterator};
1414

1515
pub struct ProverState<'a, F: JoltField, PCS>
@@ -62,18 +62,18 @@ where
6262
.filter_map(|cycle| {
6363
crate::zkvm::ram::remap_address(
6464
cycle.ram_access().address() as u64,
65-
&preprocessing.shared.memory_layout,
65+
&preprocessing.memory_layout,
6666
)
6767
})
6868
.max()
6969
.unwrap_or(0)
7070
.max(
7171
crate::zkvm::ram::remap_address(
72-
preprocessing.shared.ram.min_bytecode_address,
73-
&preprocessing.shared.memory_layout,
72+
preprocessing.ram.min_bytecode_address,
73+
&preprocessing.memory_layout,
7474
)
7575
.unwrap_or(0)
76-
+ preprocessing.shared.ram.bytecode_words.len() as u64
76+
+ preprocessing.ram.bytecode_words.len() as u64
7777
+ 1,
7878
)
7979
.next_power_of_two() as usize;
@@ -103,33 +103,6 @@ where
103103
}
104104
}
105105

106-
/// Only used in tests; in practice, the verifier state manager is
107-
/// constructed using `JoltProof::to_verifier_state_manager`
108-
#[cfg(test)]
109-
pub fn new_verifier(
110-
preprocessing: &'a JoltVerifierPreprocessing<F, PCS>,
111-
program_io: JoltDevice,
112-
trace_length: usize,
113-
ram_K: usize,
114-
twist_sumcheck_switch_index: usize,
115-
) -> Self {
116-
let ram_d = compute_d_parameter(ram_K);
117-
118-
StateManager {
119-
untrusted_advice_commitment: None,
120-
trusted_advice_commitment: None,
121-
program_io,
122-
ram_K,
123-
ram_d,
124-
twist_sumcheck_switch_index,
125-
prover_state: None,
126-
verifier_state: Some(VerifierState {
127-
preprocessing,
128-
trace_length,
129-
}),
130-
}
131-
}
132-
133106
pub fn get_prover_data(
134107
&self,
135108
) -> (
@@ -160,48 +133,6 @@ where
160133
}
161134
}
162135

163-
pub fn get_verifier_data(&self) -> (&'a JoltVerifierPreprocessing<F, PCS>, &JoltDevice, usize) {
164-
if let Some(ref verifier_state) = self.verifier_state {
165-
(
166-
verifier_state.preprocessing,
167-
&self.program_io,
168-
verifier_state.trace_length,
169-
)
170-
} else {
171-
panic!("Verifier state not initialized");
172-
}
173-
}
174-
175-
pub fn get_trace_len(&self) -> usize {
176-
if let Some(ref verifier_state) = self.verifier_state {
177-
verifier_state.trace_length
178-
} else if let Some(ref prover_state) = self.prover_state {
179-
prover_state.trace.len()
180-
} else {
181-
panic!("Neither prover nor verifier state initialized");
182-
}
183-
}
184-
185-
pub fn get_bytecode(&self) -> &[Instruction] {
186-
if let Some(ref verifier_state) = self.verifier_state {
187-
&verifier_state.preprocessing.shared.bytecode.bytecode
188-
} else if let Some(ref prover_state) = self.prover_state {
189-
&prover_state.preprocessing.shared.bytecode.bytecode
190-
} else {
191-
panic!("Neither prover nor verifier state initialized");
192-
}
193-
}
194-
195-
pub fn get_shared_preprocessing(&self) -> &JoltSharedPreprocessing {
196-
if let Some(ref verifier_state) = self.verifier_state {
197-
&verifier_state.preprocessing.shared
198-
} else if let Some(ref prover_state) = self.prover_state {
199-
&prover_state.preprocessing.shared
200-
} else {
201-
panic!("Neither prover nor verifier state initialized");
202-
}
203-
}
204-
205136
pub fn fiat_shamir_preamble(&self, transcript: &mut impl Transcript) {
206137
transcript.append_u64(self.program_io.memory_layout.max_input_size);
207138
transcript.append_u64(self.program_io.memory_layout.max_output_size);

jolt-core/src/zkvm/instruction_lookups/read_raf_checking.rs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,10 +1201,7 @@ mod tests {
12011201
use crate::transcripts::Blake2bTranscript;
12021202
use crate::{
12031203
poly::commitment::mock::MockCommitScheme,
1204-
zkvm::{
1205-
bytecode::BytecodePreprocessing, ram::RAMPreprocessing, JoltProverPreprocessing,
1206-
JoltSharedPreprocessing,
1207-
},
1204+
zkvm::{bytecode::BytecodePreprocessing, ram::RAMPreprocessing, JoltProverPreprocessing},
12081205
};
12091206
use ark_bn254::Fr;
12101207
use ark_std::Zero;
@@ -1299,15 +1296,12 @@ mod tests {
12991296
let bytecode = vec![];
13001297
let bytecode_preprocessing = BytecodePreprocessing::preprocess(bytecode);
13011298
let memory_layout = MemoryLayout::default();
1302-
let shared_preprocessing = JoltSharedPreprocessing {
1303-
bytecode: bytecode_preprocessing,
1304-
ram: RAMPreprocessing::preprocess(vec![]),
1305-
memory_layout: memory_layout.clone(),
1306-
};
13071299
let prover_preprocessing: JoltProverPreprocessing<Fr, MockCommitScheme<Fr>> =
13081300
JoltProverPreprocessing {
13091301
generators: (),
1310-
shared: shared_preprocessing.clone(),
1302+
bytecode: bytecode_preprocessing,
1303+
ram: RAMPreprocessing::preprocess(vec![]),
1304+
memory_layout: memory_layout.clone(),
13111305
};
13121306

13131307
let program_io = JoltDevice {

0 commit comments

Comments
 (0)