Module Mavryk_raw_protocol_001_PtAtLas.Block_header_repr

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. per_block_votes : Per_block_votes_repr.per_block_votes;
}
type protocol_data = {
  1. contents : contents;
  2. signature : Mavryk_protocol_environment_001_PtAtLas.Signature.t;
}
type block_header = t
val raw : block_header -> raw
type block_watermark =
  1. | Block_header of Mavryk_protocol_environment_001_PtAtLas.Chain_id.t
val max_header_length : int

The maximum size of block headers in bytes

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.

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 begin_validate_block_header : block_header:t -> chain_id:Mavryk_protocol_environment_001_PtAtLas.Chain_id.t -> predecessor_timestamp:Mavryk_protocol_environment_001_PtAtLas.Time.t -> predecessor_round:Round_repr.t -> fitness:Fitness_repr.t -> timestamp:Mavryk_protocol_environment_001_PtAtLas.Time.t -> delegate_pk:Mavryk_protocol_environment_001_PtAtLas.Signature.public_key -> round_durations:Round_repr.Durations.t -> proof_of_work_threshold:int64 -> expected_commitment:bool -> unit Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult