From 683dbd7fe005895bcf79853b7ac8b0e89f867ccc Mon Sep 17 00:00:00 2001 From: Ryan Tan Date: Wed, 1 Feb 2023 22:45:13 +0000 Subject: [PATCH] Dac: define and implement Dac_hash Dac: integrate dac_hash into plugin Dac: update dac node to use Dac_hash Dac: test dac hash interoperable with reveal hash --- .gitlab/ci/jobs/packaging/opam_package.yml | 2 + dune-project | 1 + manifest/main.ml | 17 +++ opam/tezos-dac-node-lib-test.opam | 26 ++++ src/bin_dac_node/data_streamer.ml | 9 +- src/bin_dac_node/data_streamer.mli | 7 +- src/bin_dac_node/node_context.ml | 8 +- src/bin_dac_node/node_context.mli | 5 +- src/lib_dac_node/dac_hash.ml | 48 +++++++ src/lib_dac_node/dac_hash.mli | 48 +++++++ src/lib_dac_node/dac_plugin.ml | 11 +- src/lib_dac_node/dac_plugin.mli | 10 +- src/lib_dac_node/test/dune | 27 ++++ src/lib_dac_node/test/main.ml | 51 +++++++ src/lib_dac_node/test/test_dac_hash.ml | 127 ++++++++++++++++++ .../lib_dac/dac_plugin_registration.ml | 4 +- 16 files changed, 372 insertions(+), 29 deletions(-) create mode 100644 opam/tezos-dac-node-lib-test.opam create mode 100644 src/lib_dac_node/dac_hash.ml create mode 100644 src/lib_dac_node/dac_hash.mli create mode 100644 src/lib_dac_node/test/dune create mode 100644 src/lib_dac_node/test/main.ml create mode 100644 src/lib_dac_node/test/test_dac_hash.ml diff --git a/.gitlab/ci/jobs/packaging/opam_package.yml b/.gitlab/ci/jobs/packaging/opam_package.yml index f18421168fb0..7c4053d2bc47 100644 --- a/.gitlab/ci/jobs/packaging/opam_package.yml +++ b/.gitlab/ci/jobs/packaging/opam_package.yml @@ -611,6 +611,8 @@ opam:tezos-crypto-dal: # Ignoring unreleased package tezos-dac-node-lib. +# Ignoring unreleased package tezos-dac-node-lib-test. + # Ignoring unreleased package tezos-dal-016-PtMumbai. # Ignoring unreleased package tezos-dal-alpha. diff --git a/dune-project b/dune-project index 28baa0464df2..5fed207d4e81 100644 --- a/dune-project +++ b/dune-project @@ -79,6 +79,7 @@ (package (name tezos-crypto-dal)) (package (name tezos-dac-alpha)) (package (name tezos-dac-node-lib)(allow_empty)) +(package (name tezos-dac-node-lib-test)(allow_empty)) (package (name tezos-dal-016-PtMumbai)) (package (name tezos-dal-alpha)) (package (name tezos-dal-node-lib)(allow_empty)) diff --git a/manifest/main.ml b/manifest/main.ml index 86fec75826e4..eef97d115492 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -3286,6 +3286,23 @@ let octez_dac_node_lib = octez_stdlib_unix |> open_; ] +let _octez_dac_node_lib_tests = + test + "main" + ~path:"src/lib_dac_node/test" + ~opam:"tezos-dac-node-lib-test" + ~synopsis:"Test for dac node lib" + ~deps: + [ + octez_stdlib |> open_; + octez_stdlib_unix |> open_; + octez_base |> open_ |> open_ ~m:"TzPervasives"; + octez_test_helpers |> open_; + octez_base_test_helpers |> open_; + octez_dac_node_lib |> open_; + alcotest_lwt; + ] + let octez_node_config = public_lib "octez-node-config" diff --git a/opam/tezos-dac-node-lib-test.opam b/opam/tezos-dac-node-lib-test.opam new file mode 100644 index 000000000000..f21b671a59dd --- /dev/null +++ b/opam/tezos-dac-node-lib-test.opam @@ -0,0 +1,26 @@ +# This file was automatically generated, do not edit. +# Edit file manifest/main.ml instead. +opam-version: "2.0" +maintainer: "contact@tezos.com" +authors: ["Tezos devteam"] +homepage: "https://www.tezos.com/" +bug-reports: "https://gitlab.com/tezos/tezos/issues" +dev-repo: "git+https://gitlab.com/tezos/tezos.git" +license: "MIT" +depends: [ + "dune" { >= "3.0" } + "ocaml" { >= "4.14" } + "tezos-stdlib" {with-test} + "tezos-stdlib-unix" {with-test} + "tezos-base" {with-test} + "tezos-test-helpers" {with-test} + "tezos-base-test-helpers" {with-test} + "tezos-dac-node-lib" {with-test} + "alcotest-lwt" { with-test & >= "1.5.0" } +] +build: [ + ["rm" "-r" "vendors"] + ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} +] +synopsis: "Test for dac node lib" diff --git a/src/bin_dac_node/data_streamer.ml b/src/bin_dac_node/data_streamer.ml index 6d6062f0d381..ec2bf0f7db22 100644 --- a/src/bin_dac_node/data_streamer.ml +++ b/src/bin_dac_node/data_streamer.ml @@ -26,11 +26,8 @@ (* Component for streaming published root page hashes to subscribers. *) module type S = sig - (* Protocol hash type used for reveal_preimage. *) - type hash - (* [publish hash] publishes a root page [hash] to all attached subscribers. *) - val publish : hash -> unit tzresult Lwt.t + val publish : Dac_hash.t -> unit tzresult Lwt.t (* FIXME: https://gitlab.com/tezos/tezos/-/issues/4680 Access Dac coordinator details via some [Dac_client.cctx]. @@ -42,15 +39,13 @@ module type S = sig val subscribe : coordinator_host:string -> coordinator_port:int -> - hash Lwt_stream.t * Lwt_watcher.stopper + Dac_hash.t Lwt_stream.t * Lwt_watcher.stopper end (* TODO: https://gitlab.com/tezos/tezos/-/issues/4510 Implement useful streaming. *) module Make (P : Dac_plugin.T) : S = struct - type hash = P.hash - let publish _hash = Lwt_result_syntax.return_unit let subscribe ~coordinator_host ~coordinator_port = diff --git a/src/bin_dac_node/data_streamer.mli b/src/bin_dac_node/data_streamer.mli index 9d63176e7095..e36b06163f86 100644 --- a/src/bin_dac_node/data_streamer.mli +++ b/src/bin_dac_node/data_streamer.mli @@ -26,11 +26,8 @@ (* Component for streaming published root page hashes to subscribers. *) module type S = sig - (* Protocol hash type used for reveal_preimage. *) - type hash - (* [publish hash] publishes a root page [hash] to all attached subscribers. *) - val publish : hash -> unit tzresult Lwt.t + val publish : Dac_hash.t -> unit tzresult Lwt.t (* FIXME: https://gitlab.com/tezos/tezos/-/issues/4680 Access Dac coordinator details via some [Dac_client.cctx]. @@ -42,7 +39,7 @@ module type S = sig val subscribe : coordinator_host:string -> coordinator_port:int -> - hash Lwt_stream.t * Lwt_watcher.stopper + Dac_hash.t Lwt_stream.t * Lwt_watcher.stopper end module Make (P : Dac_plugin.T) : S diff --git a/src/bin_dac_node/node_context.ml b/src/bin_dac_node/node_context.ml index 10c118d50c3f..0cf1a0ae6783 100644 --- a/src/bin_dac_node/node_context.ml +++ b/src/bin_dac_node/node_context.ml @@ -25,10 +25,7 @@ exception Status_already_ready -type ready_ctxt = { - dac_plugin : (module Dac_plugin.T); - data_streamer : (module Data_streamer.S); -} +type ready_ctxt = {dac_plugin : (module Dac_plugin.T)} type status = Ready of ready_ctxt | Starting @@ -49,8 +46,7 @@ let set_ready ctxt ~dac_plugin = Currently, Dac only supports coordinator functionalities but we might want to filter this capability out depending on the profile. *) - let module Data_streamer = Data_streamer.Make (Dac_plugin) in - ctxt.status <- Ready {dac_plugin; data_streamer = (module Data_streamer)} + ctxt.status <- Ready {dac_plugin} | Ready _ -> raise Status_already_ready type error += Node_not_ready diff --git a/src/bin_dac_node/node_context.mli b/src/bin_dac_node/node_context.mli index 4c09208ae9bc..8cefbcc2379b 100644 --- a/src/bin_dac_node/node_context.mli +++ b/src/bin_dac_node/node_context.mli @@ -25,10 +25,7 @@ (** A [ready_ctx] value contains globally needed informations for a running dac node. It is available when the DAC plugin has been loaded. *) -type ready_ctxt = { - dac_plugin : (module Dac_plugin.T); - data_streamer : (module Data_streamer.S); -} +type ready_ctxt = {dac_plugin : (module Dac_plugin.T)} (** The status of the dac node. *) type status = Ready of ready_ctxt | Starting diff --git a/src/lib_dac_node/dac_hash.ml b/src/lib_dac_node/dac_hash.ml new file mode 100644 index 000000000000..0f8373ae96e1 --- /dev/null +++ b/src/lib_dac_node/dac_hash.ml @@ -0,0 +1,48 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2023 Trili Tech, *) +(* *) +(* 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. *) +(* *) +(*****************************************************************************) +type t = bytes + +module type Reveal_hash_mapper = sig + type reveal_hash + + val of_reveal_hash : reveal_hash -> t + + val to_reveal_hash : t -> reveal_hash + + val encoding : t Data_encoding.t +end + +module Make (H : Dac_plugin.Protocol_reveal_hash) = struct + (* NB: Safe since failure case only occurs if [buffer_size] is given. *) + let of_reveal_hash proto_reveal_hash = + Data_encoding.Binary.to_bytes_exn H.encoding proto_reveal_hash + + (** NB: Safe since the [Dac_hash.t] could only be constructed from a + [H.t]. *) + let to_reveal_hash dac_hash = + Data_encoding.Binary.of_bytes_exn H.encoding dac_hash + + let encoding = Data_encoding.conv to_reveal_hash of_reveal_hash H.encoding +end diff --git a/src/lib_dac_node/dac_hash.mli b/src/lib_dac_node/dac_hash.mli new file mode 100644 index 000000000000..a1f89ad5f236 --- /dev/null +++ b/src/lib_dac_node/dac_hash.mli @@ -0,0 +1,48 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2023 Trili Tech, *) +(* *) +(* 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. *) +(* *) +(*****************************************************************************) + +(** This module exposes a hash representation that abstracts over the protocol + reveal hash type. +*) +type t + +(** Operations of [Dac_hash.t] that relate to [Protocol.Sc_rollup_reveal_hash.t]. *) +module type Reveal_hash_mapper = sig + (** Protocol reveal hash type typically coming from + [Protocol.Sc_rollup_reveal_hash.t]. + *) + type reveal_hash + + (** Derives a [Dac_hash.t] from [reveal_hash]. *) + val of_reveal_hash : reveal_hash -> t + + (** Derives a [reveal_hash] from [Dac_hash.t]. *) + val to_reveal_hash : t -> reveal_hash + + val encoding : t Data_encoding.t +end + +module Make (P : Dac_plugin.Protocol_reveal_hash) : + Reveal_hash_mapper with type reveal_hash := P.t diff --git a/src/lib_dac_node/dac_plugin.ml b/src/lib_dac_node/dac_plugin.ml index bd0f118d6d34..6085856466fd 100644 --- a/src/lib_dac_node/dac_plugin.ml +++ b/src/lib_dac_node/dac_plugin.ml @@ -23,10 +23,15 @@ (* *) (*****************************************************************************) -module type T = sig - (* Protocol's reveal_hash type. Usually [Protocol.Sc_rollup_reveal_hash.t]. *) +(* Protocol's reveal_hash type. Usually [Protocol.Sc_rollup_reveal_hash.t]. *) +module type Protocol_reveal_hash = sig + type t + + val encoding : t Data_encoding.t +end - type hash +module type T = sig + module Protocol_reveal_hash : Protocol_reveal_hash module Proto : Registered_protocol.T diff --git a/src/lib_dac_node/dac_plugin.mli b/src/lib_dac_node/dac_plugin.mli index 42ef029cb40e..4eb36d14b3c7 100644 --- a/src/lib_dac_node/dac_plugin.mli +++ b/src/lib_dac_node/dac_plugin.mli @@ -23,9 +23,15 @@ (* *) (*****************************************************************************) +(* Protocol's reveal_hash type. Usually [Protocol.Sc_rollup_reveal_hash.t]. *) +module type Protocol_reveal_hash = sig + type t + + val encoding : t Data_encoding.t +end + module type T = sig - (* Protocol's reveal_hash type. Usually [Protocol.Sc_rollup_reveal_hash.t]. *) - type hash + module Protocol_reveal_hash : Protocol_reveal_hash module Proto : Registered_protocol.T diff --git a/src/lib_dac_node/test/dune b/src/lib_dac_node/test/dune new file mode 100644 index 000000000000..1205238ef9a2 --- /dev/null +++ b/src/lib_dac_node/test/dune @@ -0,0 +1,27 @@ +; This file was automatically generated, do not edit. +; Edit file manifest/main.ml instead. + +(executable + (name main) + (libraries + tezos-stdlib + tezos-stdlib-unix + tezos-base + tezos-test-helpers + tezos-base-test-helpers + tezos_dac_node_lib + alcotest-lwt) + (flags + (:standard) + -open Tezos_stdlib + -open Tezos_stdlib_unix + -open Tezos_base + -open Tezos_base.TzPervasives + -open Tezos_test_helpers + -open Tezos_base_test_helpers + -open Tezos_dac_node_lib)) + +(rule + (alias runtest) + (package tezos-dac-node-lib-test) + (action (run %{dep:./main.exe}))) diff --git a/src/lib_dac_node/test/main.ml b/src/lib_dac_node/test/main.ml new file mode 100644 index 000000000000..e30255bc9649 --- /dev/null +++ b/src/lib_dac_node/test/main.ml @@ -0,0 +1,51 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2022 Trili Tech, *) +(* *) +(* 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. *) +(* *) +(*****************************************************************************) + +module Unit_test : sig + (** + * Example: [spec "Dac_hash.ml" Test_dac_hash.tests] + * Unit tests needs tag in log (like "[UNIT] some test description here...") + * This function handles such meta data *) + val spec : + string -> + unit Alcotest_lwt.test_case list -> + string * unit Alcotest_lwt.test_case list + + (** Tests with description string without [Unit] are skipped *) + val _skip : + string -> + unit Alcotest_lwt.test_case list -> + string * unit Alcotest_lwt.test_case list +end = struct + let spec unit_name test_cases = ("[Unit] " ^ unit_name, test_cases) + + let _skip unit_name test_cases = ("[SKIPPED] " ^ unit_name, test_cases) +end + +let () = + Alcotest_lwt.run + "protocol > unit" + [Unit_test.spec "Dac_hash.ml" Test_dac_hash.tests] + |> Lwt_main.run diff --git a/src/lib_dac_node/test/test_dac_hash.ml b/src/lib_dac_node/test/test_dac_hash.ml new file mode 100644 index 000000000000..14dc2e8fa025 --- /dev/null +++ b/src/lib_dac_node/test/test_dac_hash.ml @@ -0,0 +1,127 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2023 Trili Tech, *) +(* *) +(* 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. *) +(* *) +(*****************************************************************************) + +(** Testing + ------- + Component: Lib_dac_node Dac_hash + Invocation: dune exec src/lib_dac_node/test/main.exe \ + -- test "^\[Unit\] Dac_hash.ml$" + Subject: Tests for the interoperability between Dac hash + and given protocol hash +*) + +open Tezos_crypto + +module Mock_Reveal_Hash = struct + module Blake2B = struct + include + Blake2B.Make + (Base58) + (struct + let name = "Smart_rollup_reveal_data_blake2b_hash" + + let title = "A smart rollup reveal hash" + + let b58check_prefix = + "\230\206\128\200\196" (* "scrrh1(56)" decoded from Base58. *) + + let size = Some 32 + end) + + let () = Base58.check_encoded_prefix b58check_encoding "scrrh1" 56 + end + + type t = Blake2B of Blake2B.t + + let encoding = + let open Data_encoding in + union + ~tag_size:`Uint8 + [ + case + ~title:"Reveal_data_hash_v0" + (Tag 0) + Blake2B.encoding + (fun (Blake2B s) -> Some s) + (fun s -> Blake2B s); + ] + + let to_hex hash = + let (`Hex hash) = + Hex.of_string @@ Data_encoding.Binary.to_string_exn encoding hash + in + hash + + let of_hex hex = + let open Option_syntax in + let* hash = Hex.to_bytes (`Hex hex) in + Data_encoding.Binary.of_bytes_opt encoding hash + + let equal (Blake2B a) (Blake2B b) = Blake2B.equal a b +end + +(* Hash copied from + https://gitlab.com/tezos/tezos/-/blob/master/tezt/tests/dac.ml#L331 *) +let reveal_hash = + Stdlib.Option.get + @@ Mock_Reveal_Hash.of_hex + "00a3703854279d2f377d689163d1ec911a840d84b56c4c6f6cafdf0610394df7c6" + +module Reveal_hash_mapper = Dac_hash.Make (Mock_Reveal_Hash) + +let test_dac_hash_bin_encoding_roundtrips_with_reveal_hash () = + let to_bytes e a = + Stdlib.Result.get_ok @@ Data_encoding.Binary.to_bytes e a + in + let from_bytes e a = + Stdlib.Result.get_ok @@ Data_encoding.Binary.of_bytes e a + in + let reveal_hash_bytes = to_bytes Mock_Reveal_Hash.encoding reveal_hash in + let dac_hash = from_bytes Reveal_hash_mapper.encoding reveal_hash_bytes in + let dac_hash_bytes = to_bytes Reveal_hash_mapper.encoding dac_hash in + let reveal_hash_decoded = + from_bytes Mock_Reveal_Hash.encoding dac_hash_bytes + in + Assert.equal ~loc:__LOC__ reveal_hash_bytes dac_hash_bytes ; + Assert.equal ~loc:__LOC__ reveal_hash reveal_hash_decoded ; + Lwt.return @@ Ok () + +let test_dac_conversion_roundtrips_with_reveal_hash () = + let dac_hash = Reveal_hash_mapper.of_reveal_hash reveal_hash in + let decoded_reveal_hash = Reveal_hash_mapper.to_reveal_hash dac_hash in + Assert.equal ~loc:__LOC__ reveal_hash decoded_reveal_hash ; + Lwt.return @@ Ok () + +let tests = + [ + Tztest.tztest + "Binary encoding roundtrip test between Dac hash and reveal hash" + `Quick + test_dac_hash_bin_encoding_roundtrips_with_reveal_hash; + Tztest.tztest + "Conversion roundrip test between Dac hash and reveal hash" + `Quick + test_dac_conversion_roundtrips_with_reveal_hash; + ] diff --git a/src/proto_alpha/lib_dac/dac_plugin_registration.ml b/src/proto_alpha/lib_dac/dac_plugin_registration.ml index 014f574961f5..5f4763996b8a 100644 --- a/src/proto_alpha/lib_dac/dac_plugin_registration.ml +++ b/src/proto_alpha/lib_dac/dac_plugin_registration.ml @@ -2,6 +2,7 @@ (* *) (* Open Source License *) (* Copyright (c) 2022 Nomadic Labs, *) +(* Copyright (c) 2023 TriliTech, *) (* *) (* Permission is hereby granted, free of charge, to any person obtaining a *) (* copy of this software and associated documentation files (the "Software"),*) @@ -24,8 +25,7 @@ (*****************************************************************************) module Plugin = struct - type hash = Protocol.Sc_rollup_reveal_hash.t - + module Protocol_reveal_hash = Protocol.Sc_rollup_reveal_hash module Proto = Registerer.Registered module RPC = RPC end -- GitLab