Revision 1143fc9798ec6e5f58164caffdaca7178402e80b authored by Alain Mebsout on 16 November 2022, 15:55:34 UTC, committed by Alain Mebsout on 18 November 2022, 17:03:24 UTC
1 parent 9bd2352
environment_V2.mli
(*****************************************************************************)
(* *)
(* Open Source License *)
(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. <contact@tezos.com> *)
(* Copyright (c) 2021 Nomadic Labs. <contact@nomadic-labs.com> *)
(* *)
(* Permission is hereby granted, free of charge, to any person obtaining a *)
(* copy of this software and associated documentation files (the "Software"),*)
(* to deal in the Software without restriction, including without limitation *)
(* the rights to use, copy, modify, merge, publish, distribute, sublicense, *)
(* and/or sell copies of the Software, and to permit persons to whom the *)
(* Software is furnished to do so, subject to the following conditions: *)
(* *)
(* The above copyright notice and this permission notice shall be included *)
(* in all copies or substantial portions of the Software. *)
(* *)
(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*)
(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *)
(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *)
(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*)
(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *)
(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *)
(* DEALINGS IN THE SOFTWARE. *)
(* *)
(*****************************************************************************)
open Environment_context
open Environment_protocol_T
module type T = sig
include
Tezos_protocol_environment_sigs.V2.T
with type Format.formatter = Format.formatter
and type 'a Data_encoding.t = 'a Data_encoding.t
and type 'a Data_encoding.lazy_t = 'a Data_encoding.lazy_t
and type 'a Lwt.t = 'a Lwt.t
and type ('a, 'b) Pervasives.result = ('a, 'b) result
and type Chain_id.t = Tezos_crypto.Chain_id.t
and type Block_hash.t = Tezos_crypto.Block_hash.t
and type Operation_hash.t = Tezos_crypto.Operation_hash.t
and type Operation_list_hash.t = Tezos_crypto.Operation_list_hash.t
and type Operation_list_list_hash.t =
Tezos_crypto.Operation_list_list_hash.t
and type Context.t = Context.t
and type Context_hash.t = Tezos_crypto.Context_hash.t
and type Protocol_hash.t = Tezos_crypto.Protocol_hash.t
and type Time.t = Time.Protocol.t
and type Operation.shell_header = Operation.shell_header
and type Operation.t = Operation.t
and type Block_header.shell_header = Block_header.shell_header
and type Block_header.t = Block_header.t
and type 'a RPC_directory.t = 'a Tezos_rpc.Directory.t
and type Ed25519.Public_key_hash.t =
Tezos_crypto.Ed25519.Public_key_hash.t
and type Ed25519.Public_key.t = Tezos_crypto.Ed25519.Public_key.t
and type Ed25519.t = Tezos_crypto.Ed25519.t
and type Secp256k1.Public_key_hash.t =
Tezos_crypto.Secp256k1.Public_key_hash.t
and type Secp256k1.Public_key.t = Tezos_crypto.Secp256k1.Public_key.t
and type Secp256k1.t = Tezos_crypto.Secp256k1.t
and type P256.Public_key_hash.t = Tezos_crypto.P256.Public_key_hash.t
and type P256.Public_key.t = Tezos_crypto.P256.Public_key.t
and type P256.t = Tezos_crypto.P256.t
and type Signature.public_key_hash =
Tezos_crypto.Signature.public_key_hash
and type Signature.public_key = Tezos_crypto.Signature.public_key
and type Signature.t = Tezos_crypto.Signature.t
and type Signature.watermark = Tezos_crypto.Signature.watermark
and type 'a Micheline.canonical = 'a Micheline.canonical
and type Z.t = Z.t
and type ('a, 'b) Micheline.node = ('a, 'b) Micheline.node
and type Data_encoding.json_schema = Data_encoding.json_schema
and type ('a, 'b) RPC_path.t = ('a, 'b) Tezos_rpc.Path.t
and type RPC_service.meth = Tezos_rpc.Service.meth
and type (+'m, 'pr, 'p, 'q, 'i, 'o) RPC_service.t =
('m, 'pr, 'p, 'q, 'i, 'o) Tezos_rpc.Service.t
and type Error_monad.shell_tztrace = Error_monad.tztrace
and type 'a Error_monad.shell_tzresult = ('a, Error_monad.tztrace) result
and module Sapling = Tezos_sapling.Core.Validator_legacy
(** An [Ecoproto_error e] is a shell error that carry a protocol error.
Each protocol has its own error-monad (instantiated when this module here
is applied) with a fresh extensible error type. This protocol-specific
error type is incompatible with the shell's. The [Ecoproto_error]
constructor belongs to the shell's error type and it carries the errors of
the protocol's specific error type back into the shell's.
The function [wrap_tz*] below provide wrappers for three different levels:
errors, traces, and tzresults. They are used within the implementation of
the environment to translate some return values from the protocol's error
monad into the shell's. They are exported because they can be useful for
writing tests for the protocol (i.e., for the tests located in
[src/proto_*/lib_protocol/test/]) and for writing protocol-specific
support libraries and binaries (i.e., for the code in
[src/proto_*/lib_{client,delegate,etc.}]). *)
type error += Ecoproto_error of Error_monad.error
(** [wrap_tzerror e] is a shell error wrapping the protocol error [e].
(It is [Ecoproto_error e].) *)
val wrap_tzerror : Error_monad.error -> error
(** [wrap_tztrace t] is a shell trace composed of the wrapped errors of the
protocol trace [t]. *)
val wrap_tztrace : Error_monad.error Error_monad.trace -> error trace
(** [wrap_tzresult r] is a shell tzresult that carries the same result as or a
wrapped trace of the protocol tzresult [r].
(It is [Ok x] if [r] is [Ok x], it is [Error (wrap_tztrace t)] if [r] is
[Error t].) *)
val wrap_tzresult : 'a Error_monad.tzresult -> 'a tzresult
module Lift (P : Updater.PROTOCOL) :
PROTOCOL
with type block_header_data = P.block_header_data
and type block_header_metadata = P.block_header_metadata
and type block_header = P.block_header
and type operation_data = P.operation_data
and type operation_receipt = P.operation_receipt
and type operation = P.operation
and type validation_state = P.validation_state
class ['chain, 'block] proto_rpc_context :
Tezos_rpc.Context.t
-> (unit, (unit * 'chain) * 'block) RPC_path.t
-> ['chain * 'block] RPC_context.simple
class ['block] proto_rpc_context_of_directory :
('block -> RPC_context.t)
-> RPC_context.t RPC_directory.t
-> ['block] RPC_context.simple
end
module Make (Param : sig
val name : string
end)
() :
T
with type Updater.validation_result = validation_result
and type Updater.quota = quota
and type Updater.rpc_context = rpc_context
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...