Struct mithril_stm::stm::StmAggrSig
source · pub struct StmAggrSig<D: Clone + Digest + FixedOutput> {
pub batch_proof: BatchPath<D>,
/* private fields */
}
Expand description
StmMultiSig
uses the “concatenation” proving system (as described in Section 4.3 of the original paper.)
This means that the aggregated signature contains a vector with all individual signatures.
BatchPath is also a part of the aggregate signature which covers path for all signatures.
Fields§
§batch_proof: BatchPath<D>
The list of unique merkle tree nodes that covers path for all signatures.
Implementations§
source§impl<D: Clone + Digest + FixedOutput + Send + Sync> StmAggrSig<D>
impl<D: Clone + Digest + FixedOutput + Send + Sync> StmAggrSig<D>
sourcepub fn verify(
&self,
msg: &[u8],
avk: &StmAggrVerificationKey<D>,
parameters: &StmParameters,
) -> Result<(), StmAggregateSignatureError<D>>
pub fn verify( &self, msg: &[u8], avk: &StmAggrVerificationKey<D>, parameters: &StmParameters, ) -> Result<(), StmAggregateSignatureError<D>>
Verify aggregate signature, by checking that
- each signature contains only valid indices,
- the lottery is indeed won by each one of them,
- the merkle tree path is valid,
- the aggregate signature validates with respect to the aggregate verification key
(aggregation is computed using functions
MSP.BKey
andMSP.BSig
as described in Section 2.4 of the paper).
sourcepub fn batch_verify(
stm_signatures: &[Self],
msgs: &[Vec<u8>],
avks: &[StmAggrVerificationKey<D>],
parameters: &[StmParameters],
) -> Result<(), StmAggregateSignatureError<D>>
pub fn batch_verify( stm_signatures: &[Self], msgs: &[Vec<u8>], avks: &[StmAggrVerificationKey<D>], parameters: &[StmParameters], ) -> Result<(), StmAggregateSignatureError<D>>
Batch verify a set of signatures, with different messages and avks.
sourcepub fn to_bytes(&self) -> Vec<u8>
pub fn to_bytes(&self) -> Vec<u8>
Convert multi signature to bytes
§Layout
- Number of the pairs of Signatures and Registered Parties (SigRegParty) (as u64)
- Size of a pair of Signature and Registered Party
- Pairs of Signatures and Registered Parties
- Batch proof
sourcepub fn from_bytes(
bytes: &[u8],
) -> Result<StmAggrSig<D>, StmAggregateSignatureError<D>>
pub fn from_bytes( bytes: &[u8], ) -> Result<StmAggrSig<D>, StmAggregateSignatureError<D>>
Extract a StmAggrSig
from a byte slice.
Trait Implementations§
source§impl<D: Clone + Clone + Digest + FixedOutput> Clone for StmAggrSig<D>
impl<D: Clone + Clone + Digest + FixedOutput> Clone for StmAggrSig<D>
source§fn clone(&self) -> StmAggrSig<D>
fn clone(&self) -> StmAggrSig<D>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<'de, D: Clone + Digest + FixedOutput> Deserialize<'de> for StmAggrSig<D>where
BatchPath<D>: Deserialize<'de>,
impl<'de, D: Clone + Digest + FixedOutput> Deserialize<'de> for StmAggrSig<D>where
BatchPath<D>: Deserialize<'de>,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl<D> Freeze for StmAggrSig<D>
impl<D> RefUnwindSafe for StmAggrSig<D>where
D: RefUnwindSafe,
impl<D> Send for StmAggrSig<D>where
D: Send,
impl<D> Sync for StmAggrSig<D>where
D: Sync,
impl<D> Unpin for StmAggrSig<D>where
D: Unpin,
impl<D> UnwindSafe for StmAggrSig<D>where
D: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)