From a2c4aa5ad079401526ece6bb2676d536d2ef5f41 Mon Sep 17 00:00:00 2001 From: Dam Date: Thu, 16 Jul 2026 16:58:54 +0200 Subject: [PATCH 1/4] feat(stm): Updated the Blake2b transcript hash used --- .../tests/common/generators/proofs.rs | 12 +++--- .../src/proof_system/ivc_halo2_snark/proof.rs | 38 ++++++++++--------- .../src/protocol/aggregate_signature/clerk.rs | 6 ++- .../protocol/aggregate_signature/signature.rs | 12 ++++-- 4 files changed, 39 insertions(+), 29 deletions(-) diff --git a/mithril-stm/src/circuits/halo2_ivc/tests/common/generators/proofs.rs b/mithril-stm/src/circuits/halo2_ivc/tests/common/generators/proofs.rs index 0a6b33c2f6d..78bea6941c7 100644 --- a/mithril-stm/src/circuits/halo2_ivc/tests/common/generators/proofs.rs +++ b/mithril-stm/src/circuits/halo2_ivc/tests/common/generators/proofs.rs @@ -6,9 +6,11 @@ use midnight_circuits::hash::poseidon::PoseidonState; use midnight_curves::Bls12; use midnight_proofs::{ plonk::{create_proof, prepare}, - poly::commitment::PolynomialCommitmentScheme, - poly::kzg::{KZGCommitmentScheme, msm::DualMSM, params::ParamsKZG}, - transcript::{CircuitTranscript, Hashable, Sampleable, Transcript, TranscriptHash}, + poly::{ + commitment::PolynomialCommitmentScheme, + kzg::{KZGCommitmentScheme, msm::DualMSM, params::ParamsKZG}, + }, + transcript::{Blake2b256, CircuitTranscript, Hashable, Sampleable, Transcript, TranscriptHash}, }; use rand_core::{CryptoRng, RngCore}; @@ -117,7 +119,7 @@ pub(crate) fn prove_blake2b_ivc( public_inputs: &[NativeField], random_generator: &mut (impl RngCore + CryptoRng), ) -> Vec { - prove_ivc_with_transcript::( + prove_ivc_with_transcript::( commitment_parameters, proving_key, ivc_circuit_data, @@ -163,7 +165,7 @@ pub(crate) fn verify_prepare_blake2b_ivc( proof: &[u8], public_inputs: &[NativeField], ) -> DualMSM { - verify_prepare_ivc_with_transcript::( + verify_prepare_ivc_with_transcript::( verifying_key, proof, public_inputs, diff --git a/mithril-stm/src/proof_system/ivc_halo2_snark/proof.rs b/mithril-stm/src/proof_system/ivc_halo2_snark/proof.rs index d700c84ff0b..025f460808f 100644 --- a/mithril-stm/src/proof_system/ivc_halo2_snark/proof.rs +++ b/mithril-stm/src/proof_system/ivc_halo2_snark/proof.rs @@ -17,7 +17,7 @@ use midnight_proofs::{ commitment::PolynomialCommitmentScheme, kzg::{KZGCommitmentScheme, params::ParamsKZG}, }, - transcript::{CircuitTranscript, Hashable, Sampleable, Transcript, TranscriptHash}, + transcript::{Blake2b256, CircuitTranscript, Hashable, Sampleable, Transcript, TranscriptHash}, }; use rand_core::{CryptoRng, RngCore}; use serde::{Deserialize, Serialize}; @@ -314,7 +314,7 @@ impl IvcProver { protocol_message_preimage: &ProtocolMessagePreimage, genesis_bootstrap: &IvcGenesisBootstrapInput, rolling_state: Option<&IvcRollingState>, - ) -> StmResult<(IvcProof, Option)> { + ) -> StmResult<(IvcProof, Option)> { ensure_advanceable_rolling_state(rolling_state)?; // `rolling_state = None` is the first certificate: bootstrap from genesis internally, @@ -378,7 +378,7 @@ impl IvcProver { None }; - let blake2b_bytes = IvcProof::::prove_with_transcript( + let blake2b_bytes = IvcProof::::prove_with_transcript( &self.ivc_setup.srs, &self.ivc_setup.ivc_proving_key, &circuit_data, @@ -454,6 +454,8 @@ impl IvcProver { #[cfg(test)] mod tests { + use midnight_proofs::transcript::Blake2b256; + use crate::{ circuits::halo2_ivc::{ state::Global, @@ -528,7 +530,7 @@ mod tests { verification_context.combined_fixed_bases, ); - let proof = IvcProof::::new( + let proof = IvcProof::::new( step_output.ivc_proof, step_output.next_state, step_output.next_accumulator, @@ -544,15 +546,15 @@ mod tests { let step_output = load_embedded_next_epoch_step_output_asset() .expect("recursive step output asset should load"); - let proof = IvcProof::::new( + let proof = IvcProof::::new( step_output.ivc_proof, step_output.next_state, step_output.next_accumulator, ); let bytes = proof.to_bytes().expect("serialization should not fail"); - let restored = IvcProof::::from_bytes(&bytes) - .expect("deserialization should not fail"); + let restored = + IvcProof::::from_bytes(&bytes).expect("deserialization should not fail"); assert_eq!( bytes, @@ -565,7 +567,7 @@ mod tests { let step_output = load_embedded_next_epoch_step_output_asset() .expect("recursive step output asset should load"); - let proof = IvcProof::::new( + let proof = IvcProof::::new( step_output.ivc_proof, step_output.next_state, step_output.next_accumulator, @@ -584,7 +586,7 @@ mod tests { let mut wrong_msg = STEP_OUTPUT_MSG; wrong_msg[0] ^= 0xff; - let proof = IvcProof::::new( + let proof = IvcProof::::new( step_output.ivc_proof, step_output.next_state, step_output.next_accumulator, @@ -623,7 +625,7 @@ mod tests { verification_context.combined_fixed_bases, ); - let proof = IvcProof::::new( + let proof = IvcProof::::new( step_output.ivc_proof, step_output.next_state, step_output.next_accumulator, @@ -652,7 +654,7 @@ mod tests { let mid = tampered_bytes.len() / 2; tampered_bytes[mid] ^= 0xff; - let proof = IvcProof::::new( + let proof = IvcProof::::new( IvcProofBytes::new(tampered_bytes), step_output.next_state, step_output.next_accumulator, @@ -676,7 +678,7 @@ mod tests { step_output.next_state.message = MessageHash::ZERO; - let proof = IvcProof::::new( + let proof = IvcProof::::new( step_output.ivc_proof, step_output.next_state, step_output.next_accumulator, @@ -703,7 +705,7 @@ mod tests { let tampered_msg = &[0u8; 32]; step_output.next_state.message = MessageHash::ZERO; - let proof = IvcProof::::new( + let proof = IvcProof::::new( step_output.ivc_proof, step_output.next_state, step_output.next_accumulator, @@ -730,7 +732,7 @@ mod tests { let same_epoch = load_embedded_following_certificate_in_epoch_asset() .expect("same-epoch step output asset should load"); - let proof = IvcProof::::new( + let proof = IvcProof::::new( step_output.ivc_proof, same_epoch.next_state, step_output.next_accumulator, @@ -757,7 +759,7 @@ mod tests { let same_epoch = load_embedded_following_certificate_in_epoch_asset() .expect("same-epoch step output asset should load"); - let proof = IvcProof::::new( + let proof = IvcProof::::new( step_output.ivc_proof, step_output.next_state, same_epoch.next_accumulator, @@ -775,14 +777,14 @@ mod tests { #[test] fn ivc_proof_verify_rejects_poseidon_proof_bytes() { - // Constructing an `IvcProof` with Poseidon-transcript bytes + // Constructing an `IvcProof` with Poseidon-transcript bytes // and verifying it with the Blake2b path must fail: the two transcript formats // are not interchangeable. let (global, verifier_setup) = build_proof_verifier_context(); let chain_state = load_embedded_recursive_chain_state_asset() .expect("recursive chain state asset should load"); - let proof = IvcProof::::new( + let proof = IvcProof::::new( chain_state.ivc_proof, chain_state.state, chain_state.accumulator, @@ -825,7 +827,7 @@ mod tests { wrong_fixed_bases, ); - let proof = IvcProof::::new( + let proof = IvcProof::::new( step_output.ivc_proof, step_output.next_state, step_output.next_accumulator, diff --git a/mithril-stm/src/protocol/aggregate_signature/clerk.rs b/mithril-stm/src/protocol/aggregate_signature/clerk.rs index 810a9e57bb9..f117467f16f 100644 --- a/mithril-stm/src/protocol/aggregate_signature/clerk.rs +++ b/mithril-stm/src/protocol/aggregate_signature/clerk.rs @@ -1,11 +1,13 @@ -use anyhow::Context; use std::marker::PhantomData; #[cfg(feature = "future_snark")] use std::sync::Arc; +use anyhow::Context; #[cfg(feature = "future_snark")] use anyhow::anyhow; #[cfg(feature = "future_snark")] +use midnight_proofs::transcript::Blake2b256; +#[cfg(feature = "future_snark")] use rand_core::OsRng; use crate::{ @@ -261,7 +263,7 @@ fn ivc_prover_input_preparation_and_prove( ivc_prover_setup: Arc, certificate_verifying_key: NonRecursiveCircuitVerifyingKey, ) -> StmResult<( - IvcProof, + IvcProof, Option, AncillaryVerifierData, )> { diff --git a/mithril-stm/src/protocol/aggregate_signature/signature.rs b/mithril-stm/src/protocol/aggregate_signature/signature.rs index 19f5865e66d..06195fc0206 100644 --- a/mithril-stm/src/protocol/aggregate_signature/signature.rs +++ b/mithril-stm/src/protocol/aggregate_signature/signature.rs @@ -1,6 +1,8 @@ use std::{collections::HashMap, fmt::Display, hash::Hash, str::FromStr}; use anyhow::anyhow; +#[cfg(feature = "future_snark")] +use midnight_proofs::transcript::Blake2b256; use serde::{Deserialize, Serialize}; use crate::{ @@ -144,7 +146,7 @@ pub enum AggregateSignature { /// IVC SNARK proof system. #[cfg(feature = "future_snark")] - IvcSnark(Box>), + IvcSnark(Box>), /// Concatenation proof system. // The 'untagged' attribute is required for backward compatibility. @@ -495,7 +497,7 @@ impl AggregateSignature { /// If the aggregate signature is an IVC proof, return it. #[cfg(feature = "future_snark")] - pub fn get_ivc_proof(&self) -> Option<&IvcProof> { + pub fn get_ivc_proof(&self) -> Option<&IvcProof> { match self { AggregateSignature::IvcSnark(proof) => Some(proof), AggregateSignature::Concatenation(_) => None, @@ -510,6 +512,8 @@ mod tests { #[cfg(feature = "future_snark")] mod ivc_proof { + use midnight_proofs::transcript::Blake2b256; + use crate::{Clerk, Parameters, protocol::aggregate_signature::tests::setup_equal_parties}; use crate::{ @@ -550,7 +554,7 @@ mod tests { context.certificate_verifying_key, context.recursive_verifying_key, )); - let proof = IvcProof::::new( + let proof = IvcProof::::new( step_output.ivc_proof, step_output.next_state, step_output.next_accumulator, @@ -583,7 +587,7 @@ mod tests { let clerk = Clerk::new_clerk_from_signer(&ps[0]); let avk = clerk.compute_aggregate_verification_key(); - let proof = IvcProof::::new( + let proof = IvcProof::::new( step_output.ivc_proof, step_output.next_state, step_output.next_accumulator, From 4d6b54d06599c273659fecb4804c1bce1184543e Mon Sep 17 00:00:00 2001 From: Dam Date: Thu, 16 Jul 2026 17:33:01 +0200 Subject: [PATCH 2/4] feat(stm): Regenerated the tests assets --- .../tests/assets/first_step_cert.bin | Bin 4090 -> 4090 bytes .../tests/assets/genesis_step_output.bin | Bin 13869 -> 13869 bytes .../tests/assets/recursive_chain_state.bin | Bin 13827 -> 13827 bytes .../recursive_proof_accumulator_bytes.bin | Bin 10397 -> 10397 bytes .../tests/assets/recursive_step_output.bin | Bin 17469 -> 17469 bytes ...ecursive_step_output_accumulator_bytes.bin | Bin 5759 -> 5759 bytes .../tests/assets/same_epoch_step_output.bin | Bin 17469 -> 17469 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mithril-stm/src/circuits/halo2_ivc/tests/assets/first_step_cert.bin b/mithril-stm/src/circuits/halo2_ivc/tests/assets/first_step_cert.bin index 2338215b46355c7ab83aa4fca3b72e19cda7e8e9..aca69b0d6963274a7b9aa9629c607451aef8f0f1 100644 GIT binary patch delta 3619 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 delta 3619 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 diff --git a/mithril-stm/src/circuits/halo2_ivc/tests/assets/genesis_step_output.bin b/mithril-stm/src/circuits/halo2_ivc/tests/assets/genesis_step_output.bin index 17c9bd77525261e26bb0e024e89e1154db17461f..6b221c963d203c43f25d8c2b6d8b898b8684dddd 100644 GIT binary patch delta 7611 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 delta 7611 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 KV)6io@c#gYa4>8D diff --git a/mithril-stm/src/circuits/halo2_ivc/tests/assets/recursive_proof_accumulator_bytes.bin b/mithril-stm/src/circuits/halo2_ivc/tests/assets/recursive_proof_accumulator_bytes.bin index 34d403494780933644c67a135786b78532a0e3c2..9d8e88100c6c5c1b885b709b523fd18c9a763e62 100644 GIT binary patch literal 10397 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 literal 10397 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 diff --git a/mithril-stm/src/circuits/halo2_ivc/tests/assets/recursive_step_output.bin b/mithril-stm/src/circuits/halo2_ivc/tests/assets/recursive_step_output.bin index 30878292f6e171d8e9f3c453288ca261c98992ce..1fd65ae13ed22b0f7d4e4058a4d8048884f2c75a 100644 GIT binary patch literal 17469 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 kzJtECv6HcbuNFytHr*#atv1Q`U$L53tK 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 o2+HUvzDl(VsTZ-Q_&`@9nBn{m1Ul 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 Py`7Qy|2-rAZ^8cuXO>aj From 6dd2217608d36f29d9c659728f8108b357f2d753 Mon Sep 17 00:00:00 2001 From: Dam Date: Fri, 17 Jul 2026 16:57:25 +0200 Subject: [PATCH 3/4] refactor(stm): removed blake2b dependency --- Cargo.lock | 1 - mithril-stm/Cargo.toml | 3 --- mithril-stm/src/circuits/test_utils/file_mutex.rs | 9 +++++---- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ebd14c31957..cab704e103a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4820,7 +4820,6 @@ version = "0.11.0" dependencies = [ "anyhow", "blake2 0.10.6", - "blake2b_simd", "blst", "ciborium", "criterion", diff --git a/mithril-stm/Cargo.toml b/mithril-stm/Cargo.toml index 0a907c436e5..559fa069ff0 100644 --- a/mithril-stm/Cargo.toml +++ b/mithril-stm/Cargo.toml @@ -19,7 +19,6 @@ default = ["num-integer-backend"] benchmark-internals = [] # Enable experimental SNARK support future_snark = [ - "dep:blake2b_simd", "dep:ff", "dep:group", "dep:midnight-circuits", @@ -45,7 +44,6 @@ rug-backend = ["rug/default"] [dependencies] anyhow = { workspace = true } blake2 = "0.10.6" -blake2b_simd = { version = "1.0.4", optional = true } # Enforce blst portable feature for runtime detection of Intel ADX instruction set. blst = { version = "0.3.16", features = ["portable"] } ciborium = "0.2.2" @@ -85,7 +83,6 @@ num-traits = { version = "0.2.19", optional = true } rug = { version = "1.30.0", optional = true } [dev-dependencies] -blake2b_simd = "1.0.4" criterion = { version = "0.8.2", features = ["html_reports"] } fs2 = "0.4.3" httpmock = "0.8.3" diff --git a/mithril-stm/src/circuits/test_utils/file_mutex.rs b/mithril-stm/src/circuits/test_utils/file_mutex.rs index aa66b293d51..0edf1b656fd 100644 --- a/mithril-stm/src/circuits/test_utils/file_mutex.rs +++ b/mithril-stm/src/circuits/test_utils/file_mutex.rs @@ -14,8 +14,8 @@ use std::{ path::{Path, PathBuf}, }; -use blake2b_simd::Params as Blake2bParams; use fs2::FileExt; +use sha2::{Digest, Sha256}; use crate::StmResult; @@ -59,13 +59,14 @@ impl FileMutex { /// guarded artifacts under [`Self::directory`]. The length prefix on each input keeps the /// concatenation unambiguous. pub(crate) fn for_shared_cache(label: &str, fingerprint: &[&[u8]]) -> Self { - let mut hasher = Blake2bParams::new().hash_length(16).to_state(); + let mut hasher = Sha256::new(); hasher.update(CACHE_SCHEMA_VERSION); for input in fingerprint { - hasher.update(&(input.len() as u64).to_le_bytes()); + hasher.update((input.len() as u64).to_le_bytes()); hasher.update(input); } - let directory = shared_cache_root().join(format!("{label}-{}", hasher.finalize().to_hex())); + let directory = + shared_cache_root().join(format!("{label}-{}", hex::encode(hasher.finalize()))); Self::new(directory.join(".lock")) } From 35853738a1c7f2abd30684636795bab7eb61f378 Mon Sep 17 00:00:00 2001 From: Dam Date: Mon, 20 Jul 2026 09:48:54 +0200 Subject: [PATCH 4/4] chore(stm): update crate version and changelog --- Cargo.lock | 2 +- mithril-common/Cargo.toml | 2 +- mithril-stm/CHANGELOG.md | 7 +++++++ mithril-stm/Cargo.toml | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cab704e103a..3d0e5685239 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4816,7 +4816,7 @@ dependencies = [ [[package]] name = "mithril-stm" -version = "0.11.0" +version = "0.11.1" dependencies = [ "anyhow", "blake2 0.10.6", diff --git a/mithril-common/Cargo.toml b/mithril-common/Cargo.toml index 2e5b04d3b1a..2f55f725e43 100644 --- a/mithril-common/Cargo.toml +++ b/mithril-common/Cargo.toml @@ -46,7 +46,7 @@ fixed = "1.31.0" hex = { workspace = true } kes-summed-ed25519 = { version = "0.2.1", features = ["serde_enabled", "sk_clone_enabled"] } mithril-merkle-tree = { path = "../internal/mithril-merkle-tree", version = "0.1.4" } -mithril-stm = { path = "../mithril-stm", version = "0.11.0", default-features = false } +mithril-stm = { path = "../mithril-stm", version = "0.11.1", default-features = false } nom = "8.0.0" rand_chacha = { workspace = true } rand_core = { workspace = true } diff --git a/mithril-stm/CHANGELOG.md b/mithril-stm/CHANGELOG.md index 8c7665a7f60..60c20cddf8f 100644 --- a/mithril-stm/CHANGELOG.md +++ b/mithril-stm/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 0.11.1 (07-20-2026) + +### Changed + +- Updated the transcript hash function for the recursive circuit from `Blake2b512` to the Plutus friendly `Blake2b256` +- Removed `blake2b_simd` dependency to use the `Blake2b256` transcript hash from `midnight-proofs` + ## 0.11.0 (07-16-2026) ### Changed diff --git a/mithril-stm/Cargo.toml b/mithril-stm/Cargo.toml index 559fa069ff0..c286e026459 100644 --- a/mithril-stm/Cargo.toml +++ b/mithril-stm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mithril-stm" -version = "0.11.0" +version = "0.11.1" edition = { workspace = true } authors = { workspace = true } homepage = { workspace = true }