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 aClosedKeyReg
. - This ensures that a
MerkleTree
root is not computed before all participants have registered.
- This kind of signer can only be generated out of an
- 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>
impl<D: Clone + Digest + FixedOutput> StmSigner<D>
sourcepub fn sign(&self, msg: &[u8]) -> Option<StmSig>
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.
sourcepub fn verification_key(&self) -> StmVerificationKey
pub fn verification_key(&self) -> StmVerificationKey
Extract the verification key.
sourcepub fn core_sign(&self, msg: &[u8], total_stake: Stake) -> Option<StmSig>
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
.
Trait Implementations§
Auto Trait Implementations§
impl<D> Freeze for StmSigner<D>
impl<D> RefUnwindSafe for StmSigner<D>where
D: RefUnwindSafe,
impl<D> Send for StmSigner<D>
impl<D> Sync for StmSigner<D>
impl<D> Unpin for StmSigner<D>
impl<D> UnwindSafe for StmSigner<D>where
D: RefUnwindSafe,
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
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)
clone_to_uninit
)