From 618a43b485ac6a4f7d3a5ae389a2d8c0a89202b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Henry?= Date: Wed, 31 Jan 2018 10:18:32 +0100 Subject: [PATCH] Proto: export `acceptable_passes` --- src/lib_protocol_environment_client/fake_updater.ml | 1 + src/lib_protocol_environment_sigs/v1/updater.mli | 6 ++++++ src/lib_protocol_updater/updater.ml | 1 + src/lib_protocol_updater/updater.mli | 1 + src/proto_alpha/lib_protocol/src/main.ml | 1 + src/proto_alpha/lib_protocol/src/operation_repr.ml | 2 ++ src/proto_alpha/lib_protocol/src/operation_repr.mli | 2 ++ src/proto_alpha/lib_protocol/src/tezos_context.mli | 1 + src/proto_demo/lib_protocol/src/main.ml | 1 + src/proto_genesis/lib_protocol/src/main.ml | 1 + 10 files changed, 17 insertions(+) diff --git a/src/lib_protocol_environment_client/fake_updater.ml b/src/lib_protocol_environment_client/fake_updater.ml index b4169824c..ae66f594a 100644 --- a/src/lib_protocol_environment_client/fake_updater.ml +++ b/src/lib_protocol_environment_client/fake_updater.ml @@ -38,6 +38,7 @@ module Make(Context : sig type t end) = struct type operation val parse_operation: Operation_hash.t -> Operation.t -> operation tzresult + val acceptable_passes: operation -> int list val compare_operations: operation -> operation -> int type validation_state val current_context: validation_state -> Context.t tzresult Lwt.t diff --git a/src/lib_protocol_environment_sigs/v1/updater.mli b/src/lib_protocol_environment_sigs/v1/updater.mli index 0ec3b3d3f..c03e38783 100644 --- a/src/lib_protocol_environment_sigs/v1/updater.mli +++ b/src/lib_protocol_environment_sigs/v1/updater.mli @@ -70,6 +70,12 @@ module type PROTOCOL = sig val parse_operation: Operation_hash.t -> Operation.t -> operation tzresult + (** The Validation passes in which an operation can appear. + For instance [[0]] if it only belongs to the first pass. + An answer of [[]] means that the operation is ill-formed + and cannot be included at all. *) + val acceptable_passes: operation -> int list + (** Basic ordering of operations. [compare_operations op1 op2] means that [op1] should appear before [op2] in a block. *) val compare_operations: operation -> operation -> int diff --git a/src/lib_protocol_updater/updater.ml b/src/lib_protocol_updater/updater.ml index d94a0ad0e..87493361d 100644 --- a/src/lib_protocol_updater/updater.ml +++ b/src/lib_protocol_updater/updater.ml @@ -134,6 +134,7 @@ module type RAW_PROTOCOL = sig type operation val parse_operation: Operation_hash.t -> Operation.t -> operation tzresult + val acceptable_passes: operation -> int list val compare_operations: operation -> operation -> int type validation_state val current_context: validation_state -> Context.t tzresult Lwt.t diff --git a/src/lib_protocol_updater/updater.mli b/src/lib_protocol_updater/updater.mli index f14b122b0..d22784f46 100644 --- a/src/lib_protocol_updater/updater.mli +++ b/src/lib_protocol_updater/updater.mli @@ -45,6 +45,7 @@ module type RAW_PROTOCOL = sig type operation val parse_operation: Operation_hash.t -> Operation.t -> operation tzresult + val acceptable_passes: operation -> int list val compare_operations: operation -> operation -> int type validation_state val current_context: validation_state -> Context.t tzresult Lwt.t diff --git a/src/proto_alpha/lib_protocol/src/main.ml b/src/proto_alpha/lib_protocol/src/main.ml index 439175fd8..1591647d7 100644 --- a/src/proto_alpha/lib_protocol/src/main.ml +++ b/src/proto_alpha/lib_protocol/src/main.ml @@ -12,6 +12,7 @@ type operation = Tezos_context.operation let parse_operation = Tezos_context.Operation.parse +let acceptable_passes = Tezos_context.Operation.acceptable_passes let max_block_length = Tezos_context.Block_header.max_header_length diff --git a/src/proto_alpha/lib_protocol/src/operation_repr.ml b/src/proto_alpha/lib_protocol/src/operation_repr.ml index a374fea33..773b935c8 100644 --- a/src/proto_alpha/lib_protocol/src/operation_repr.ml +++ b/src/proto_alpha/lib_protocol/src/operation_repr.ml @@ -362,6 +362,8 @@ let parse hash (op: Operation.t) = ok { hash ; shell = op.shell ; contents ; signature } | None -> error Cannot_parse_operation +let acceptable_passes _op = [0] + type error += Invalid_signature (* `Permanent *) type error += Missing_signature (* `Permanent *) diff --git a/src/proto_alpha/lib_protocol/src/operation_repr.mli b/src/proto_alpha/lib_protocol/src/operation_repr.mli index 98cdc56a3..d20f288ad 100644 --- a/src/proto_alpha/lib_protocol/src/operation_repr.mli +++ b/src/proto_alpha/lib_protocol/src/operation_repr.mli @@ -97,6 +97,8 @@ val hash_raw: raw -> Operation_hash.t val parse: Operation_hash.t -> Operation.t -> operation tzresult +val acceptable_passes: operation -> int list + val parse_proto: MBytes.t -> (proto_operation * Ed25519.Signature.t option) tzresult Lwt.t diff --git a/src/proto_alpha/lib_protocol/src/tezos_context.mli b/src/proto_alpha/lib_protocol/src/tezos_context.mli index 407e37d5b..cd59572b7 100644 --- a/src/proto_alpha/lib_protocol/src/tezos_context.mli +++ b/src/proto_alpha/lib_protocol/src/tezos_context.mli @@ -609,6 +609,7 @@ module Operation : sig type error += Cannot_parse_operation (* `Branch *) val parse: Operation_hash.t -> Operation.t -> operation tzresult + val acceptable_passes: operation -> int list val parse_proto: MBytes.t -> (proto_operation * signature option) tzresult Lwt.t diff --git a/src/proto_demo/lib_protocol/src/main.ml b/src/proto_demo/lib_protocol/src/main.ml index c1e6aea35..706b9f117 100644 --- a/src/proto_demo/lib_protocol/src/main.ml +++ b/src/proto_demo/lib_protocol/src/main.ml @@ -12,6 +12,7 @@ let max_operation_data_length = 42 let max_block_length = 42 let validation_passes = [] +let acceptable_passes _op = [] let parse_operation h _ = Ok h diff --git a/src/proto_genesis/lib_protocol/src/main.ml b/src/proto_genesis/lib_protocol/src/main.ml index f869c2bf9..d2b060c19 100644 --- a/src/proto_genesis/lib_protocol/src/main.ml +++ b/src/proto_genesis/lib_protocol/src/main.ml @@ -34,6 +34,7 @@ let () = type operation = unit let parse_operation _h _op = Error [] +let acceptable_passes _op = [] let compare_operations _ _ = 0 let validation_passes = []