From 09f731c05dabc4b47f8633cd8e62d488ddf18b19 Mon Sep 17 00:00:00 2001 From: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> Date: Mon, 1 Dec 2025 06:05:24 +0000 Subject: [PATCH] chore: update stark-backend-v2 (use new keygen) --- Cargo.lock | 15 +++---- crates/vm/src/arch/vm.rs | 90 +++++++++++++++++----------------------- 2 files changed, 46 insertions(+), 59 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 356ead7c8d..75a6c6af42 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1492,7 +1492,7 @@ checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "codec-derive" version = "2.0.0-alpha" -source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#896c0c1586db1f1ebd6d45726d484f4381b8ba50" +source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#cd5f17aa032f589dc7b7f05e2bcafe6a1c8bd1a4" dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", @@ -4593,7 +4593,7 @@ dependencies = [ [[package]] name = "openvm-cuda-backend" version = "2.0.0-alpha" -source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#896c0c1586db1f1ebd6d45726d484f4381b8ba50" +source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#cd5f17aa032f589dc7b7f05e2bcafe6a1c8bd1a4" dependencies = [ "bincode 2.0.1", "bincode_derive", @@ -4625,7 +4625,7 @@ dependencies = [ [[package]] name = "openvm-cuda-builder" version = "2.0.0-alpha" -source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#896c0c1586db1f1ebd6d45726d484f4381b8ba50" +source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#cd5f17aa032f589dc7b7f05e2bcafe6a1c8bd1a4" dependencies = [ "cc", "glob", @@ -4634,7 +4634,7 @@ dependencies = [ [[package]] name = "openvm-cuda-common" version = "2.0.0-alpha" -source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#896c0c1586db1f1ebd6d45726d484f4381b8ba50" +source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#cd5f17aa032f589dc7b7f05e2bcafe6a1c8bd1a4" dependencies = [ "bytesize", "ctor", @@ -5394,7 +5394,7 @@ dependencies = [ [[package]] name = "openvm-stark-backend" version = "2.0.0-alpha" -source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#896c0c1586db1f1ebd6d45726d484f4381b8ba50" +source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#cd5f17aa032f589dc7b7f05e2bcafe6a1c8bd1a4" dependencies = [ "bitcode", "cfg-if", @@ -5424,7 +5424,7 @@ dependencies = [ [[package]] name = "openvm-stark-sdk" version = "2.0.0-alpha" -source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#896c0c1586db1f1ebd6d45726d484f4381b8ba50" +source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#cd5f17aa032f589dc7b7f05e2bcafe6a1c8bd1a4" dependencies = [ "dashmap", "derivative", @@ -7744,8 +7744,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "stark-backend-v2" version = "2.0.0-alpha" -source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#896c0c1586db1f1ebd6d45726d484f4381b8ba50" +source = "git+https://github.com/openvm-org/stark-backend.git?branch=develop-v2#cd5f17aa032f589dc7b7f05e2bcafe6a1c8bd1a4" dependencies = [ + "bitcode", "cfg-if", "codec-derive", "derivative", diff --git a/crates/vm/src/arch/vm.rs b/crates/vm/src/arch/vm.rs index 1808fa0786..36dcafc2df 100644 --- a/crates/vm/src/arch/vm.rs +++ b/crates/vm/src/arch/vm.rs @@ -450,22 +450,8 @@ where E: StarkEngine, { let circuit = config.create_airs()?; - // TODO[jpw]: remove; this is just to extract constraints and FRI parameters are not used - let pk = { - use stark_backend_v2::openvm_stark_sdk::{ - config::{baby_bear_poseidon2::BabyBearPoseidon2Engine, FriParameters}, - engine::{StarkEngine as _, StarkFriEngine}, - }; - let engine_v1 = BabyBearPoseidon2Engine::new( - FriParameters::standard_with_100_bits_conjectured_security(2), - ); - let mut builder = engine_v1.keygen_builder(); - for air in circuit.into_airs() { - builder.add_air(air); - } - let pk_v1 = builder.generate_pk(); - MultiStarkProvingKey::from_v1(engine.config(), pk_v1) - }; + let airs = circuit.into_airs().collect_vec(); + let (pk, _vk) = engine.keygen(&airs); let d_pk = engine.device().transport_pk_to_device(&pk); let vm = Self::new(engine, builder, config, d_pk)?; Ok((vm, pk)) @@ -1478,46 +1464,46 @@ where #[cfg(any(debug_assertions, feature = "test-utils", feature = "stark-debug"))] #[tracing::instrument(level = "debug", skip_all)] pub fn debug_proving_ctx( - vm: &VirtualMachine, - pk: &MultiStarkProvingKey, - ctx: &ProvingContext, + _vm: &VirtualMachine, + _pk: &MultiStarkProvingKey, + _ctx: &ProvingContext, ) where E: StarkEngine, VB: VmBuilder, { - use itertools::multiunzip; - use openvm_stark_backend::prover::types::AirProofRawInput; - use stark_backend_v2::prover::StridedColMajorMatrixView; - - let device = vm.engine.device(); - let air_inv = vm.config().create_airs().unwrap(); - let global_airs = air_inv.into_airs().collect_vec(); - let (_airs, _pks, _proof_inputs): (Vec<_>, Vec<_>, Vec<_>) = - multiunzip(ctx.per_trace.iter().map(|(air_id, air_ctx)| { - // Transfer from device **back** to host so the debugger can read the data. - let cached_mains = air_ctx - .cached_mains - .iter() - .map(|cd| { - let data = device.transport_pcs_data_from_device_to_host(&cd.data); - Arc::new(data.mat_view(0).to_row_major_matrix()) - }) - .collect_vec(); - let matrix = device.transport_matrix_from_device_to_host(&air_ctx.common_main); - let common_main = - StridedColMajorMatrixView::from(matrix.as_view()).to_row_major_matrix(); - let public_values = air_ctx.public_values.clone(); - let raw = AirProofRawInput { - cached_mains, - common_main: Some(Arc::new(common_main)), - public_values, - }; - ( - global_airs[*air_id].clone(), - pk.per_air[*air_id].clone(), - raw, - ) - })); + // use itertools::multiunzip; + // use openvm_stark_backend::prover::types::AirProofRawInput; + // use stark_backend_v2::prover::StridedColMajorMatrixView; + + // let device = vm.engine.device(); + // let air_inv = vm.config().create_airs().unwrap(); + // let global_airs = air_inv.into_airs().collect_vec(); + // let (_airs, _pks, _proof_inputs): (Vec<_>, Vec<_>, Vec<_>) = + // multiunzip(ctx.per_trace.iter().map(|(air_id, air_ctx)| { + // // Transfer from device **back** to host so the debugger can read the data. + // let cached_mains = air_ctx + // .cached_mains + // .iter() + // .map(|cd| { + // todo!(); + // Arc::new(data.mat_view(0).to_row_major_matrix()) + // }) + // .collect_vec(); + // let matrix = device.transport_matrix_from_device_to_host(&air_ctx.common_main); + // let common_main = + // StridedColMajorMatrixView::from(matrix.as_view()).to_row_major_matrix(); + // let public_values = air_ctx.public_values.clone(); + // let raw = AirProofRawInput { + // cached_mains, + // common_main: Some(Arc::new(common_main)), + // public_values, + // }; + // ( + // global_airs[*air_id].clone(), + // pk.per_air[*air_id].clone(), + // raw, + // ) + // })); // TODO // vm.engine.debug(&airs, &pks, &proof_inputs);