package tezos-protocol-alpha
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
sha256=43723d096307603703a1a89ed1b2eb202b365f5e7824b96b0cbf813b343a6cf7
    
    
  sha512=b2a637f2e965000d3d49ad85277ca24d6cb07a1a7cf2bc69d296d8b03ad78c3eaa8e21e94b9162e62c2e11649cd03bc845b2a3dafe623b91065df69d47dc8e4f
    
    
  doc/tezos-protocol-alpha.raw/Tezos_raw_protocol_alpha/Operation_repr/index.html
Module Tezos_raw_protocol_alpha.Operation_reprSource
Tezos Protocol Implementation - Low level Repr. of Operations
Defines kinds of operations that can be performed on chain:
- preendorsement
- endorsement
- double baking evidence
- double preendorsing evidence
- double endorsing evidence
- seed nonce revelation
- account activation
- proposal (see: Voting_repr)
- ballot (see: Voting_repr)
- failing noop
- manager operation (which in turn has several types):
- revelation
- transaction
- origination
- delegation
- set deposits limitation
- tx rollup origination
- tx rollup batch submission
- tx rollup commit
- tx rollup withdraw
- tx rollup reveal withdrawals
- smart rollup origination
- smart rollup add messages
- smart rollup publish
- smart rollup cement
- smart rollup refute
- smart rollup timeout
- smart rollup execute outbox message
- smart rollup recover bond
- zk rollup origination
- zk rollup publish
- zk rollup update
Each of them can be encoded as raw bytes. Operations are distinguished at type level using phantom type parameters. packed_operation type allows for unifying them when required, for instance to put them on a single list.
type 'a consensus_operation_type = - | Endorsement : Kind.endorsement consensus_operation_type
- | Preendorsement : Kind.preendorsement consensus_operation_type
val pp_operation_kind : 
  Tezos_protocol_environment_alpha.Format.formatter ->
  'kind consensus_operation_type ->
  unittype consensus_content = {- slot : Slot_repr.t;
- level : Raw_level_repr.t;
- round : Round_repr.t;
- block_payload_hash : Block_payload_hash.t;
}val consensus_content_encoding : 
  consensus_content Tezos_protocol_environment_alpha.Data_encoding.tval pp_consensus_content : 
  Tezos_protocol_environment_alpha.Format.formatter ->
  consensus_content ->
  unittype consensus_watermark = - | Endorsement of Tezos_protocol_environment_alpha.Chain_id.t
- | Preendorsement of Tezos_protocol_environment_alpha.Chain_id.t
- | Dal_attestation of Tezos_protocol_environment_alpha.Chain_id.t
val to_watermark : 
  consensus_watermark ->
  Tezos_protocol_environment_alpha.Signature.watermarkval of_watermark : 
  Tezos_protocol_environment_alpha.Signature.watermark ->
  consensus_watermark optiontype raw = Tezos_protocol_environment_alpha.Operation.t = {- shell : Tezos_protocol_environment_alpha.Operation.shell_header;
- proto : bytes;
}type 'kind operation = {- shell : Tezos_protocol_environment_alpha.Operation.shell_header;
- protocol_data : 'kind protocol_data;
}An operation contains the operation header information in shell and all data related to the operation itself in protocol_data.
and 'kind protocol_data = {- contents : 'kind contents_list;
- signature : Tezos_protocol_environment_alpha.Signature.t option;
}A protocol_data wraps together a signature for the operation and the contents of the operation itself.
and _ contents_list = - | Single : 'kind contents -> 'kind contents_list
- | Cons : 'kind Kind.manager contents * 'rest Kind.manager contents_list -> ('kind * 'rest) Kind.manager contents_list
A contents_list is a list of contents, the GADT guarantees two invariants:
- the list is not empty, and
- if the list has several elements then it only contains manager operations.
and _ contents = - | Preendorsement : consensus_content -> Kind.preendorsement contents
- | Endorsement : consensus_content -> Kind.endorsement contents
- | Dal_attestation : Dal_attestation_repr.operation -> Kind.dal_attestation contents
- | Seed_nonce_revelation : {- level : Raw_level_repr.t;
- nonce : Seed_repr.nonce;
 - } -> Kind.seed_nonce_revelation contents
- | Vdf_revelation : {- solution : Seed_repr.vdf_solution;
 - } -> Kind.vdf_revelation contents
- | Double_preendorsement_evidence : {- op1 : Kind.preendorsement operation;
- op2 : Kind.preendorsement operation;
 - } -> Kind.double_preendorsement_evidence contents
