Skip to content

Commit 8f12c05

Browse files
authored
Merge pull request #2804 from input-output-hk/curiecrypt/msnark/re-organize-modules
SNARK-friendly STM: Re-organize modules
2 parents 07cf1c9 + 64b7801 commit 8f12c05

Some content is hidden

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

41 files changed

+212
-217
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mithril-stm/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## 0.6.2 (11-27-2025)
9+
10+
### Changed
11+
12+
- Stm library re-organized for SNARK-friendliness.
13+
814
## 0.6.1 (11-27-2025)
915

1016
### Added

mithril-stm/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mithril-stm"
3-
version = "0.6.1"
3+
version = "0.6.2"
44
edition = { workspace = true }
55
authors = { workspace = true }
66
homepage = { workspace = true }

mithril-stm/src/lib.rs

Lines changed: 8 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -111,37 +111,21 @@
111111
//! # }
112112
//! ```
113113
114-
mod aggregate_signature;
115-
mod bls_multi_signature;
116-
mod eligibility_check;
117-
mod error;
118-
mod key_registration;
119-
mod merkle_tree;
120-
mod parameters;
121-
mod participant;
122-
#[cfg(feature = "future_snark")]
123-
mod schnorr_signature;
124-
mod single_signature;
114+
mod membership_commitment;
115+
mod proof_system;
116+
mod protocol;
117+
mod signature_scheme;
125118

126-
pub use aggregate_signature::{
127-
AggregateSignature, AggregateSignatureType, AggregateVerificationKey, BasicVerifier, Clerk,
128-
};
129-
pub use error::{
130-
AggregateSignatureError, AggregationError, MultiSignatureError, RegisterError, SignatureError,
131-
};
132-
pub use key_registration::{ClosedKeyRegistration, KeyRegistration};
133-
pub use parameters::Parameters;
134-
pub use participant::{Initializer, Signer, VerificationKey, VerificationKeyProofOfPossession};
135-
pub use single_signature::{SingleSignature, SingleSignatureWithRegisteredParty};
119+
pub use protocol::*;
136120

137121
#[cfg(feature = "benchmark-internals")]
138-
pub use bls_multi_signature::{
122+
pub use signature_scheme::{
139123
BlsProofOfPossession, BlsSignature, BlsSigningKey, BlsVerificationKey,
140124
BlsVerificationKeyProofOfPossession,
141125
};
142126

143-
#[cfg(feature = "future_snark")]
144-
pub use schnorr_signature::{SchnorrSignature, SchnorrSigningKey, SchnorrVerificationKey};
127+
#[cfg(all(feature = "benchmark-internals", feature = "future_snark"))]
128+
pub use signature_scheme::{SchnorrSignature, SchnorrSigningKey, SchnorrVerificationKey};
145129

146130
/// The quantity of stake held by a party, represented as a `u64`.
147131
pub type Stake = u64;
@@ -155,49 +139,3 @@ pub type StmError = anyhow::Error;
155139

156140
/// Mithril-stm result type
157141
pub type StmResult<T> = anyhow::Result<T, StmError>;
158-
159-
// Aliases
160-
#[deprecated(since = "0.5.0", note = "Use `AggregateSignature` instead")]
161-
pub use aggregate_signature::AggregateSignature as StmAggrSig;
162-
163-
#[deprecated(since = "0.5.0", note = "Use `AggregateVerificationKey` instead")]
164-
pub use aggregate_signature::AggregateVerificationKey as StmAggrVerificationKey;
165-
166-
#[deprecated(since = "0.5.0", note = "Use `Clerk` instead")]
167-
pub use aggregate_signature::Clerk as StmClerk;
168-
169-
#[deprecated(since = "0.5.0", note = "Use `ClosedKeyRegistration` instead")]
170-
pub use key_registration::ClosedKeyRegistration as ClosedKeyReg;
171-
172-
#[deprecated(since = "0.5.0", note = "Use `KeyRegistration` instead")]
173-
pub use key_registration::KeyRegistration as KeyReg;
174-
175-
#[deprecated(since = "0.5.0", note = "Use `Parameters` instead")]
176-
pub use parameters::Parameters as StmParameters;
177-
178-
#[deprecated(since = "0.5.0", note = "Use `Initializer` instead")]
179-
pub use participant::Initializer as StmInitializer;
180-
181-
#[deprecated(since = "0.5.0", note = "Use `Signer` instead")]
182-
pub use participant::Signer as StmSigner;
183-
184-
#[deprecated(since = "0.5.0", note = "Use `VerificationKey` instead")]
185-
pub use participant::VerificationKey as StmVerificationKey;
186-
187-
#[deprecated(
188-
since = "0.5.0",
189-
note = "Use `VerificationKeyProofOfPossession` instead"
190-
)]
191-
pub use participant::VerificationKeyProofOfPossession as StmVerificationKeyPoP;
192-
193-
#[deprecated(since = "0.5.0", note = "Use `SingleSignature` instead")]
194-
pub use single_signature::SingleSignature as StmSig;
195-
196-
#[deprecated(since = "0.5.0", note = "Use `BasicVerifier` instead")]
197-
pub use aggregate_signature::BasicVerifier as CoreVerifier;
198-
199-
#[deprecated(
200-
since = "0.5.0",
201-
note = "Use `SingleSignatureWithRegisteredParty` instead"
202-
)]
203-
pub use single_signature::SingleSignatureWithRegisteredParty as StmSigRegParty;

