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§
sourcefn validator_id(&self) -> &AccountId
fn validator_id(&self) -> &AccountId
Account id of the given validator.
sourcefn public_key(&self) -> PublicKey
fn public_key(&self) -> PublicKey
Public key that identifies this validator.
sourcefn sign_telemetry(&self, info: &TelemetryInfo) -> Value
fn sign_telemetry(&self, info: &TelemetryInfo) -> Value
Serializes telemetry info to JSON and signs it, returning JSON with “signature” field.
sourcefn sign_block_header_parts(
&self,
prev_hash: CryptoHash,
inner_lite: &[u8],
inner_rest: &[u8]
) -> (CryptoHash, Signature)
fn sign_block_header_parts( &self, prev_hash: CryptoHash, inner_lite: &[u8], inner_rest: &[u8] ) -> (CryptoHash, Signature)
Signs given parts of the header.
sourcefn sign_chunk_hash(&self, chunk_hash: &ChunkHash) -> Signature
fn sign_chunk_hash(&self, chunk_hash: &ChunkHash) -> Signature
Signs given inner of the chunk header.
sourcefn sign_approval(
&self,
inner: &ApprovalInner,
target_height: BlockHeight
) -> Signature
fn sign_approval( &self, inner: &ApprovalInner, target_height: BlockHeight ) -> Signature
Signs approval of given parent hash and reference hash.
sourcefn sign_chunk_endorsement(&self, inner: &ChunkEndorsementInner) -> Signature
fn sign_chunk_endorsement(&self, inner: &ChunkEndorsementInner) -> Signature
Signs approval of the given chunk.
sourcefn sign_challenge(
&self,
challenge_body: &ChallengeBody
) -> (CryptoHash, Signature)
fn sign_challenge( &self, challenge_body: &ChallengeBody ) -> (CryptoHash, Signature)
Signs challenge body.
sourcefn sign_account_announce(
&self,
account_id: &AccountId,
peer_id: &PeerId,
epoch_id: &EpochId
) -> Signature
fn sign_account_announce( &self, account_id: &AccountId, peer_id: &PeerId, epoch_id: &EpochId ) -> Signature
Signs account announce.
sourcefn sign_account_key_payload(&self, proto_bytes: &[u8]) -> Signature
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.
fn compute_vrf_with_proof(&self, data: &[u8]) -> (Value, Proof)
sourcefn write_to_file(&self, path: &Path) -> Result<()>
fn write_to_file(&self, path: &Path) -> Result<()>
Used by test infrastructure, only implement if make sense for testing otherwise raise unimplemented.