- | Double_endorsement_evidence : {- op1 : Kind.endorsement operation;
- op2 : Kind.endorsement operation;
 - } -> Kind.double_endorsement_evidence contents
- | Double_baking_evidence : {- bh1 : Block_header_repr.t;
- bh2 : Block_header_repr.t;
 - } -> Kind.double_baking_evidence contents
- | Activate_account : {- id : Tezos_protocol_environment_alpha.Ed25519.Public_key_hash.t;
- activation_code : Blinded_public_key_hash.activation_code;
 - } -> Kind.activate_account contents
- | Proposals : {- source : Tezos_protocol_environment_alpha.Signature.Public_key_hash.t;
- period : int32;
- proposals : Tezos_protocol_environment_alpha.Protocol_hash.t list;
 - } -> Kind.proposals contents
- | Ballot : {- source : Tezos_protocol_environment_alpha.Signature.Public_key_hash.t;
- period : int32;
- proposal : Tezos_protocol_environment_alpha.Protocol_hash.t;
- ballot : Vote_repr.ballot;
 - } -> Kind.ballot contents
- | Drain_delegate : {- consensus_key : Tezos_protocol_environment_alpha.Signature.Public_key_hash.t;
- delegate : Tezos_protocol_environment_alpha.Signature.Public_key_hash.t;
- destination : Tezos_protocol_environment_alpha.Signature.Public_key_hash.t;
 - } -> Kind.drain_delegate contents
- | Failing_noop : string -> Kind.failing_noop contents
- | Manager_operation : {- source : Tezos_protocol_environment_alpha.Signature.Public_key_hash.t;
- fee : Tez_repr.tez;
- counter : Manager_counter_repr.t;
- operation : 'kind manager_operation;
- gas_limit : Gas_limit_repr.Arith.integral;
- storage_limit : Tezos_protocol_environment_alpha.Z.t;
 - } -> 'kind Kind.manager contents
A value of type contents an operation related to whether consensus, governance or contract management.
and _ manager_operation = - | Reveal : Tezos_protocol_environment_alpha.Signature.Public_key.t -> Kind.reveal manager_operation
- | Transaction : {- amount : Tez_repr.tez;
- parameters : Script_repr.lazy_expr;
- entrypoint : Entrypoint_repr.t;
- destination : Contract_repr.t;
 - } -> Kind.transaction manager_operation
- | Origination : {- delegate : Tezos_protocol_environment_alpha.Signature.Public_key_hash.t option;
- script : Script_repr.t;
- credit : Tez_repr.tez;
 - } -> Kind.origination manager_operation
- | Delegation : Tezos_protocol_environment_alpha.Signature.Public_key_hash.t option -> Kind.delegation manager_operation
- | Register_global_constant : {- value : Script_repr.lazy_expr;
 - } -> Kind.register_global_constant manager_operation
- | Set_deposits_limit : Tez_repr.t option -> Kind.set_deposits_limit manager_operation
- | Increase_paid_storage : {- amount_in_bytes : Tezos_protocol_environment_alpha.Z.t;
- destination : Contract_hash.t;
 - } -> Kind.increase_paid_storage manager_operation
- | Update_consensus_key : Tezos_protocol_environment_alpha.Signature.Public_key.t -> Kind.update_consensus_key manager_operation
- | Tx_rollup_origination : Kind.tx_rollup_origination manager_operation
- | Tx_rollup_submit_batch : {- tx_rollup : Tx_rollup_repr.t;
- content : string;
- burn_limit : Tez_repr.t option;
 - } -> Kind.tx_rollup_submit_batch manager_operation
- | Tx_rollup_commit : {- tx_rollup : Tx_rollup_repr.t;
- commitment : Tx_rollup_commitment_repr.Full.t;
 - } -> Kind.tx_rollup_commit manager_operation
- | Tx_rollup_return_bond : {- tx_rollup : Tx_rollup_repr.t;
 - } -> Kind.tx_rollup_return_bond manager_operation
- | Tx_rollup_finalize_commitment : {- tx_rollup : Tx_rollup_repr.t;
 - } -> Kind.tx_rollup_finalize_commitment manager_operation
- | Tx_rollup_remove_commitment : {- tx_rollup : Tx_rollup_repr.t;
 - } -> Kind.tx_rollup_remove_commitment manager_operation
