mithril_stm::stm

Struct 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>

source

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 and MSP.BSig as described in Section 2.4 of the paper).
source

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.

source

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
source

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>

source§

fn clone(&self) -> StmAggrSig<D>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<D: Debug + Clone + Digest + FixedOutput> Debug for StmAggrSig<D>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

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>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<D: Clone + Digest + FixedOutput> Serialize for StmAggrSig<D>
where BatchPath<D>: Serialize,

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. 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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

source§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,