From 6b44e1e4b0c9f4817f769c8af8eb8e8765da7c3d Mon Sep 17 00:00:00 2001 From: YairVaknin-starkware Date: Thu, 28 May 2026 14:26:24 +0300 Subject: [PATCH] Add snapshot test of privacy bootloader program hash --- Cargo.lock | 17 ++++++++++++++ Cargo.toml | 1 + crates/privacy_circuit_verify/src/consts.rs | 10 ++------- crates/privacy_prove/Cargo.toml | 1 + crates/privacy_prove/src/tests.rs | 25 +++++++++++++++++++++ 5 files changed, 46 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bcd1c996..a5a0fb89 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1808,6 +1808,12 @@ dependencies = [ "crypto-common 0.2.1", ] +[[package]] +name = "dissimilar" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aeda16ab4059c5fd2a83f2b9c9e9c981327b18aa8e3b313f7e6563799d4f093e" + [[package]] name = "downcast" version = "0.11.0" @@ -1941,6 +1947,16 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "expect-test" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63af43ff4431e848fb47472a920f14fa71c24de13255a5692e93d4e90302acb0" +dependencies = [ + "dissimilar", + "once_cell", +] + [[package]] name = "fastrand" version = "2.4.1" @@ -3179,6 +3195,7 @@ dependencies = [ "circuits-stark-verifier", "clap", "ctor", + "expect-test", "itertools 0.12.1", "log", "mockall", diff --git a/Cargo.toml b/Cargo.toml index 1e6e56a1..3810da69 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,6 +42,7 @@ tracing = "0.1.40" tracing-subscriber = { version = "0.3", features = ["env-filter"] } mockall = "0.13.1" rstest = "0.21" +expect-test = "1.4" # cairo-vm cairo-vm = { version = "=3.2.0", features = [ diff --git a/crates/privacy_circuit_verify/src/consts.rs b/crates/privacy_circuit_verify/src/consts.rs index 133e7aa1..031240ca 100644 --- a/crates/privacy_circuit_verify/src/consts.rs +++ b/crates/privacy_circuit_verify/src/consts.rs @@ -23,14 +23,8 @@ pub const MAX_CAIRO_PROOF_UNCOMPRESSED_BYTES: usize = pub const MAX_RECURSIVE_PROOF_UNCOMPRESSED_BYTES: usize = RECURSIVE_PROOF_UNCOMPRESSED_BYTES * PROOF_MAX_DECOMPRESSED_RATIO; -// Source code for this compiled privacy bootloader can be found at: -// repo: https://github.com/starkware-industries/starkware -// branch: "dev" -// commit: "4d1ae5848dd49802ddd620601d2d1bb303d15c66" -// md5sum: "0494f41365e482142d04b58bd64aa5fe" -// Compiled by command: -// `bazel build --config=rbe -// //src/starkware/cairo/bootloaders/simple_bootloader:privacy_simple_bootloader_program` +// See comment in privacy_prove::tests::test_privacy_bootloader_program_hash_snapshot for more +// details on how this file was compiled. pub const PRIVACY_BOOTLOADER_JSON: &[u8] = include_bytes!( "../../cairo-program-runner-lib/resources/compiled_programs/bootloaders/privacy_simple_bootloader_compiled.json" ); diff --git a/crates/privacy_prove/Cargo.toml b/crates/privacy_prove/Cargo.toml index 1aca37c6..e723c4a5 100644 --- a/crates/privacy_prove/Cargo.toml +++ b/crates/privacy_prove/Cargo.toml @@ -56,6 +56,7 @@ stwo = { version = "2.2.0", features = ["parallel"] } [dev-dependencies] ctor.workspace = true +expect-test.workspace = true mockall.workspace = true rstest.workspace = true tracing-subscriber.workspace = true diff --git a/crates/privacy_prove/src/tests.rs b/crates/privacy_prove/src/tests.rs index 32638c06..83458a37 100644 --- a/crates/privacy_prove/src/tests.rs +++ b/crates/privacy_prove/src/tests.rs @@ -1,3 +1,28 @@ +#[test] +fn test_privacy_bootloader_program_hash_snapshot() { + use cairo_program_runner_lib::compute_program_hash_chain; + use cairo_program_runner_lib::types::HashFunc; + use expect_test::expect; + use privacy_circuit_verify::get_privacy_bootloader_program; + + let bootloader_program = get_privacy_bootloader_program().unwrap(); + let stripped_program = bootloader_program.get_stripped_program().unwrap(); + let program_hash = compute_program_hash_chain(&stripped_program, 0, HashFunc::Blake) + .expect("Failed to compute program hash."); + + // Source code for this compiled privacy bootloader can be found at: + // repo: https://github.com/starkware-industries/starkware + // branch: "dev" + // commit: "4d1ae5848dd49802ddd620601d2d1bb303d15c66" + // md5sum: "0494f41365e482142d04b58bd64aa5fe" + // Compiled by command: + // `bazel build --config=rbe + // //src/starkware/cairo/bootloaders/simple_bootloader:privacy_simple_bootloader_program` + let expected_hash_str = + expect!["1750040183559192178681351064048820676105364457180846249135562594342068277738"]; + expected_hash_str.assert_eq(&program_hash.to_string()); +} + #[cfg(feature = "slow-tests")] pub mod slow_tests { use std::path::PathBuf;