- | Tx_rollup_rejection : {- tx_rollup : Tx_rollup_repr.t;
- level : Tx_rollup_level_repr.t;
- message : Tx_rollup_message_repr.t;
- message_position : int;
- message_path : Tx_rollup_inbox_repr.Merkle.path;
- message_result_hash : Tx_rollup_message_result_hash_repr.t;
- message_result_path : Tx_rollup_commitment_repr.Merkle.path;
- previous_message_result : Tx_rollup_message_result_repr.t;
- previous_message_result_path : Tx_rollup_commitment_repr.Merkle.path;
- proof : Tx_rollup_l2_proof.serialized;
 - } -> Kind.tx_rollup_rejection manager_operation
- | Tx_rollup_dispatch_tickets : {- tx_rollup : Tx_rollup_repr.t;(*- The rollup from where the tickets are retrieved *)
- level : Tx_rollup_level_repr.t;(*- The level at which the withdrawal was enabled *)
- context_hash : Tezos_protocol_environment_alpha.Context_hash.t;(*- The hash of the l2 context resulting from the execution of the inbox from where this withdrawal was enabled. *)
- message_index : int;(*- Index of the message in the inbox at *)- levelwhere this withdrawal was enabled.
- message_result_path : Tx_rollup_commitment_repr.Merkle.path;
- tickets_info : Tx_rollup_reveal_repr.t list;
 - } -> Kind.tx_rollup_dispatch_tickets manager_operation(*- Transfer_ticketallows an implicit account (the "claimer") to receive- amounttickets, pulled out of- tx_rollup, to the- entrypointof the smart contract- destination.- The ticket must have been addressed to the claimer, who must be the source of this operation. It must have been pulled out at *)- leveland from the message at- message_index. The ticket is composed of- ticketer; ty; contents.
