Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
0f7d096
feat: split Stage 6 into 6a (address) and 6b (cycle) phases
quangvdao Jan 19, 2026
dcd9481
refactor: separate Address/Cycle provers into independent structs
quangvdao Jan 19, 2026
0f40a19
refactor(stage6): remove state handoff for booleanity/read-raf
quangvdao Jan 19, 2026
2df3d33
feat(zkvm): add bytecode claim reduction sumcheck
quangvdao Jan 20, 2026
e0228ac
feat(zkvm): add bytecode commitment mode config
quangvdao Jan 20, 2026
7246c0d
refactor(zkvm): rename BytecodeCommitmentMode → BytecodeMode (Full/Co…
quangvdao Jan 20, 2026
4b5f396
refactor(bytecode): separate bytecode preprocessing for Full/Committe…
quangvdao Jan 20, 2026
71ee2e1
refactor(zkvm): move e2e tests to dedicated tests.rs module
quangvdao Jan 20, 2026
f9e5fed
refactor(sdk): simplify preprocessing API
quangvdao Jan 20, 2026
0e30fa7
feat(zkvm): committed bytecode mode (AddressMajor)
quangvdao Jan 20, 2026
a491a8f
fix: add missing update_flamegraph method to BytecodeClaimReductionPr…
quangvdao Jan 20, 2026
5e4668c
chore: untrack bytecode-commitment-progress.md planning doc
quangvdao Jan 20, 2026
e596a43
ci: clear stale Dory URS cache before tests
quangvdao Jan 20, 2026
ed0c285
merge advice fix
quangvdao Jan 22, 2026
2e3ce40
Add standalone bytecode VMP computation function
quangvdao Jan 22, 2026
71006c6
Refactor vmp_bytecode_contribution to use standalone function
quangvdao Jan 22, 2026
0e54d88
Merge branch 'main' into quang/bytecode-commitment
quangvdao Jan 22, 2026
2139c53
Merge branch 'main' into quang/bytecode-commitment
quangvdao Jan 22, 2026
8d306d9
feat(bytecode): align bytecode context with main sigma for Stage 8 fo…
quangvdao Jan 22, 2026
9e2f0a5
feat(zkvm): commit program image and avoid verifier init RAM
quangvdao Jan 22, 2026
e5d9f32
refactor(zkvm): unify BytecodePreprocessing and ProgramImagePreproces…
quangvdao Jan 23, 2026
b7465fe
fix: add missing update_flamegraph impl for ProgramImageClaimReductio…
quangvdao Jan 23, 2026
097091b
refactor: rename BytecodeMode to ProgramMode + add comprehensive tests
quangvdao Jan 23, 2026
1ae4203
fix: resolve clippy warnings for too_many_arguments and identity_op
quangvdao Jan 23, 2026
861bf2b
fix(dory): fix CycleMajor bytecode embedding for committed mode Stage 8
quangvdao Jan 23, 2026
ad6f7a1
perf: optimize IO polynomial evaluation with sparse MLE
quangvdao Jan 23, 2026
6cc8cee
Merge quang/optimize-io-mle-eval into quang/program-image-commitment
quangvdao Jan 23, 2026
d078ead
style: apply cargo fmt
quangvdao Jan 23, 2026
bb75435
fix: add SumcheckFrontend impl for RegistersReadWriteCheckingVerifier
quangvdao Jan 23, 2026
79bf359
refactor(prover,verifier): consolidate imports and clean up stage params
quangvdao Jan 23, 2026
94c693f
fmt
quangvdao Jan 24, 2026
0499622
perf: parallelize program-image sumcheck and speed bytecode verify
quangvdao Jan 24, 2026
7738242
chore: add tracing spans and fix clippy unused-import warnings
quangvdao Jan 24, 2026
ac6a04b
refactor(bytecode): add lane layout and weighted eval helpers
quangvdao Jan 26, 2026
be74c7e
perf(zkvm): factor bytecode claim reduction weights
quangvdao Jan 26, 2026
e8aed14
style(jolt-core): hoist imports and de-qualify fully qualified paths
quangvdao Jan 26, 2026
549e7da
perf(zkvm): eliminate address-phase replay in Stage 6b cycle provers
quangvdao Jan 26, 2026
7493ce6
Merge origin/main into quang/program-image-commitment
quangvdao Jan 26, 2026
b987996
fix(sdk-macros): fully qualify ProgramSummary return type
quangvdao Jan 26, 2026
c986fe8
perf(tracing): instrument sumcheck prover methods
quangvdao Jan 26, 2026
d98cfe5
fmt
quangvdao Jan 26, 2026
5ed72d1
refactor(verifier): cache stage 6a params in struct fields
quangvdao Jan 26, 2026
a3a63f8
Reuse main_sigma_nu() in case available
omibo Jan 27, 2026
226c879
Merge pull request #15 from omibo/quang/program-image-commitment
quangvdao Jan 27, 2026
35c92e3
Merge remote-tracking branch 'origin/main'
quangvdao Jan 27, 2026
453f110
perf(zkvm): fuse bytecode claim reduction lanes in cycle phase
quangvdao Jan 30, 2026
33df896
perf(zkvm): speed up Stage 8 program commitments
quangvdao Jan 31, 2026
e85066e
perf(zkvm): parallelize sparse bytecode commitment
quangvdao Jan 31, 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
2 changes: 2 additions & 0 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ jobs:
path: ~/.jolt
- name: Install Jolt RISC-V Rust toolchain
run: cargo run install-toolchain
- name: Clear Dory URS cache
run: rm -rf ~/.cache/dory
- name: Install nextest
uses: taiki-e/install-action@nextest
- name: Run jolt-core tests
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,4 @@ jolt-sdk/tests/fib_io_device_bytes.rs
jolt-sdk/tests/fib_proof_bytes.rs
jolt-sdk/tests/jolt_verifier_preprocessing_bytes.rs

bytecode-commitment-progress.md
4 changes: 2 additions & 2 deletions book/src/usage/guests_hosts/hosts.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Hosts are where we can invoke the Jolt prover to prove functions defined within
The host imports the guest package, and will have automatically generated functions to build each of the Jolt functions. For the SHA3 example we looked at in the [guest](./guests.md) section, the `jolt::provable` procedural macro generates several functions that can be invoked from the host (shown below):

- `compile_sha3(target_dir)` to compile the SHA3 guest to RISC-V
- `preprocess_prover_sha3` and `verifier_preprocessing_from_prover_sha3` to generate the prover and verifier preprocessing. Note that the preprocessing only needs to be generated once for a given guest program, and can subsequently be reused to prove multiple invocations of the guest.
- `preprocess_sha3` and `verifier_preprocessing_from_prover_sha3` to generate the prover and verifier preprocessing. Note that the preprocessing only needs to be generated once for a given guest program, and can subsequently be reused to prove multiple invocations of the guest.
- `build_prover_sha3` returns a closure for the prover, which takes in the same input types as the original function and modifies the output to additionally include a proof.
- `build_verifier_sha3` returns a closure for the verifier, which verifies the proof. The verifier closure's parameters comprise of the program input, the claimed output, a `bool` value claiming whether the guest panicked, and the proof.

Expand All @@ -14,7 +14,7 @@ pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_sha3(target_dir);

let prover_preprocessing = guest::preprocess_prover_sha3(&mut program);
let prover_preprocessing = guest::preprocess_sha3(&mut program);
let verifier_preprocessing =
guest::verifier_preprocessing_from_prover_sha3(&prover_preprocessing);

Expand Down
9 changes: 3 additions & 6 deletions examples/alloc/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,9 @@ pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_alloc(target_dir);

let shared_preprocessing = guest::preprocess_shared_alloc(&mut program);
let prover_preprocessing = guest::preprocess_prover_alloc(shared_preprocessing.clone());
let verifier_preprocessing = guest::preprocess_verifier_alloc(
shared_preprocessing,
prover_preprocessing.generators.to_verifier_setup(),
);
let prover_preprocessing = guest::preprocess_alloc(&mut program);
let verifier_preprocessing =
guest::verifier_preprocessing_from_prover_alloc(&prover_preprocessing);

let prove_alloc = guest::build_prover_alloc(program, prover_preprocessing);
let verify_alloc = guest::build_verifier_alloc(verifier_preprocessing);
Expand Down
11 changes: 2 additions & 9 deletions examples/btreemap/host/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,12 @@ pub fn btreemap() {
guest::compile_btreemap(target_dir)
});