mithril-stm/src/merkle_tree/commitment.rs renamed to mithril-stm/src/membership_commitment/merkle_tree/commitment.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
use std::marker::PhantomData;
2-
1+
use anyhow::{Context, anyhow};
32
use blake2::digest::{Digest, FixedOutput};
43
use serde::{Deserialize, Serialize};
4+
use std::marker::PhantomData;
5+
6+
use super::{MerkleBatchPath, MerklePath, MerkleTreeLeaf, parent, sibling};
7+
use crate::{MerkleTreeError, StmResult};
58

6-
use crate::StmResult;
7-
use crate::error::MerkleTreeError;
8-
use crate::merkle_tree::{MerkleBatchPath, MerklePath, MerkleTreeLeaf, parent, sibling};
9-
use anyhow::{Context, anyhow};
109
/// `MerkleTree` commitment.
1110
/// This structure differs from `MerkleTree` in that it does not contain all elements, which are not always necessary.
1211
/// Instead, it only contains the root of the tree.

mithril-stm/src/merkle_tree/leaf.rs renamed to mithril-stm/src/membership_commitment/merkle_tree/leaf.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ use std::cmp::Ordering;
22

33
use serde::{Deserialize, Serialize};
44

5-
use crate::StmResult;
6-
use crate::bls_multi_signature::BlsVerificationKey;
7-
use crate::error::MerkleTreeError;
8-
use crate::{Stake, VerificationKey};
5+
use crate::{
6+
MerkleTreeError, Stake, StmResult, VerificationKey, signature_scheme::BlsVerificationKey,
7+
};
8+
99
/// The values that are committed in the Merkle Tree.
1010
/// Namely, a verified `VerificationKey` and its corresponding stake.
1111
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize, Hash)]

mithril-stm/src/merkle_tree/path.rs renamed to mithril-stm/src/membership_commitment/merkle_tree/path.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
use std::marker::PhantomData;
2-
3-
use crate::StmResult;
4-
use crate::error::MerkleTreeError;
51
use blake2::digest::{Digest, FixedOutput};
62
use serde::{Deserialize, Serialize};
3+
use std::marker::PhantomData;
4+
5+
use crate::{MerkleTreeError, StmResult};
76

87
/// Path of hashes from root to leaf in a Merkle Tree.
98
/// Contains all hashes on the path, and the index of the leaf.

mithril-stm/src/merkle_tree/tree.rs renamed to mithril-stm/src/membership_commitment/merkle_tree/tree.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
use std::marker::PhantomData;
2-
31
use blake2::digest::{Digest, FixedOutput};
42
use serde::{Deserialize, Serialize};
3+
use std::marker::PhantomData;
54

6-
use crate::StmResult;
7-
use crate::error::MerkleTreeError;
8-
use crate::merkle_tree::{
5+
use super::{
96
MerkleBatchPath, MerklePath, MerkleTreeBatchCommitment, MerkleTreeCommitment, MerkleTreeLeaf,
107
left_child, parent, right_child, sibling,
118
};
9+
use crate::{MerkleTreeError, StmResult};
1210

1311
/// Tree of hashes, providing a commitment of data and its ordering.
1412
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
@@ -269,13 +267,14 @@ impl<D: Digest + FixedOutput> MerkleTree<D> {
269267

270268
#[cfg(test)]
271269
mod tests {
272-
use super::*;
273-
use crate::bls_multi_signature::BlsVerificationKey;
274270
use blake2::{Blake2b, digest::consts::U32};
275-
use proptest::collection::vec;
276-
use proptest::prelude::*;
271+
use proptest::{collection::vec, prelude::*};
277272
use rand::{rng, seq::IteratorRandom};
278273

274+
use crate::signature_scheme::BlsVerificationKey;
275+
276+
use super::*;
277+
279278
fn pow2_plus1(h: usize) -> usize {
280279
1 + 2_usize.pow(h as u32)
281280
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
mod merkle_tree;
2+
3+
pub use merkle_tree::*;

0 commit comments

Comments
 (0)