Module Mavryk_shell.Shell_operation

This module provides the operation representation used by the prevalidator and its dependencies. It also contains tools for parsing an operation into this representation, and updating the latter.

type 'protocol_operation operation = private {
  1. hash : Mavryk_base.TzPervasives.Operation_hash.t;
    (*

    Hash of an operation.

    *)
  2. raw : Mavryk_base.Operation.t;
    (*

    Raw representation of an operation (from the point view of the shell).

    *)
  3. protocol : 'protocol_operation;
    (*

    Economic protocol specific data of an operation. It is the unserialized representation of raw.protocol_data. For convenience, the type associated to this type may be unit if we do not have deserialized the operation yet.

    *)
  4. signature_checked : bool;
    (*

    This field is initially false. It is set to true when the operation is successfully validated in any context. While this does not guarantee that the operation will still be valid in another validation context, it notably means that the signature is correct. Therefore, when this field is true, we can tell the protocol to skip signature checks.

    *)
  5. size : int;
    (*

    Size of the operation in bytes.

    *)
}

Representation of a parsed operation, used only in the shell.

val record_successful_signature_check : 'protocol_operation operation -> 'protocol_operation operation

Return the operation with the signature_checked field set to true.

module type PARSER = sig ... end

The purpose of this module type is to provide the parse function, whose return type depends on the protocol.

Create a PARSER tailored to a given protocol.