let shared_preprocessing = step!("Preprocessing shared", {
guest::preprocess_shared_btreemap(&mut program)
});

let prover_preprocessing = step!("Preprocessing prover", {
guest::preprocess_prover_btreemap(shared_preprocessing.clone())
guest::preprocess_btreemap(&mut program)
});

let verifier_preprocessing = step!("Preprocessing verifier", {
guest::preprocess_verifier_btreemap(
shared_preprocessing,
prover_preprocessing.generators.to_verifier_setup(),
)
guest::verifier_preprocessing_from_prover_btreemap(&prover_preprocessing)
});

let prove = step!("Building prover", {
Expand Down
14 changes: 4 additions & 10 deletions examples/collatz/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,9 @@ pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_collatz_convergence(target_dir);

let shared_preprocessing = guest::preprocess_shared_collatz_convergence(&mut program);
let prover_preprocessing =
guest::preprocess_prover_collatz_convergence(shared_preprocessing.clone());
let verifier_setup = prover_preprocessing.generators.to_verifier_setup();
let prover_preprocessing = guest::preprocess_collatz_convergence(&mut program);
let verifier_preprocessing =
guest::preprocess_verifier_collatz_convergence(shared_preprocessing, verifier_setup);
guest::verifier_preprocessing_from_prover_collatz_convergence(&prover_preprocessing);

let prove_collatz_single =
guest::build_prover_collatz_convergence(program, prover_preprocessing);
Expand All @@ -31,12 +28,9 @@ pub fn main() {
// Prove/verify convergence for a range of numbers:
let mut program = guest::compile_collatz_convergence_range(target_dir);

let shared_preprocessing = guest::preprocess_shared_collatz_convergence_range(&mut program);
let prover_preprocessing =
guest::preprocess_prover_collatz_convergence_range(shared_preprocessing.clone());
let verifier_setup = prover_preprocessing.generators.to_verifier_setup();
let prover_preprocessing = guest::preprocess_collatz_convergence_range(&mut program);
let verifier_preprocessing =
guest::preprocess_verifier_collatz_convergence_range(shared_preprocessing, verifier_setup);
guest::verifier_preprocessing_from_prover_collatz_convergence_range(&prover_preprocessing);

let prove_collatz_convergence =
guest::build_prover_collatz_convergence_range(program, prover_preprocessing);
Expand Down
29 changes: 22 additions & 7 deletions examples/fibonacci/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,18 @@ pub fn main() {
tracing_subscriber::fmt::init();

let save_to_disk = std::env::args().any(|arg| arg == "--save");
let committed_bytecode = std::env::args().any(|arg| arg == "--committed-bytecode");

let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_fib(target_dir);

let shared_preprocessing = guest::preprocess_shared_fib(&mut program);

let prover_preprocessing = guest::preprocess_prover_fib(shared_preprocessing.clone());
let verifier_setup = prover_preprocessing.generators.to_verifier_setup();
let prover_preprocessing = if committed_bytecode {
guest::preprocess_committed_fib(&mut program)
} else {
guest::preprocess_fib(&mut program)
};
let verifier_preprocessing =
guest::preprocess_verifier_fib(shared_preprocessing, verifier_setup);
guest::verifier_preprocessing_from_prover_fib(&prover_preprocessing);

if save_to_disk {
serialize_and_print_size(
Expand All @@ -26,7 +28,6 @@ pub fn main() {
.expect("Could not serialize preprocessing.");
}

let prove_fib = guest::build_prover_fib(program, prover_preprocessing);
let verify_fib = guest::build_verifier_fib(verifier_preprocessing);

let program_summary = guest::analyze_fib(10);
Expand All @@ -39,8 +40,22 @@ pub fn main() {
info!("Trace file written to: {trace_file}.");

let now = Instant::now();
let (output, proof, io_device) = prove_fib(50);
let (output, proof, io_device) = if committed_bytecode {
let prove_fib = guest::build_prover_committed_fib(program, prover_preprocessing);
prove_fib(50)
} else {
let prove_fib = guest::build_prover_fib(program, prover_preprocessing);
prove_fib(50)
};
info!("Prover runtime: {} s", now.elapsed().as_secs_f64());
info!(
"bytecode mode: {}",
if committed_bytecode {
"Committed"
} else {
"Full"
}
);

if save_to_disk {
serialize_and_print_size("Proof", "/tmp/fib_proof.bin", &proof)
Expand Down
6 changes: 2 additions & 4 deletions examples/hash-bench/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,9 @@ pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_hashbench(target_dir);

let shared_preprocessing = guest::preprocess_shared_hashbench(&mut program);
let prover_preprocessing = guest::preprocess_prover_hashbench(shared_preprocessing.clone());
let verifier_setup = prover_preprocessing.generators.to_verifier_setup();
let prover_preprocessing = guest::preprocess_hashbench(&mut program);
let verifier_preprocessing =
guest::preprocess_verifier_hashbench(shared_preprocessing, verifier_setup);
guest::verifier_preprocessing_from_prover_hashbench(&prover_preprocessing);

let prove_hashbench = guest::build_prover_hashbench(program, prover_preprocessing);
let verify_hashbench = guest::build_verifier_hashbench(verifier_preprocessing);
Expand Down
9 changes: 3 additions & 6 deletions examples/malloc/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,9 @@ pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_alloc(target_dir);

let shared_preprocessing = guest::preprocess_shared_alloc(&mut program);
let prover_preprocessing = guest::preprocess_prover_alloc(shared_preprocessing.clone());
let verifier_preprocessing = guest::preprocess_verifier_alloc(
shared_preprocessing,
prover_preprocessing.generators.to_verifier_setup(),
);
let prover_preprocessing = guest::preprocess_alloc(&mut program);
let verifier_preprocessing =
guest::verifier_preprocessing_from_prover_alloc(&prover_preprocessing);

let prove = guest::build_prover_alloc(program, prover_preprocessing);
let verify = guest::build_verifier_alloc(verifier_preprocessing);
Expand Down
9 changes: 3 additions & 6 deletions examples/memory-ops/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,9 @@ pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_memory_ops(target_dir);

let shared_preprocessing = guest::preprocess_shared_memory_ops(&mut program);
let prover_preprocessing = guest::preprocess_prover_memory_ops(shared_preprocessing.clone());
let verifier_preprocessing = guest::preprocess_verifier_memory_ops(
shared_preprocessing,
prover_preprocessing.generators.to_verifier_setup(),
);
let prover_preprocessing = guest::preprocess_memory_ops(&mut program);
let verifier_preprocessing =
guest::verifier_preprocessing_from_prover_memory_ops(&prover_preprocessing);

let prove = guest::build_prover_memory_ops(program, prover_preprocessing);
let verify = guest::build_verifier_memory_ops(verifier_preprocessing);
Expand Down
9 changes: 3 additions & 6 deletions examples/merkle-tree/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,9 @@ pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_merkle_tree(target_dir);

let shared_preprocessing = guest::preprocess_shared_merkle_tree(&mut program);
let prover_preprocessing = guest::preprocess_prover_merkle_tree(shared_preprocessing.clone());
let verifier_preprocessing = guest::preprocess_verifier_merkle_tree(
shared_preprocessing,
prover_preprocessing.generators.to_verifier_setup(),
);
let prover_preprocessing = guest::preprocess_merkle_tree(&mut program);
let verifier_preprocessing =
guest::verifier_preprocessing_from_prover_merkle_tree(&prover_preprocessing);

let leaf1: &[u8] = &[5u8; 32];
let leaf2 = [6u8; 32];
Expand Down
9 changes: 3 additions & 6 deletions examples/muldiv/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,9 @@ pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_muldiv(target_dir);

let shared_preprocessing = guest::preprocess_shared_muldiv(&mut program);
let prover_preprocessing = guest::preprocess_prover_muldiv(shared_preprocessing.clone());
let verifier_preprocessing = guest::preprocess_verifier_muldiv(
shared_preprocessing,
prover_preprocessing.generators.to_verifier_setup(),
);
let prover_preprocessing = guest::preprocess_muldiv(&mut program);
let verifier_preprocessing =
guest::verifier_preprocessing_from_prover_muldiv(&prover_preprocessing);

let prove = guest::build_prover_muldiv(program, prover_preprocessing);
let verify = guest::build_verifier_muldiv(verifier_preprocessing);
Expand Down
15 changes: 5 additions & 10 deletions examples/multi-function/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,9 @@ pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_add(target_dir);

let shared_preprocessing = guest::preprocess_shared_add(&mut program);
let prover_preprocessing = guest::preprocess_prover_add(shared_preprocessing.clone());
let verifier_setup = prover_preprocessing.generators.to_verifier_setup();
let prover_preprocessing = guest::preprocess_add(&mut program);
let verifier_preprocessing =
guest::preprocess_verifier_add(shared_preprocessing, verifier_setup);
guest::verifier_preprocessing_from_prover_add(&prover_preprocessing);

let prove_add = guest::build_prover_add(program, prover_preprocessing);
let verify_add = guest::build_verifier_add(verifier_preprocessing);
Expand All @@ -21,12 +19,9 @@ pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_mul(target_dir);

let shared_preprocessing = guest::preprocess_shared_mul(&mut program);
let prover_preprocessing = guest::preprocess_prover_mul(shared_preprocessing.clone());
let verifier_preprocessing = guest::preprocess_verifier_mul(
shared_preprocessing,
prover_preprocessing.generators.to_verifier_setup(),
);
let prover_preprocessing = guest::preprocess_mul(&mut program);
let verifier_preprocessing =
guest::verifier_preprocessing_from_prover_mul(&prover_preprocessing);

let prove_mul = guest::build_prover_mul(program, prover_preprocessing);
let verify_mul = guest::build_verifier_mul(verifier_preprocessing);
Expand Down
21 changes: 7 additions & 14 deletions examples/overflow/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ pub fn main() {
// An overflowing stack should fail to prove.
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_overflow_stack(target_dir);
let shared_preprocessing = guest::preprocess_shared_overflow_stack(&mut program);
let prover_preprocessing =
guest::preprocess_prover_overflow_stack(shared_preprocessing.clone());
let prover_preprocessing = guest::preprocess_overflow_stack(&mut program);
let prove_overflow_stack = guest::build_prover_overflow_stack(program, prover_preprocessing);

let res = panic::catch_unwind(|| {
Expand All @@ -23,8 +21,7 @@ pub fn main() {

// now lets try to overflow the heap, should also panic
let mut program = guest::compile_overflow_heap(target_dir);
let shared_preprocessing = guest::preprocess_shared_overflow_heap(&mut program);
let prover_preprocessing = guest::preprocess_prover_overflow_heap(shared_preprocessing.clone());
let prover_preprocessing = guest::preprocess_overflow_heap(&mut program);
let prove_overflow_heap = guest::build_prover_overflow_heap(program, prover_preprocessing);

let res = panic::catch_unwind(|| {
Expand All @@ -35,15 +32,11 @@ pub fn main() {
// valid case for stack allocation, calls overflow_stack() under the hood
// but with stack_size=8192
let mut program = guest::compile_allocate_stack_with_increased_size(target_dir);

let shared_preprocessing =
guest::preprocess_shared_allocate_stack_with_increased_size(&mut program);
let prover_preprocessing =
guest::preprocess_prover_allocate_stack_with_increased_size(shared_preprocessing.clone());
let verifier_preprocessing = guest::preprocess_verifier_allocate_stack_with_increased_size(
shared_preprocessing,
prover_preprocessing.generators.to_verifier_setup(),
);
let prover_preprocessing = guest::preprocess_allocate_stack_with_increased_size(&mut program);
let verifier_preprocessing =
guest::verifier_preprocessing_from_prover_allocate_stack_with_increased_size(
&prover_preprocessing,
);

let prove_allocate_stack_with_increased_size =
guest::build_prover_allocate_stack_with_increased_size(program, prover_preprocessing);
Expand Down
9 changes: 3 additions & 6 deletions examples/random/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,9 @@ pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_rand(target_dir);

let shared_preprocessing = guest::preprocess_shared_rand(&mut program);
let prover_preprocessing = guest::preprocess_prover_rand(shared_preprocessing.clone());
let verifier_preprocessing = guest::preprocess_verifier_rand(
shared_preprocessing,
prover_preprocessing.generators.to_verifier_setup(),
);
let prover_preprocessing = guest::preprocess_rand(&mut program);
let verifier_preprocessing =
guest::verifier_preprocessing_from_prover_rand(&prover_preprocessing);

let prove = guest::build_prover_rand(program, prover_preprocessing);
let verify = guest::build_verifier_rand(verifier_preprocessing);
Expand Down
9 changes: 3 additions & 6 deletions examples/recover-ecdsa/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,9 @@ pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_recover(target_dir);

let shared_preprocessing = guest::preprocess_shared_recover(&mut program);
let prover_preprocessing = guest::preprocess_prover_recover(shared_preprocessing.clone());
let verifier_preprocessing = guest::preprocess_verifier_recover(
shared_preprocessing,
prover_preprocessing.generators.to_verifier_setup(),
);
let prover_preprocessing = guest::preprocess_recover(&mut program);
let verifier_preprocessing =
guest::verifier_preprocessing_from_prover_recover(&prover_preprocessing);

if save_to_disk {
serialize_and_print_size(
Expand Down
7 changes: 2 additions & 5 deletions examples/secp256k1-ecdsa-verify/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,9 @@ pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_secp256k1_ecdsa_verify(target_dir);

let shared_preprocessing = guest::preprocess_shared_secp256k1_ecdsa_verify(&mut program);
let prover_preprocessing =
guest::preprocess_prover_secp256k1_ecdsa_verify(shared_preprocessing.clone());
let verifier_setup = prover_preprocessing.generators.to_verifier_setup();
let prover_preprocessing = guest::preprocess_secp256k1_ecdsa_verify(&mut program);
let verifier_preprocessing =
guest::preprocess_verifier_secp256k1_ecdsa_verify(shared_preprocessing, verifier_setup);
guest::verifier_preprocessing_from_prover_secp256k1_ecdsa_verify(&prover_preprocessing);

let prove_secp256k1_ecdsa_verify =
guest::build_prover_secp256k1_ecdsa_verify(program, prover_preprocessing);
Expand Down
9 changes: 3 additions & 6 deletions examples/sha2-chain/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,9 @@ pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_sha2_chain(target_dir);

let shared_preprocessing = guest::preprocess_shared_sha2_chain(&mut program);
let prover_preprocessing = guest::preprocess_prover_sha2_chain(shared_preprocessing.clone());
let verifier_preprocessing = guest::preprocess_verifier_sha2_chain(
shared_preprocessing,
prover_preprocessing.generators.to_verifier_setup(),
);
let prover_preprocessing = guest::preprocess_sha2_chain(&mut program);
let verifier_preprocessing =
guest::verifier_preprocessing_from_prover_sha2_chain(&prover_preprocessing);

let prove_sha2_chain = guest::build_prover_sha2_chain(program, prover_preprocessing);
let verify_sha2_chain = guest::build_verifier_sha2_chain(verifier_preprocessing);
Expand Down
9 changes: 3 additions & 6 deletions examples/sha2-ex/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,9 @@ pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let mut program = guest::compile_sha2(target_dir);

let shared_preprocessing = guest::preprocess_shared_sha2(&mut program);
let prover_preprocessing = guest::preprocess_prover_sha2(shared_preprocessing.clone());
let verifier_preprocessing = guest::preprocess_verifier_sha2(
shared_preprocessing,
prover_preprocessing.generators.to_verifier_setup(),
);
let prover_preprocessing = guest::preprocess_sha2(&mut program);
let verifier_preprocessing =
guest::verifier_preprocessing_from_prover_sha2(&prover_preprocessing);

let prove_sha2 = guest::build_prover_sha2(program, prover_preprocessing);
let verify_sha2 = guest::build_verifier_sha2(verifier_preprocessing);
Expand Down
Loading