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 set_stm_signer(
signer_index: u64,
stake: Stake,
params: StmParameters,
sk: SigningKey,
vk: StmVerificationKey,
closed_reg: ClosedKeyReg<D>,
) -> StmSigner<D>
pub fn set_stm_signer( signer_index: u64, stake: Stake, params: StmParameters, sk: SigningKey, vk: StmVerificationKey, closed_reg: ClosedKeyReg<D>, ) -> StmSigner<D>
Create an StmSigner for given input
Sourcepub fn set_core_signer(
signer_index: u64,
stake: Stake,
params: StmParameters,
sk: SigningKey,
vk: StmVerificationKey,
) -> StmSigner<D>
pub fn set_core_signer( signer_index: u64, stake: Stake, params: StmParameters, sk: SigningKey, vk: StmVerificationKey, ) -> StmSigner<D>
Create a core signer (no registration data) for given input
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
.
Sourcepub fn check_lottery(
&self,
msg: &[u8],
sigma: &Signature,
total_stake: Stake,
) -> Vec<u64>
pub fn check_lottery( &self, msg: &[u8], sigma: &Signature, total_stake: Stake, ) -> Vec<u64>
Collects and returns the winning indices.
Sourcepub fn get_params(&self) -> StmParameters
pub fn get_params(&self) -> StmParameters
Get StmParameters
Sourcepub fn get_closed_reg(&self) -> Option<ClosedKeyReg<D>>
pub fn get_closed_reg(&self) -> Option<ClosedKeyReg<D>>
Get closed key registration
Sourcepub fn get_vk(&self) -> StmVerificationKey
pub fn get_vk(&self) -> StmVerificationKey
Get verification key