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
.