Skip to content

Commit c7218d8

Browse files
committed
feat(generated-roles): add generated Jolt role crates
1 parent dbef8b1 commit c7218d8

95 files changed

Lines changed: 51587 additions & 67 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Cargo.lock

Lines changed: 48 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ members = [
3737
"crates/jolt-transcript",
3838
"crates/jolt-witness",
3939
"crates/bolt",
40+
"crates/jolt-kernels",
41+
"crates/jolt-prover",
42+
"crates/jolt-verifier",
4043
"crates/jolt-profiling",
4144
"crates/jolt-field",
4245
"jolt-core",
@@ -379,6 +382,8 @@ common = { path = "./common", default-features = false }
379382
tracer = { path = "./tracer", default-features = false }
380383
jolt-core = { path = "./jolt-core", default-features = false }
381384
jolt-crypto = { path = "./crates/jolt-crypto" }
385+
jolt-dory = { path = "./crates/jolt-dory" }
386+
jolt-hyperkzg = { path = "./crates/jolt-hyperkzg" }
382387
jolt-field = { path = "./crates/jolt-field" }
383388
jolt-openings = { path = "./crates/jolt-openings" }
384389
jolt-poly = { path = "./crates/jolt-poly" }
@@ -387,6 +392,9 @@ jolt-sumcheck = { path = "./crates/jolt-sumcheck" }
387392
jolt-r1cs = { path = "./crates/jolt-r1cs" }
388393
jolt-witness = { path = "./crates/jolt-witness" }
389394
bolt = { path = "./crates/bolt" }
395+
jolt-kernels = { path = "./crates/jolt-kernels" }
396+
jolt-prover = { path = "./crates/jolt-prover" }
397+
jolt-verifier = { path = "./crates/jolt-verifier" }
390398
jolt-riscv = { path = "./crates/jolt-riscv", default-features = false }
391399
jolt-program = { path = "./crates/jolt-program", default-features = false }
392400
jolt-lookup-tables = { path = "./crates/jolt-lookup-tables" }

crates/bolt/src/emit/rust/artifacts.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,9 +426,18 @@ fn generated_crate(
426426
path: format!("src/stages/{}.rs", artifact.stage.module_name()),
427427
source: artifact.source.source,
428428
}));
429+
for file in &mut files {
430+
file.source = normalized_generated_source(&file.source);
431+
}
429432
GeneratedCrate { crate_name, files }
430433
}
431434

