Skip to content

Commit

Permalink
chore: stark-backend v0.2.0 and replace AnyRap with AirRef (#1275)
Browse files Browse the repository at this point in the history
* chore: api

* chore: sync stark-backend commit

* rename AnyRap to AirRef

* more switches

* fix compile errors

* remove all AnyRap

* chore: fix imports

* chore: clippy

* fix: filter airs for testing

* chore: tag stark-backend

* chore: stark-backend metrics

* chore: update prof
  • Loading branch information
jonathanpwang authored Jan 25, 2025
1 parent 3c543fb commit e2049be
Show file tree
Hide file tree
Showing 89 changed files with 716 additions and 610 deletions.
469 changes: 269 additions & 200 deletions Cargo.lock

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ lto = "thin"

[workspace.dependencies]
# Stark Backend
openvm-stark-backend = { git = "https://github.com/openvm-org/stark-backend.git", rev = "d2788c", default-features = false }
openvm-stark-sdk = { git = "https://github.com/openvm-org/stark-backend.git", rev = "d2788c", default-features = false }
openvm-stark-backend = { git = "https://github.com/openvm-org/stark-backend.git", tag = "v0.2.1-alpha", default-features = false }
openvm-stark-sdk = { git = "https://github.com/openvm-org/stark-backend.git", tag = "v0.2.1-alpha", default-features = false }

# OpenVM
openvm-sdk = { path = "crates/sdk", default-features = false }
Expand Down
6 changes: 3 additions & 3 deletions benchmarks/src/bin/verify_fibair.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ use openvm_sdk::{
};
use openvm_stark_sdk::{
bench::run_with_metric_collection,
collect_airs_and_inputs,
config::{baby_bear_poseidon2::BabyBearPoseidon2Engine, FriParameters},
dummy_airs::fib_air::chip::FibonacciChip,
engine::StarkFriEngine,
Expand All @@ -35,9 +36,8 @@ fn main() -> Result<()> {

run_with_metric_collection("OUTPUT_PATH", || -> Result<()> {
// run_test tries to setup tracing, but it will be ignored since run_with_metric_collection already sets it.
let vdata = engine
.run_test(vec![fib_chip.generate_air_proof_input()])
.unwrap();
let (fib_air, fib_input) = collect_airs_and_inputs!(fib_chip);
let vdata = engine.run_test(fib_air, fib_input).unwrap();
// Unlike other apps, this "app" does not have continuations enabled.
let app_fri_params =
FriParameters::standard_with_100_bits_conjectured_security(leaf_log_blowup);
Expand Down
4 changes: 2 additions & 2 deletions crates/circuits/primitives/derive/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ pub fn chip_derive(input: TokenStream) -> TokenStream {
.push(syn::parse_quote! { #inner_ty: openvm_stark_backend::Chip<SC> });
quote! {
impl #impl_generics openvm_stark_backend::Chip<SC> for #name #ty_generics #where_clause {
fn air(&self) -> std::sync::Arc<dyn openvm_stark_backend::rap::AnyRap<SC>> {
fn air(&self) -> openvm_stark_backend::AirRef<SC> {
self.0.air()
}
fn generate_air_proof_input(self) -> openvm_stark_backend::prover::types::AirProofInput<SC> {
Expand Down Expand Up @@ -195,7 +195,7 @@ pub fn chip_derive(input: TokenStream) -> TokenStream {

quote! {
impl #impl_generics openvm_stark_backend::Chip<SC> for #name #ty_generics #where_clause {
fn air(&self) -> std::sync::Arc<dyn openvm_stark_backend::rap::AnyRap<SC>> {
fn air(&self) -> openvm_stark_backend::AirRef<SC> {
match self {
#(#air_arms,)*
}
Expand Down
10 changes: 5 additions & 5 deletions crates/circuits/primitives/src/bitwise_op_lookup/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ use openvm_stark_backend::{
p3_field::{Field, FieldAlgebra},
p3_matrix::{dense::RowMajorMatrix, Matrix},
prover::types::AirProofInput,
rap::{get_air_name, AnyRap, BaseAirWithPublicValues, PartitionedBaseAir},
Chip, ChipUsageGetter, Stateful,
rap::{get_air_name, BaseAirWithPublicValues, PartitionedBaseAir},
AirRef, Chip, ChipUsageGetter, Stateful,
};

mod bus;
Expand Down Expand Up @@ -210,20 +210,20 @@ impl<const NUM_BITS: usize> SharedBitwiseOperationLookupChip<NUM_BITS> {
impl<SC: StarkGenericConfig, const NUM_BITS: usize> Chip<SC>
for BitwiseOperationLookupChip<NUM_BITS>
{
fn air(&self) -> Arc<dyn AnyRap<SC>> {
fn air(&self) -> AirRef<SC> {
Arc::new(self.air)
}

fn generate_air_proof_input(self) -> AirProofInput<SC> {
let trace = self.generate_trace::<Val<SC>>();
AirProofInput::simple_no_pis(Arc::new(self.air), trace)
AirProofInput::simple_no_pis(trace)
}
}

impl<SC: StarkGenericConfig, const NUM_BITS: usize> Chip<SC>
for SharedBitwiseOperationLookupChip<NUM_BITS>
{
fn air(&self) -> Arc<dyn AnyRap<SC>> {
fn air(&self) -> AirRef<SC> {
self.0.air()
}

Expand Down
14 changes: 6 additions & 8 deletions crates/circuits/primitives/src/bitwise_op_lookup/tests/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ use openvm_stark_backend::{
p3_field::FieldAlgebra,
p3_matrix::dense::RowMajorMatrix,
p3_maybe_rayon::prelude::{IntoParallelRefIterator, ParallelIterator},
prover::USE_DEBUG_BUILDER,
rap::AnyRap,
utils::disable_debug_builder,
verifier::VerificationError,
AirRef,
};
use openvm_stark_sdk::{
any_rap_arc_vec, config::baby_bear_poseidon2::BabyBearPoseidon2Engine, engine::StarkFriEngine,
Expand Down Expand Up @@ -70,9 +70,9 @@ fn test_bitwise_operation_lookup() {

let chips = dummies
.into_iter()
.map(|list| Arc::new(list) as Arc<dyn AnyRap<_>>)
.chain(iter::once(Arc::new(lookup.air) as Arc<dyn AnyRap<_>>))
.collect::<Vec<Arc<dyn AnyRap<_>>>>();
.map(|list| Arc::new(list) as AirRef<_>)
.chain(iter::once(Arc::new(lookup.air) as AirRef<_>))
.collect::<Vec<AirRef<_>>>();

let mut traces = lists
.par_iter()
Expand Down Expand Up @@ -129,9 +129,7 @@ fn run_negative_test(bad_row: (u32, u32, u32, BitwiseOperation)) {
lookup.generate_trace(),
];

USE_DEBUG_BUILDER.with(|debug| {
*debug.lock().unwrap() = false;
});
disable_debug_builder();
assert_eq!(
BabyBearPoseidon2Engine::run_simple_test_no_pis_fast(chips, traces).err(),
Some(VerificationError::ChallengePhaseError),
Expand Down
6 changes: 2 additions & 4 deletions crates/circuits/primitives/src/range/tests/mod.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
use std::{iter, sync::Arc};

use list::ListChip;
use openvm_stark_backend::{
p3_matrix::dense::RowMajorMatrix, p3_maybe_rayon::prelude::*, rap::AnyRap,
};
use openvm_stark_backend::{p3_matrix::dense::RowMajorMatrix, p3_maybe_rayon::prelude::*, AirRef};
use openvm_stark_sdk::{
config::baby_bear_blake3::BabyBearBlake3Engine, engine::StarkFriEngine, p3_baby_bear::BabyBear,
utils::create_seeded_rng,
Expand Down Expand Up @@ -53,7 +51,7 @@ fn test_list_range_checker() {

let range_trace = range_checker.generate_trace();

let mut all_chips: Vec<Arc<dyn AnyRap<_>>> = vec![];
let mut all_chips: Vec<AirRef<_>> = vec![];
for list in lists {
all_chips.push(Arc::new(list.air));
}
Expand Down
4 changes: 2 additions & 2 deletions crates/circuits/primitives/src/range_gate/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use std::{iter, sync::Arc};

use openvm_stark_backend::{
p3_field::FieldAlgebra, p3_matrix::dense::RowMajorMatrix, p3_maybe_rayon::prelude::*,
rap::AnyRap, utils::disable_debug_builder, verifier::VerificationError,
utils::disable_debug_builder, verifier::VerificationError, AirRef,
};
use openvm_stark_sdk::{
any_rap_arc_vec, config::baby_bear_blake3::BabyBearBlake3Engine,
Expand Down Expand Up @@ -61,7 +61,7 @@ fn test_range_gate_chip() {

let mut all_chips = lists
.into_iter()
.map(|list| Arc::new(list) as Arc<dyn AnyRap<_>>)
.map(|list| Arc::new(list) as AirRef<_>)
.collect::<Vec<_>>();
all_chips.push(Arc::new(range_checker.air));

Expand Down
10 changes: 5 additions & 5 deletions crates/circuits/primitives/src/range_tuple/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ use openvm_stark_backend::{
p3_field::{Field, PrimeField32},
p3_matrix::{dense::RowMajorMatrix, Matrix},
prover::types::AirProofInput,
rap::{get_air_name, AnyRap, BaseAirWithPublicValues, PartitionedBaseAir},
Chip, ChipUsageGetter, Stateful,
rap::{get_air_name, BaseAirWithPublicValues, PartitionedBaseAir},
AirRef, Chip, ChipUsageGetter, Stateful,
};

mod bus;
Expand Down Expand Up @@ -188,21 +188,21 @@ impl<SC: StarkGenericConfig, const N: usize> Chip<SC> for RangeTupleCheckerChip<
where
Val<SC>: PrimeField32,
{
fn air(&self) -> Arc<dyn AnyRap<SC>> {
fn air(&self) -> AirRef<SC> {
Arc::new(self.air)
}

fn generate_air_proof_input(self) -> AirProofInput<SC> {
let trace = self.generate_trace::<Val<SC>>();
AirProofInput::simple_no_pis(Arc::new(self.air), trace)
AirProofInput::simple_no_pis(trace)
}
}

impl<SC: StarkGenericConfig, const N: usize> Chip<SC> for SharedRangeTupleCheckerChip<N>
where
Val<SC>: PrimeField32,
{
fn air(&self) -> Arc<dyn AnyRap<SC>> {
fn air(&self) -> AirRef<SC> {
self.0.air()
}

Expand Down
5 changes: 2 additions & 3 deletions crates/circuits/primitives/src/range_tuple/tests.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
use std::{array, iter, sync::Arc};

use openvm_stark_backend::{
p3_field::FieldAlgebra, p3_matrix::dense::RowMajorMatrix, p3_maybe_rayon::prelude::*,
rap::AnyRap,
p3_field::FieldAlgebra, p3_matrix::dense::RowMajorMatrix, p3_maybe_rayon::prelude::*, AirRef,
};
use openvm_stark_sdk::{
config::baby_bear_blake3::BabyBearBlake3Engine,
Expand Down Expand Up @@ -46,7 +45,7 @@ fn test_range_tuple_chip() {

let mut all_chips = lists_airs
.into_iter()
.map(|list| Arc::new(list) as Arc<dyn AnyRap<_>>)
.map(|list| Arc::new(list) as AirRef<_>)
.collect::<Vec<_>>();
all_chips.push(Arc::new(range_checker.air));

Expand Down
10 changes: 5 additions & 5 deletions crates/circuits/primitives/src/var_range/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ use openvm_stark_backend::{
p3_field::{Field, PrimeField32},
p3_matrix::{dense::RowMajorMatrix, Matrix},
prover::types::AirProofInput,
rap::{get_air_name, AnyRap, BaseAirWithPublicValues, PartitionedBaseAir},
Chip, ChipUsageGetter, Stateful,
rap::{get_air_name, BaseAirWithPublicValues, PartitionedBaseAir},
AirRef, Chip, ChipUsageGetter, Stateful,
};
use tracing::instrument;

Expand Down Expand Up @@ -219,21 +219,21 @@ impl<SC: StarkGenericConfig> Chip<SC> for VariableRangeCheckerChip
where
Val<SC>: PrimeField32,
{
fn air(&self) -> Arc<dyn AnyRap<SC>> {
fn air(&self) -> AirRef<SC> {
Arc::new(self.air)
}

fn generate_air_proof_input(self) -> AirProofInput<SC> {
let trace = self.generate_trace::<Val<SC>>();
AirProofInput::simple_no_pis(Arc::new(self.air), trace)
AirProofInput::simple_no_pis(trace)
}
}

impl<SC: StarkGenericConfig> Chip<SC> for SharedVariableRangeCheckerChip
where
Val<SC>: PrimeField32,
{
fn air(&self) -> Arc<dyn AnyRap<SC>> {
fn air(&self) -> AirRef<SC> {
self.0.air()
}

Expand Down
14 changes: 5 additions & 9 deletions crates/circuits/primitives/src/var_range/tests/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use std::{iter, sync::Arc};

use openvm_stark_backend::{
p3_field::FieldAlgebra, p3_matrix::dense::RowMajorMatrix, p3_maybe_rayon::prelude::*,
prover::USE_DEBUG_BUILDER, rap::AnyRap, verifier::VerificationError,
utils::disable_debug_builder, verifier::VerificationError, AirRef,
};
use openvm_stark_sdk::{
any_rap_arc_vec, config::baby_bear_blake3::BabyBearBlake3Engine, engine::StarkFriEngine,
Expand Down Expand Up @@ -50,7 +50,7 @@ fn test_variable_range_checker_chip_send() {

let mut all_chips = lists_airs
.into_iter()
.map(|list| Arc::new(list) as Arc<dyn AnyRap<_>>)
.map(|list| Arc::new(list) as AirRef<_>)
.collect::<Vec<_>>();
all_chips.push(Arc::new(var_range_checker.air));

Expand Down Expand Up @@ -123,9 +123,7 @@ fn negative_test_variable_range_checker_chip_send() {
let var_range_trace = var_range_checker.generate_trace();
let all_traces = vec![list_trace, var_range_trace];

USE_DEBUG_BUILDER.with(|debug| {
*debug.lock().unwrap() = false;
});
disable_debug_builder();
assert_eq!(
BabyBearBlake3Engine::run_simple_test_no_pis_fast(all_chips, all_traces).err(),
Some(VerificationError::ChallengePhaseError),
Expand Down Expand Up @@ -163,7 +161,7 @@ fn test_variable_range_checker_chip_range_check() {

let mut all_chips = lists_airs
.into_iter()
.map(|list| Arc::new(list) as Arc<dyn AnyRap<_>>)
.map(|list| Arc::new(list) as AirRef<_>)
.collect::<Vec<_>>();
all_chips.push(Arc::new(var_range_checker.air));

Expand Down Expand Up @@ -234,9 +232,7 @@ fn negative_test_variable_range_checker_chip_range_check() {
let var_range_trace = var_range_checker.generate_trace();
let all_traces = vec![list_trace, var_range_trace];

USE_DEBUG_BUILDER.with(|debug| {
*debug.lock().unwrap() = false;
});
disable_debug_builder();
assert_eq!(
BabyBearBlake3Engine::run_simple_test_no_pis_fast(all_chips, all_traces).err(),
Some(VerificationError::ChallengePhaseError),
Expand Down
8 changes: 4 additions & 4 deletions crates/circuits/primitives/src/xor/lookup/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ use openvm_stark_backend::{
p3_field::Field,
p3_matrix::{dense::RowMajorMatrix, Matrix},
prover::types::AirProofInput,
rap::{get_air_name, AnyRap, BaseAirWithPublicValues, PartitionedBaseAir},
Chip, ChipUsageGetter,
rap::{get_air_name, BaseAirWithPublicValues, PartitionedBaseAir},
AirRef, Chip, ChipUsageGetter,
};

use super::bus::XorBus;
Expand Down Expand Up @@ -154,13 +154,13 @@ impl<const M: usize> XorLookupChip<M> {
}

impl<SC: StarkGenericConfig, const M: usize> Chip<SC> for XorLookupChip<M> {
fn air(&self) -> Arc<dyn AnyRap<SC>> {
fn air(&self) -> AirRef<SC> {
Arc::new(self.air)
}

fn generate_air_proof_input(self) -> AirProofInput<SC> {
let trace = self.generate_trace::<Val<SC>>();
AirProofInput::simple_no_pis(Arc::new(self.air), trace)
AirProofInput::simple_no_pis(trace)
}
}

Expand Down
4 changes: 2 additions & 2 deletions crates/circuits/primitives/src/xor/lookup/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use std::{iter, sync::Arc};

use openvm_stark_backend::{
p3_field::FieldAlgebra, p3_matrix::dense::RowMajorMatrix, p3_maybe_rayon::prelude::*,
rap::AnyRap, utils::disable_debug_builder, verifier::VerificationError,
utils::disable_debug_builder, verifier::VerificationError, AirRef,
};
use openvm_stark_sdk::{
any_rap_arc_vec, config::baby_bear_blake3::BabyBearBlake3Engine,
Expand Down Expand Up @@ -68,7 +68,7 @@ fn test_xor_limbs_chip() {

let xor_trace = xor_chip.generate_trace();

let mut all_chips: Vec<Arc<dyn AnyRap<_>>> = vec![];
let mut all_chips: Vec<AirRef<_>> = vec![];
for requester in requesters {
all_chips.push(Arc::new(requester));
}
Expand Down
9 changes: 4 additions & 5 deletions crates/circuits/sha256-air/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ use openvm_stark_backend::{
p3_air::{Air, BaseAir},
p3_field::{Field, PrimeField32},
prover::types::AirProofInput,
rap::{get_air_name, AnyRap, BaseAirWithPublicValues, PartitionedBaseAir},
Chip, ChipUsageGetter,
rap::{get_air_name, BaseAirWithPublicValues, PartitionedBaseAir},
AirRef, Chip, ChipUsageGetter,
};
use openvm_stark_sdk::utils::create_seeded_rng;
use rand::Rng;
Expand Down Expand Up @@ -54,18 +54,17 @@ impl<SC: StarkGenericConfig> Chip<SC> for Sha256TestChip
where
Val<SC>: PrimeField32,
{
fn air(&self) -> Arc<dyn AnyRap<SC>> {
fn air(&self) -> AirRef<SC> {
Arc::new(self.air.clone())
}

fn generate_air_proof_input(self) -> AirProofInput<SC> {
let air = self.air();
let trace = crate::generate_trace::<Val<SC>>(
&self.air.sub_air,
self.bitwise_lookup_chip.clone(),
self.records,
);
AirProofInput::simple(air, trace, vec![])
AirProofInput::simple_no_pis(trace)
}
}

Expand Down
1 change: 1 addition & 0 deletions crates/prof/src/aggregate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ pub const VM_METRIC_NAMES: &[&str] = &[
"main_trace_commit_time_ms",
"generate_perm_trace_time_ms",
"perm_trace_commit_time_ms",
"quotient_extended_view_time_ms",
"quotient_poly_compute_time_ms",
"quotient_poly_commit_time_ms",
"pcs_opening_time_ms",
Expand Down
10 changes: 3 additions & 7 deletions crates/sdk/src/commit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,9 @@ impl AppExecutionCommit<F> {
);
let hasher = vm_poseidon2_hasher();
let memory_dimensions = app_vm_config.system().memory_config.memory_dimensions();
let app_program_commit: [F; DIGEST_SIZE] =
app_exe.committed_program.prover_data.commit.into();
let leaf_verifier_program_commit: [F; DIGEST_SIZE] = leaf_vm_verifier_exe
.committed_program
.prover_data
.commit
.into();
let app_program_commit: [F; DIGEST_SIZE] = app_exe.committed_program.commitment.into();
let leaf_verifier_program_commit: [F; DIGEST_SIZE] =
leaf_vm_verifier_exe.committed_program.commitment.into();

let mem_config = app_vm_config.system().memory_config;
let init_memory_commit = MemoryNode::tree_from_memory(
Expand Down
Loading

0 comments on commit e2049be

Please sign in to comment.