pub trait ValidatorSigner: Sync + Send {
    // Required methods
    fn validator_id(&self) -> &AccountId;
    fn public_key(&self) -> PublicKey;
    fn sign_telemetry(&self, info: &TelemetryInfo) -> Value;
    fn sign_block_header_parts(
        &self,
        prev_hash: CryptoHash,
        inner_lite: &[u8],
        inner_rest: &[u8]
    ) -> (CryptoHash, Signature);
    fn sign_chunk_hash(&self, chunk_hash: &ChunkHash) -> Signature;
    fn sign_approval(
        &self,
        inner: &ApprovalInner,
        target_height: BlockHeight
    ) -> Signature;
    fn sign_chunk_endorsement(&self, inner: &ChunkEndorsementInner) -> Signature;
    fn sign_challenge(
        &self,
        challenge_body: &ChallengeBody
    ) -> (CryptoHash, Signature);
    fn sign_account_announce(
        &self,
        account_id: &AccountId,
        peer_id: &PeerId,
        epoch_id: &EpochId
    ) -> Signature;
    fn sign_account_key_payload(&self, proto_bytes: &[u8]) -> Signature;
    fn compute_vrf_with_proof(&self, data: &[u8]) -> (Value, Proof);
    fn write_to_file(&self, path: &Path) -> Result<()>;
}
Expand description

Validator signer that is used to sign blocks and approvals.

Required Methods§

source

fn validator_id(&self) -> &AccountId

Account id of the given validator.

source

fn public_key(&self) -> PublicKey

Public key that identifies this validator.

source

fn sign_telemetry(&self, info: &TelemetryInfo) -> Value

Serializes telemetry info to JSON and signs it, returning JSON with “signature” field.

source

fn sign_block_header_parts( &self, prev_hash: CryptoHash, inner_lite: &[u8], inner_rest: &[u8] ) -> (CryptoHash, Signature)

Signs given parts of the header.

source

fn sign_chunk_hash(&self, chunk_hash: &ChunkHash) -> Signature

Signs given inner of the chunk header.

source

fn sign_approval( &self, inner: &ApprovalInner, target_height: BlockHeight ) -> Signature

Signs approval of given parent hash and reference hash.

source

fn sign_chunk_endorsement(&self, inner: &ChunkEndorsementInner) -> Signature

Signs approval of the given chunk.

source

fn sign_challenge( &self, challenge_body: &ChallengeBody ) -> (CryptoHash, Signature)

Signs challenge body.

source

fn sign_account_announce( &self, account_id: &AccountId, peer_id: &PeerId, epoch_id: &EpochId ) -> Signature

Signs account announce.

source

fn sign_account_key_payload(&self, proto_bytes: &[u8]) -> Signature

Signs a proto-serialized AccountKeyPayload (see chain/network/src/network_protocol/network.proto). Making it typesafe would require moving the definition of AccountKeyPayload proto to this crate to avoid a dependency cycle, so for now we are just signing an already-serialized byte sequence. We are serializing a proto rather than borsh here (as an experiment, to allow the network protocol to evolve faster than on-chain stuff), but we can always revert that decision, because these signatures are used only for networking purposes and are not persisted on chain. Moving to proto serialization for stuff stored on chain would be way harder.

source

fn compute_vrf_with_proof(&self, data: &[u8]) -> (Value, Proof)

source

fn write_to_file(&self, path: &Path) -> Result<()>

Used by test infrastructure, only implement if make sense for testing otherwise raise unimplemented.

Implementors§