435+
fn normalized_generated_source(source: &str) -> String {
436+
let mut normalized = source.trim_end_matches(char::is_whitespace).to_owned();
437+
normalized.push('\n');
438+
normalized
439+
}
440+
432441
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
433442
enum ManifestMode<'a> {
434443
Standalone { dependency_root: &'a str },

crates/bolt/src/protocols/jolt/artifacts.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -322,8 +322,8 @@ pub use verifier::{
322322
verify_jolt_through_stage6_with_programs, verify_jolt_through_stage7,
323323
verify_jolt_through_stage7_with_programs, verify_jolt_with_programs, JoltEvaluationProof,
324324
JoltEvaluationProofError, JoltNamedEval, JoltProof, JoltStage2RamAccess, JoltStage2RamData,
325-
JoltStage2RamOutputLayout, JoltStageChallengeVector, JoltStageExecutionArtifacts,
326-
JoltStage6BytecodeEntry, JoltStage6BytecodeReadRafData, JoltStage6VerifierData,
325+
JoltStage2RamOutputLayout, JoltStage6BytecodeEntry, JoltStage6BytecodeReadRafData,
326+
JoltStage6VerifierData, JoltStageChallengeVector, JoltStageExecutionArtifacts,
327327
JoltStageOpeningInputValue, JoltStageProof, JoltSumcheckOutput, JoltVerificationArtifacts,
328328
JoltVerifierInputs, JoltVerifierPrograms, JoltVerifierTarget, JoltVerifyError,
329329
};"
@@ -337,7 +337,7 @@ fn jolt_evaluation_role_api_extension() -> ProtocolArtifactExtension {
337337
required_artifact_stages: vec!["stage8".to_owned()],
338338
prover: ProtocolProverApiExtension {
339339
lib_module: jolt_prover_lib_module(),
340-
imports: "#![expect(\n clippy::too_many_arguments,\n reason = \"generated prover helpers mirror staged protocol ABIs\"\n)]\n\nuse jolt_dory::{DoryCommitment, DoryHint, DoryProverSetup, DoryScheme};\nuse jolt_field::{Field, Fr};\nuse jolt_kernels::{stage1, stage2, stage3, stage4, stage5, stage6, stage7};\nuse jolt_openings::{AdditivelyHomomorphic, CommitmentScheme};\nuse jolt_poly::{EqPolynomial, Polynomial};\nuse jolt_transcript::{AppendToTranscript, Blake2bTranscript, LabelWithCount, Transcript};\nuse jolt_verifier::{JoltEvaluationProof, JoltNamedEval, JoltProof, JoltStage2RamAccess, JoltStage2RamData, JoltStage2RamOutputLayout, JoltStage6BytecodeEntry, JoltStage6BytecodeReadRafData, JoltStage6VerifierData, JoltStageChallengeVector, JoltStageExecutionArtifacts, JoltStageOpeningInputValue, JoltStageProof, JoltSumcheckOutput};\nuse jolt_witness::{stage4_ram_val_init_opening, CycleInput, Stage45SparseTraceWitness, Stage6BytecodeEntry as WitnessStage6BytecodeEntry, Stage6WitnessParams, Stage6WitnessPolynomials, Stage6WitnessSlices};\nuse rayon::prelude::*;\n\n".to_owned(),
340+
imports: "#![expect(\n clippy::too_many_arguments,\n reason = \"generated prover helpers mirror staged protocol ABIs\"\n)]\n\nuse jolt_dory::{DoryCommitment, DoryHint, DoryProverSetup, DoryScheme};\nuse jolt_field::Fr;\nuse jolt_kernels::{stage1, stage2, stage3, stage4, stage5, stage6, stage7};\nuse jolt_openings::{AdditivelyHomomorphic, CommitmentScheme};\nuse jolt_poly::{EqPolynomial, Polynomial};\nuse jolt_transcript::{AppendToTranscript, Blake2bTranscript, LabelWithCount, Transcript};\nuse jolt_verifier::{JoltEvaluationProof, JoltNamedEval, JoltProof, JoltStage2RamAccess, JoltStage2RamData, JoltStage2RamOutputLayout, JoltStage6BytecodeEntry, JoltStage6BytecodeReadRafData, JoltStage6VerifierData, JoltStageChallengeVector, JoltStageExecutionArtifacts, JoltStageOpeningInputValue, JoltStageProof, JoltSumcheckOutput};\nuse jolt_witness::{stage4_ram_val_init_opening, CycleInput, Stage45SparseTraceWitness, Stage6BytecodeEntry as WitnessStage6BytecodeEntry, Stage6WitnessParams, Stage6WitnessPolynomials, Stage6WitnessSlices};\nuse rayon::prelude::*;\n\n".to_owned(),
341341
input_fields:
342342
" pub stage7_openings: Option<&'a [stage7::Stage7OpeningInputValue<Fr>]>,\n"
343343
.to_owned(),
@@ -357,7 +357,7 @@ fn jolt_evaluation_role_api_extension() -> ProtocolArtifactExtension {
357357
},
358358
verifier: ProtocolVerifierApiExtension {
359359
lib_module: jolt_verifier_lib_module(),
360-
imports: "use std::collections::BTreeMap;\n\nuse jolt_dory::{DoryCommitment, DoryProof, DoryScheme, DoryVerifierSetup};\nuse jolt_field::{Field, Fr};\nuse jolt_openings::{AdditivelyHomomorphic, CommitmentScheme, OpeningsError};\nuse jolt_poly::EqPolynomial;\nuse jolt_transcript::{AppendToTranscript, LabelWithCount, Transcript};\n".to_owned(),
360+
imports: "use std::collections::BTreeMap;\n\nuse jolt_dory::{DoryCommitment, DoryProof, DoryScheme, DoryVerifierSetup};\nuse jolt_field::Fr;\nuse jolt_openings::{AdditivelyHomomorphic, CommitmentScheme, OpeningsError};\nuse jolt_poly::EqPolynomial;\nuse jolt_transcript::{AppendToTranscript, LabelWithCount, Transcript};\n".to_owned(),
361361
proof_fields: " pub evaluation: Option<JoltEvaluationProof>,\n".to_owned(),
362362
proof_items: "pub type JoltStage2RamAccess = crate::stages::stage2::Stage2RamAccess;\npub type JoltStage2RamOutputLayout = crate::stages::stage2::Stage2RamOutputLayout;\npub type JoltStage2RamData<'a> = crate::stages::stage2::Stage2RamData<'a>;\npub type JoltStageChallengeVector = crate::stages::common::StageChallengeVector<Fr>;\npub type JoltStageExecutionArtifacts = crate::stages::common::StageExecutionArtifacts<Fr>;\npub type JoltStageOpeningInputValue = crate::stages::common::StageOpeningInputValue<Fr>;\n\n#[derive(Clone, Debug)]\npub struct JoltEvaluationProof {\n pub joint_opening_proof: DoryProof,\n}\n\n".to_owned(),
363363
inputs_derive: Some("#[derive(Clone, Copy)]".to_owned()),

crates/bolt/src/protocols/jolt/emit/rust/commitment.rs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ impl CommitmentCpuProgram {
256256
"use std::borrow::Cow;\n\
257257
\n\
258258
use jolt_dory::{DoryCommitment, DoryHint, DoryProverSetup, DoryScheme};\n\
259-
use jolt_field::{Field, Fr};\n\
259+
use jolt_field::Fr;\n\
260260
use jolt_openings::CommitmentScheme as _;\n\
261261
use jolt_poly::{EqPolynomial, MultilinearPoly};\n\
262262
use jolt_transcript::{AppendToTranscript, Blake2bTranscript, LabelWithCount, Transcript};\n\
@@ -540,13 +540,13 @@ impl MultilinearPoly<Fr> for AddressMajorOneHotPolynomial {
540540
result
541541
}
542542
543-
fn is_sparse(&self) -> bool {
543+
fn is_one_hot(&self) -> bool {
544544
true
545545
}
546546
547-
fn for_each_nonzero(&self, f: &mut dyn FnMut(usize, Fr)) {
547+
fn for_each_one(&self, f: &mut dyn FnMut(usize)) {
548548
for flat in self.nonzero_flat_indices() {
549-
f(flat, Fr::from_u64(1));
549+
f(flat);
550550
}
551551
}
552552
}
@@ -908,6 +908,14 @@ impl Default for OneHotChunkCounts {
908908
}
909909
}
910910
}
911+
let input_binding = if initializers
912+
.iter()
913+
.any(|initializer| initializer.contains("inputs."))
914+
{
915+
"inputs"
916+
} else {
917+
"_inputs"
918+
};
911919
let fields = fields.join("\n");
912920
let provider_arms = provider_arms.join("\n");
913921
let initializers = initializers.join("\n");
@@ -930,7 +938,7 @@ impl CommitmentInputProvider for CommitmentOracles {{
930938
}}
931939
932940
pub fn build_commitment_oracles(
933-
inputs: &CommitmentOracleInputs<'_>,
941+
{input_binding}: &CommitmentOracleInputs<'_>,
934942
) -> Result<CommitmentOracles, CommitmentPhaseError> {{
935943
Ok(CommitmentOracles {{
936944
{initializers}

crates/bolt/src/protocols/jolt/emit/rust/stage1.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1067,7 +1067,7 @@ impl Stage1CpuProgram {
10671067

10681068
fn emit_verifier_imports() -> &'static str {
10691069
"use super::common::append_labeled_scalar;\n\
1070-
use jolt_field::{Field, Fr};\n\
1070+
use jolt_field::Fr;\n\
10711071
use jolt_sumcheck::{CompressedLabeledRoundPoly, LabeledRoundPoly, SumcheckClaim, SumcheckError, SumcheckVerifier};\n\
10721072
use jolt_transcript::{Blake2bTranscript, Transcript};"
10731073
}

crates/bolt/src/protocols/jolt/emit/rust/stage2.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -927,7 +927,7 @@ impl Stage2CpuProgram {
927927

928928
fn emit_verifier_imports() -> &'static str {
929929
"use super::common::{append_labeled_scalar, batch_claims, eval_by_name, find_batch, find_plan, pow_field, require_operand_count, reverse_slice, single_operand};\n\
930-
use jolt_field::{Field, Fr};\n\
930+
use jolt_field::{Field, Fr, MulPow2, MulPrimitiveInt, RingCore};\n\
931931
use jolt_poly::lagrange::{lagrange_evals, lagrange_kernel_eval};\n\
932932
use jolt_poly::{EqPolynomial, UnivariatePoly};\n\
933933
use jolt_sumcheck::{CompressedLabeledRoundPoly, SumcheckClaim, SumcheckError, SumcheckVerifier};\n\

crates/bolt/src/protocols/jolt/emit/rust/stage5.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -964,7 +964,7 @@ impl Stage5CpuProgram {
964964

965965
fn emit_verifier_imports() -> &'static str {
966966
"use super::common::{batch_claims, eval_by_name, find_batch, find_plan, identity_polynomial_eval, indexed_evals_by_prefix, indexed_evals_by_prefix_any, lt_polynomial_eval, normalize_instruction_read_raf_point, operand_polynomial_eval, reverse_slice, suffix_point};\n\
967-
use jolt_field::{Field, Fr};\n\
967+
use jolt_field::{Field, Fr, RingCore};\n\
968968
use jolt_lookup_tables::LookupTableKind;\n\
969969
use jolt_poly::EqPolynomial;\n\
970970
use jolt_sumcheck::SumcheckError;\n\

crates/bolt/src/protocols/jolt/emit/rust/stage7.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -985,7 +985,7 @@ impl Stage7CpuProgram {
985985

986986
fn emit_verifier_imports() -> &'static str {
987987
"use super::common::{batch_claims, eval_by_name, find_batch, find_plan, normalize_bytecode_read_raf_point, normalize_instruction_read_raf_point, reverse_slice};\n\
988-
use jolt_field::{Field, Fr};\n\
988+
use jolt_field::{Field, Fr, RingCore};\n\
989989
use jolt_poly::EqPolynomial;\n\
990990
use jolt_sumcheck::SumcheckError;\n\
991991
use jolt_transcript::{Blake2bTranscript, LabelWithCount, Transcript};"

crates/bolt/src/protocols/jolt/params.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ impl JoltProtocolParams {
6161
lookups_ra_virtual_log_k_chunk,
6262
instruction_log_k,
6363
register_log_k: 7,
64-
lookup_table_count: 40,
64+
lookup_table_count: 41,
6565
instruction_d,
6666
instruction_ra_virtual_d,
6767
bytecode_d,

0 commit comments

Comments
 (0)