Struct mithril_stm::stm::StmSigner

source ·
pub struct StmSigner<D: Digest> { /* private fields */ }
Expand description

Participant in the protocol can sign messages.

  • If the signer has closed_reg, then it can generate Stm certificate.
    • This kind of signer can only be generated out of an StmInitializer and a ClosedKeyReg.
    • This ensures that a MerkleTree root is not computed before all participants have registered.
  • If the signer does not have closed_reg, then it is a core signer.
    • This kind of signer cannot participate certificate generation.
    • Signature generated can be verified by a full node verifier (core verifier).

Implementations§

source§

impl<D: Clone + Digest + FixedOutput> StmSigner<D>

source

pub fn sign(&self, msg: &[u8]) -> Option<StmSig>

This function produces a signature following the description of Section 2.4. Once the signature is produced, this function checks whether any index in [0,..,self.params.m] wins the lottery by evaluating the dense mapping. It records all the winning indexes in Self.indexes. If it wins at least one lottery, it stores the signer’s merkle tree index. The proof of membership will be handled by the aggregator.

source

pub fn verification_key(&self) -> StmVerificationKey

Extract the verification key.

source

pub fn get_stake(&self) -> Stake

Extract stake from the signer.

source

pub fn core_sign(&self, msg: &[u8], total_stake: Stake) -> Option<StmSig>

A core signature generated without closed registration. The core signature can be verified by core verifier. Once the signature is produced, this function checks whether any index in [0,..,self.params.m] wins the lottery by evaluating the dense mapping. It records all the winning indexes in Self.indexes.

source

pub fn check_lottery( &self, msg: &[u8], sigma: &Signature, total_stake: Stake ) -> Vec<u64>

Collects and returns the winning indices.

Trait Implementations§

source§

impl<D: Clone + Digest> Clone for StmSigner<D>

source§

fn clone(&self) -> StmSigner<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 + Digest> Debug for StmSigner<D>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<D> Freeze for StmSigner<D>

§

impl<D> RefUnwindSafe for StmSigner<D>
where D: RefUnwindSafe,

§

impl<D> Send for StmSigner<D>
where D: Sync + Send,

§

impl<D> Sync for StmSigner<D>
where D: Sync + Send,

§

impl<D> Unpin for StmSigner<D>

§

impl<D> UnwindSafe for StmSigner<D>
where D: RefUnwindSafe,

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

§

type Output = T

Should always be Self
source§

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

§

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

§

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

§

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.