- | Transfer_ticket : {- contents : Script_repr.lazy_expr;(*- Contents of the withdrawn ticket *)
- ty : Script_repr.lazy_expr;(*- Type of the withdrawn ticket's contents *)
- ticketer : Contract_repr.t;(*- Ticketer of the withdrawn ticket *)
- amount : Ticket_amount.t;(*- Quantity of the withdrawn ticket. Must match the amount that was enabled. *)
- destination : Contract_repr.t;(*- The smart contract address that should receive the tickets. *)
- entrypoint : Entrypoint_repr.t;(*- The entrypoint of the smart contract address that should receive the tickets. *)
 - } -> Kind.transfer_ticket manager_operation
- | Dal_publish_slot_header : Dal_operations_repr.Publish_slot_header.t -> Kind.dal_publish_slot_header manager_operation(*
 *)- Sc_rollup_originateallows an implicit account to originate a new smart contract rollup (initialized with a given boot sector). The- parameters_tyfield allows to provide the expected interface of the rollup being originated (i.e. its entrypoints with their associated signatures) as a Michelson type.
- | Sc_rollup_originate : {- kind : Sc_rollups.Kind.t;
- boot_sector : string;
- origination_proof : Sc_rollup_proof_repr.serialized;
- parameters_ty : Script_repr.lazy_expr;
 - } -> Kind.sc_rollup_originate manager_operation
- | Sc_rollup_add_messages : {- } -> Kind.sc_rollup_add_messages manager_operation
- | Sc_rollup_cement : {- rollup : Sc_rollup_repr.t;
- commitment : Sc_rollup_commitment_repr.Hash.t;
 - } -> Kind.sc_rollup_cement manager_operation
- | Sc_rollup_publish : {- rollup : Sc_rollup_repr.t;
- commitment : Sc_rollup_commitment_repr.t;
 - } -> Kind.sc_rollup_publish manager_operation
- | Sc_rollup_refute : {- rollup : Sc_rollup_repr.t;
- opponent : Sc_rollup_repr.Staker.t;
- refutation : Sc_rollup_game_repr.refutation;
 - } -> Kind.sc_rollup_refute manager_operation(*
 *)- Sc_rollup_refute { rollup; opponent; refutation }makes a move in a refutation game between the source of the operation and the- opponentunder the given- rollup. Both players must be stakers on commitments in conflict. When- refutation = None, the game is initialized. Next, when- refutation = Some move,- moveis the next play for the current player. See- Sc_rollup_game_reprfor details. *
- | Sc_rollup_timeout : {- rollup : Sc_rollup_repr.t;
- stakers : Sc_rollup_game_repr.Index.t;
 - } -> Kind.sc_rollup_timeout manager_operation
- | Sc_rollup_execute_outbox_message : {- rollup : Sc_rollup_repr.t;(*- The smart-contract rollup. *)
- cemented_commitment : Sc_rollup_commitment_repr.Hash.t;(*- The hash of the last cemented commitment that the proof refers to. *)
- output_proof : string;(*- A message along with a proof that it is included in the outbox at a given outbox level and message index. *)
 - } -> Kind.sc_rollup_execute_outbox_message manager_operation
- | Sc_rollup_recover_bond : {- sc_rollup : Sc_rollup_repr.t;
- staker : Tezos_protocol_environment_alpha.Signature.Public_key_hash.t;
 - } -> Kind.sc_rollup_recover_bond manager_operation
- | Zk_rollup_origination : {- public_parameters : Tezos_protocol_environment_alpha.Plonk.public_parameters;
- circuits_info : [ `Public | `Private | `Fee ] Zk_rollup_account_repr.SMap.t;(*- Circuit names, alongside a tag indicating its kind. *)
- init_state : Zk_rollup_state_repr.t;
- nb_ops : int;
 - } -> Kind.zk_rollup_origination manager_operation
- | Zk_rollup_publish : {- zk_rollup : Zk_rollup_repr.t;
- ops : (Zk_rollup_operation_repr.t * Zk_rollup_ticket_repr.t option) list;
 - } -> Kind.zk_rollup_publish manager_operation
- | Zk_rollup_update : {- zk_rollup : Zk_rollup_repr.t;
- update : Zk_rollup_update_repr.t;
 - } -> Kind.zk_rollup_update manager_operation
A manager_operation describes management and interactions between contracts (whether implicit or smart).
type packed_manager_operation = - | Manager : 'kind manager_operation -> packed_manager_operation
val of_list : 
  packed_contents list ->
  packed_contents_list Tezos_protocol_environment_alpha.Error_monad.tzresulttype packed_operation = {- shell : Tezos_protocol_environment_alpha.Operation.shell_header;
- protocol_data : packed_protocol_data;
}val contents_list_encoding : 
  packed_contents_list Tezos_protocol_environment_alpha.Data_encoding.tval protocol_data_encoding : 
  packed_protocol_data Tezos_protocol_environment_alpha.Data_encoding.tval unsigned_operation_encoding : 
  (Tezos_protocol_environment_alpha.Operation.shell_header
   * packed_contents_list)
    Tezos_protocol_environment_alpha.Data_encoding.tEach operation belongs to a validation pass that is an integer abstracting its priority in a block. Except Failing_noop.
The validation pass of consensus operations.
The validation pass of voting operations.
The validation pass of anonymous operations.
The validation pass of anonymous operations.
acceptable_pass op returns either the validation_pass of op when defines and None when op is Failing_noop.
compare_by_passes orders two operations in the reverse order of their acceptable passes.
val compare : 
  (Tezos_protocol_environment_alpha.Operation_hash.t * packed_operation) ->
  (Tezos_protocol_environment_alpha.Operation_hash.t * packed_operation) ->
  intcompare (oph1,op1) (oph2,op2) defines a total ordering relation on operations.
The following requirements must be satisfied: oph1 is the Operation.hash op1, oph2 is Operation.hash op2, and that op1 and op2 are valid in the same context.
compare (oph1,op1) (oph2,op2) = 0 happens only if Operation_hash.compare oph1 oph2 = 0, meaning when op1 and op2 are structurally identical.
Two valid operations of different validation_pass are compared according to acceptable_passes: the one with the smaller pass being the greater.
Two valid operations of the same validation_pass are compared according to a weight, computed thanks to their static information.
The global order is as follows:
Endorsement and Preendorsement > Dal_attestation > Proposals > Ballot > Double_preendorsement_evidence > Double_endorsement_evidence > Double_baking_evidence > Vdf_revelation > Seed_nonce_revelation > Activate_account > Drain_delegate > Manager_operation.
Endorsement and Preendorsement are compared by the pair of their level and round such as the farther to the current state level and round is greater; e.g. the greater pair in lexicographic order being the better. When equal and both operations being of the same kind, we compare their slot: the The smaller being the better, assuming that the more slots an endorser has, the smaller is its smallest slot. When the pair is equal and comparing an Endorsement]toa{!Preendorsement, the Endorsement is better.
Two Dal_attestation ops are compared in the lexicographic order of the pair of their number of endorsed slots as available and their endorsers.
Two voting operations are compared in the lexicographic order of the pair of their period and source. A Proposals is better than a Ballot.
Two denunciations of the same kind are compared such as the farther to the current state the better. For Double_baking_evidence in the case of equality, they are compared by the hashes of their first denounced block_header.
Two Vdf_revelation ops are compared by their solution.
Two Seed_nonce_relevation ops are compared by their level.
Two Activate_account ops are compared by their id.
Two Drain_delegate ops are compared by their delegate.
Two Manager_operations are compared in the lexicographic order of the pair of their fee/gas_limit ratios and source.