package tezos-protocol-alpha

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Representation of block headers.

type contents = {
  1. payload_hash : Block_payload_hash.t;
  2. payload_round : Round_repr.t;
  3. seed_nonce_hash : Nonce_hash.t option;
  4. proof_of_work_nonce : bytes;
  5. liquidity_baking_escape_vote : bool;
}
type protocol_data = {
  1. contents : contents;
  2. signature : Tezos_crypto.Signature.t;
}
type t = {
  1. shell : Tezos_base.Block_header.shell_header;
  2. protocol_data : protocol_data;
}
type block_header = t
val raw : block_header -> raw
val raw_encoding : raw Data_encoding.t
val contents_encoding : contents Data_encoding.t
val protocol_data_encoding : protocol_data Data_encoding.t
val shell_header_encoding : shell_header Data_encoding.t
type block_watermark =
  1. | Block_header of Tezos_crypto.Chain_id.t
val max_header_length : int

The maximum size of block headers in bytes

val hash_raw : raw -> Tezos_crypto.Block_hash.t
type Tezos_protocol_environment_alpha__Environment.Error_monad.error +=
  1. | Invalid_block_signature of Tezos_crypto.Block_hash.t * Tezos_crypto.Signature.public_key_hash
  2. | Invalid_stamp
  3. | Invalid_payload_hash of {
    1. expected : Block_payload_hash.t;
    2. provided : Block_payload_hash.t;
    }
  4. | Locked_round_after_block_round of {
    1. locked_round : Round_repr.t;
    2. round : Round_repr.t;
    }
  5. | Invalid_payload_round of {
    1. payload_round : Round_repr.t;
    2. round : Round_repr.t;
    }
  6. | Insufficient_locked_round_evidence of {
    1. voting_power : int;
    2. consensus_threshold : int;
    }
  7. | Invalid_commitment of {
    1. expected : bool;
    }
module Proof_of_work : sig ... end

Checks if the header that would be built from the given components is valid for the given difficulty. The signature is not passed as it is does not impact the proof-of-work stamp. The stamp is checked on the hash of a block header whose signature has been zeroed-out.

val check_timestamp : Round_repr.Durations.t -> timestamp:Tezos_base.Time.Protocol.t -> round:Round_repr.t -> predecessor_timestamp:Tezos_base.Time.Protocol.t -> predecessor_round:Round_repr.t -> (unit, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result

check_timestamp ctxt timestamp round predecessor_timestamp predecessor_round verifies that the block's timestamp and round are coherent with the predecessor block's timestamp and round. Fails with an error if that is not the case.

val check_signature : t -> Tezos_crypto.Chain_id.t -> Tezos_crypto.Signature.public_key -> (unit, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result
val begin_validate_block_header : block_header:t -> chain_id:Tezos_crypto.Chain_id.t -> predecessor_timestamp:Tezos_base.Time.Protocol.t -> predecessor_round:Round_repr.t -> fitness:Fitness_repr.t -> timestamp:Tezos_base.Time.Protocol.t -> delegate_pk:Tezos_crypto.Signature.public_key -> round_durations:Round_repr.Durations.t -> proof_of_work_threshold:int64 -> expected_commitment:bool -> (unit, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result
type locked_round_evidence = {
  1. preendorsement_round : Round_repr.t;
  2. preendorsement_count : int;
}
type checkable_payload_hash =
  1. | No_check
  2. | Expected_payload_hash of Block_payload_hash.t
val finalize_validate_block_header : block_header_contents:contents -> round:Round_repr.t -> fitness:Fitness_repr.t -> checkable_payload_hash:checkable_payload_hash -> locked_round_evidence:locked_round_evidence option -> consensus_threshold:int -> (unit, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result