diff --git a/docs/doc_gen/node_helpers.ml b/docs/doc_gen/node_helpers.ml index da952f0ef1e662afc5cf66b05151158e6ffcc5cf..7d916bdc37a94f5aaabd23750c323f3ede3b4171 100644 --- a/docs/doc_gen/node_helpers.ml +++ b/docs/doc_gen/node_helpers.ml @@ -57,7 +57,7 @@ let with_node f = target = None; disable_mempool = true; enable_testchain = false; - dal = Tezos_crypto_dal.Cryptobox.Config.default; + dal_config = Tezos_crypto_dal.Cryptobox.Config.default; } in let version = diff --git a/manifest/main.ml b/manifest/main.ml index 40ca477bdb4774c7224eba3a3359276f84939774..1d9f3774298f67fef638a544b2fb67517421b6b4 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -1569,6 +1569,13 @@ let _octez_epoxy_tx_tests = ~deps:[octez_epoxy_tx; octez_plonk_test_helpers; octez_aplonk] ~dune:(make_plonk_runtest_invocation ~package:"octez-epoxy-tx") +let octez_dal_config = + public_lib + "tezos-crypto-dal.octez-dal-config" + ~path:"src/lib_crypto_dal/dal_config" + ~deps:[data_encoding |> open_] + ~js_compatible:true + let octez_crypto_dal = public_lib "tezos-crypto-dal" @@ -1580,6 +1587,7 @@ let octez_crypto_dal = octez_stdlib |> open_; octez_error_monad |> open_; data_encoding |> open_; + octez_dal_config |> open_; octez_crypto; octez_bls12_381_polynomial; lwt_unix; @@ -1595,6 +1603,7 @@ let _octez_crypto_dal_tests = [ octez_stdlib |> open_; octez_crypto_dal |> open_; + octez_dal_config |> open_; octez_error_monad |> open_; data_encoding |> open_; alcotezt; @@ -2115,6 +2124,7 @@ let octez_shell_services = octez_version |> open_; octez_context_sigs; octez_merkle_proof_encoding; + octez_dal_config |> open_; ] ~linkall:true ~js_compatible:true @@ -3184,6 +3194,7 @@ let octez_shell = octez_workers |> open_; octez_validation |> open_; octez_version |> open_; + octez_dal_config |> open_; lwt_exit; ] @@ -7274,6 +7285,7 @@ let _octez_dal_node = octez_p2p_services |> open_; octez_crypto |> open_; octez_base_p2p_identity_file |> open_; + octez_shell_services |> open_; irmin_pack; irmin_pack_unix; irmin; diff --git a/opam/octez-dal-node.opam b/opam/octez-dal-node.opam index cdd9beee0de0de33de85f078700789ef7e21be22..1e4295b9e6e5c9da87a42ef256026d49391ba47a 100644 --- a/opam/octez-dal-node.opam +++ b/opam/octez-dal-node.opam @@ -31,6 +31,7 @@ depends: [ "tezos-p2p" "tezos-p2p-services" "tezos-crypto" + "tezos-shell-services" "irmin-pack" { >= "3.7.2" & < "3.8.0" } "irmin" { >= "3.7.2" & < "3.8.0" } "tezos-dal-016-PtMumbai" diff --git a/opam/tezos-crypto-dal.opam b/opam/tezos-crypto-dal.opam index 9dd203fe79dcdf35f8dd17760348c312751f08e6..78722761c6e5c1d2290b7fd1f02048650bb34a15 100644 --- a/opam/tezos-crypto-dal.opam +++ b/opam/tezos-crypto-dal.opam @@ -10,9 +10,9 @@ license: "MIT" depends: [ "dune" { >= "3.0" } "ocaml" { >= "4.14" } + "data-encoding" { >= "0.7.1" & < "1.0.0" } "tezos-stdlib" "tezos-error-monad" - "data-encoding" { >= "0.7.1" & < "1.0.0" } "tezos-crypto" "octez-bls12-381-polynomial" "lwt" { >= "5.6.0" } diff --git a/opam/tezos-shell-services.opam b/opam/tezos-shell-services.opam index 09d1576d074da951feb5e6897e273d335d8bd995..7d21f0fb301429ed144643b9761062d59a987b9b 100644 --- a/opam/tezos-shell-services.opam +++ b/opam/tezos-shell-services.opam @@ -15,6 +15,7 @@ depends: [ "tezos-p2p-services" "tezos-version" "tezos-context" + "tezos-crypto-dal" "tezt" { with-test & >= "3.1.1" } "octez-alcotezt" {with-test} ] diff --git a/opam/tezos-shell.opam b/opam/tezos-shell.opam index a9498715e89e19f1a6350602b8b53a722e8cb899..02191b0894836e1bfbb4ba2d7b3fb4c6ca746d4f 100644 --- a/opam/tezos-shell.opam +++ b/opam/tezos-shell.opam @@ -30,6 +30,7 @@ depends: [ "tezos-workers" "tezos-validation" "tezos-version" + "tezos-crypto-dal" "lwt-exit" "tezt" { with-test & >= "3.1.1" } "tezos-base-test-helpers" {with-test} diff --git a/src/bin_dal_node/cli.ml b/src/bin_dal_node/cli.ml index 35f3daf8d2f1257058115279995114c777fcde36..12b498c3b874000681ef289358d549f063143456 100644 --- a/src/bin_dal_node/cli.ml +++ b/src/bin_dal_node/cli.ml @@ -122,12 +122,6 @@ module Term = struct & opt (some profile_arg) None & info ~docs ~doc ~docv:"[PKH]" ["profile"]) - (* This is provided as a command line option for facility but - eventually it should not appear to the user. *) - let use_unsafe_srs_for_tests = - let open Cmdliner in - Arg.(value & flag & info ["use-unsafe-srs-for-tests"]) - let peers = let open Cmdliner in let default_list = Configuration_file.default.peers in @@ -142,7 +136,7 @@ module Term = struct Cmdliner.Term.( ret (const process $ data_dir $ rpc_addr $ expected_pow $ net_addr - $ endpoint $ profile $ use_unsafe_srs_for_tests $ peers)) + $ endpoint $ profile $ peers)) end module Run = struct @@ -202,7 +196,6 @@ type options = { listen_addr : P2p_point.Id.t option; endpoint : Uri.t option; profile : Services.Types.profile option; - use_unsafe_srs_for_tests : bool; peers : P2p_point.Id.t list; } @@ -210,19 +203,10 @@ type t = Run | Config_init let make ~run = let run subcommand data_dir rpc_addr expected_pow listen_addr endpoint profile - use_unsafe_srs_for_tests peers = + peers = run subcommand - { - data_dir; - rpc_addr; - expected_pow; - listen_addr; - endpoint; - profile; - use_unsafe_srs_for_tests; - peers; - } + {data_dir; rpc_addr; expected_pow; listen_addr; endpoint; profile; peers} |> function | Ok v -> `Ok v | Error error -> diff --git a/src/bin_dal_node/cli.mli b/src/bin_dal_node/cli.mli index c6d7747f2670daa9d5a2f3d2a6682633fa5e10ae..70bb9ed52fc3abfb0e8c701c8d548da5bc656671 100644 --- a/src/bin_dal_node/cli.mli +++ b/src/bin_dal_node/cli.mli @@ -42,7 +42,6 @@ type options = { endpoint : Uri.t option; (** The endpoint on which to contact the L1 node. *) profile : Services.Types.profile option; (** Profile of the DAL node used for tracking shards. *) - use_unsafe_srs_for_tests : bool; peers : P2p_point.Id.t list; (** DAL nodes to connect to. *) } diff --git a/src/bin_dal_node/configuration_file.ml b/src/bin_dal_node/configuration_file.ml index d9b3a1af8aac8d6b700fee0f711a3e9cef318879..e7489224ceb2e6c541d862fc72a6c367d002d14c 100644 --- a/src/bin_dal_node/configuration_file.ml +++ b/src/bin_dal_node/configuration_file.ml @@ -26,7 +26,6 @@ type neighbor = {addr : string; port : int} type t = { - use_unsafe_srs : bool; data_dir : string; rpc_addr : P2p_point.Id.t; neighbors : neighbor list; @@ -55,8 +54,6 @@ let default_neighbors = [] let default_peers = [] -let default_use_unsafe_srs = false - let default_expected_pow = Gossipsub.Transport_layer.Default_parameters.P2p_config.expected_pow @@ -66,7 +63,6 @@ let default_endpoint = Uri.of_string "http://localhost:9732" let default = { - use_unsafe_srs = false; data_dir = default_data_dir; rpc_addr = default_rpc_addr; neighbors = default_neighbors; @@ -103,7 +99,6 @@ let encoding : t Data_encoding.t = let open Data_encoding in conv (fun { - use_unsafe_srs; data_dir; rpc_addr; listen_addr; @@ -114,8 +109,7 @@ let encoding : t Data_encoding.t = endpoint; profile; } -> - ( use_unsafe_srs, - data_dir, + ( data_dir, rpc_addr, listen_addr, neighbors, @@ -124,8 +118,7 @@ let encoding : t Data_encoding.t = network_name, endpoint, profile )) - (fun ( use_unsafe_srs, - data_dir, + (fun ( data_dir, rpc_addr, listen_addr, neighbors, @@ -135,7 +128,6 @@ let encoding : t Data_encoding.t = endpoint, profile ) -> { - use_unsafe_srs; data_dir; rpc_addr; listen_addr; @@ -146,12 +138,7 @@ let encoding : t Data_encoding.t = endpoint; profile; }) - (obj10 - (dft - "use_unsafe_srs" - ~description:"use unsafe srs for tests" - bool - default_use_unsafe_srs) + (obj9 (dft "data-dir" ~description:"Location of the data dir" diff --git a/src/bin_dal_node/configuration_file.mli b/src/bin_dal_node/configuration_file.mli index 70271e5a18885de9d2b089b1f6c522a8dfd8d267..15ef1bbc5f5f98a42b798dfd24044ae87e8daae3 100644 --- a/src/bin_dal_node/configuration_file.mli +++ b/src/bin_dal_node/configuration_file.mli @@ -26,8 +26,6 @@ type neighbor = {addr : string; port : int} type t = { - use_unsafe_srs : bool; - (** Run dal-node in test mode with an unsafe SRS (Trusted setup) *) data_dir : string; (** The path to the DAL node data directory *) rpc_addr : P2p_point.Id.t; (** The address the DAL node listens to *) neighbors : neighbor list; (** List of neighbors to reach within the DAL *) diff --git a/src/bin_dal_node/daemon.ml b/src/bin_dal_node/daemon.ml index ef87e4b182cf0a6e499e5530e963429ed4cb36f4..3f8b16c6ae416edd85a907b65fcb2cae193c8453 100644 --- a/src/bin_dal_node/daemon.ml +++ b/src/bin_dal_node/daemon.ml @@ -75,16 +75,18 @@ let () = (function Cryptobox_initialisation_failed str -> Some str | _ -> None) (fun str -> Cryptobox_initialisation_failed str) -let init_cryptobox unsafe_srs (proto_parameters : Dal_plugin.proto_parameters) = +let fetch_dal_config cctxt = + let open Lwt_syntax in + let* r = Config_services.dal_config cctxt in + match r with + | Error e -> return_error e + | Ok dal_config -> return_ok dal_config + +let init_cryptobox dal_config (proto_parameters : Dal_plugin.proto_parameters) = let open Lwt_result_syntax in let* () = - let use_mock_srs_for_testing : Cryptobox.parameters option = - if unsafe_srs then Some proto_parameters.cryptobox_parameters else None - in let find_srs_files () = Tezos_base.Dal_srs.find_trusted_setup_files () in - Cryptobox.Config.init_dal - ~find_srs_files - Cryptobox.Config.{activated = true; use_mock_srs_for_testing} + Cryptobox.Config.init_dal ~find_srs_files dal_config in match Cryptobox.make proto_parameters.cryptobox_parameters with | Ok cryptobox -> return cryptobox @@ -180,18 +182,15 @@ module Handler = struct let* proto_parameters = Dal_plugin.get_constants `Main (`Head 0) cctxt in - let* cryptobox = - init_cryptobox - config.Configuration_file.use_unsafe_srs - proto_parameters - in + let* dal_config = fetch_dal_config cctxt in + let* cryptobox = init_cryptobox dal_config proto_parameters in let* () = Option.iter_es (Profile_manager.add_profile proto_parameters (Node_context.get_store ctxt) (Node_context.get_gs_worker ctxt)) - config.profile + config.Configuration_file.profile in Node_context.set_ready ctxt diff --git a/src/bin_dal_node/dune b/src/bin_dal_node/dune index 96086371655a9308514a877d71e1c5263a922802..da63016f52609b72c45b6f78e836e92072a04ec6 100644 --- a/src/bin_dal_node/dune +++ b/src/bin_dal_node/dune @@ -32,6 +32,7 @@ tezos-p2p-services tezos-crypto tezos-base.p2p-identity-file + tezos-shell-services irmin-pack irmin-pack.unix irmin @@ -63,6 +64,7 @@ -open Tezos_p2p -open Tezos_p2p_services -open Tezos_crypto - -open Tezos_base_p2p_identity_file)) + -open Tezos_base_p2p_identity_file + -open Tezos_shell_services)) (rule (action (progn (write-file void_for_linking-tezos-dal-alpha.empty "")))) diff --git a/src/bin_dal_node/main.ml b/src/bin_dal_node/main.ml index ffff7b26ba91fefd21453bf6bfbe6fe6175146a6..fe54210b9bcae16ec5ef451baa01fc489f41080a 100644 --- a/src/bin_dal_node/main.ml +++ b/src/bin_dal_node/main.ml @@ -25,22 +25,13 @@ let merge Cli. - { - data_dir; - rpc_addr; - expected_pow; - listen_addr; - endpoint; - profile; - use_unsafe_srs_for_tests; - peers; - } configuration = + {data_dir; rpc_addr; expected_pow; listen_addr; endpoint; profile; peers} + configuration = Configuration_file. { configuration with data_dir = Option.value ~default:configuration.data_dir data_dir; rpc_addr = Option.value ~default:configuration.rpc_addr rpc_addr; - use_unsafe_srs = use_unsafe_srs_for_tests || configuration.use_unsafe_srs; listen_addr = Option.value ~default:configuration.listen_addr listen_addr; expected_pow = Option.value ~default:configuration.expected_pow expected_pow; diff --git a/src/bin_node/node_replay_command.ml b/src/bin_node/node_replay_command.ml index a9ece7b349ee825a27449bfecb1008f4e4bbc16a..fe8dd992eb04ad1a759e804ce1225dab927e49d2 100644 --- a/src/bin_node/node_replay_command.ml +++ b/src/bin_node/node_replay_command.ml @@ -424,7 +424,7 @@ let replay ~internal_events ~singleprocess ~strict protocol_root; process_path = Sys.executable_name; sandbox_parameters = None; - dal_config = Tezos_crypto_dal.Cryptobox.Config.default; + dal_config = config.blockchain_network.dal_config; internal_events; }) in diff --git a/src/bin_node/node_run_command.ml b/src/bin_node/node_run_command.ml index 7c7b8be593ef31cce32cf5f1e66141ab4178796b..2b1ed52beef7aef71350536675dbeede54bb7f08 100644 --- a/src/bin_node/node_run_command.ml +++ b/src/bin_node/node_run_command.ml @@ -315,7 +315,7 @@ let init_node ?sandbox ?target ~identity ~singleprocess ~internal_events target; enable_testchain = config.p2p.enable_testchain; disable_mempool = config.p2p.disable_mempool; - dal = config.dal; + dal_config = config.blockchain_network.dal_config; } in let* () = @@ -540,7 +540,9 @@ let run ?verbosity ?sandbox ?target ?(cli_warnings = []) let*! () = init_zcash () in let* () = let find_srs_files () = Tezos_base.Dal_srs.find_trusted_setup_files () in - Tezos_crypto_dal.Cryptobox.Config.init_dal ~find_srs_files config.dal + Tezos_crypto_dal.Cryptobox.Config.init_dal + ~find_srs_files + config.blockchain_network.dal_config in let*! node = init_node diff --git a/src/lib_crypto_dal/cryptobox.ml b/src/lib_crypto_dal/cryptobox.ml index fcf59e60fd7c9713d27406555a769c7bbad4074d..c3ce0c356ae5a457138bccbcf7da82f7be605522 100644 --- a/src/lib_crypto_dal/cryptobox.ml +++ b/src/lib_crypto_dal/cryptobox.ml @@ -623,26 +623,14 @@ module Inner = struct max_polynomial_length srs_g2_length) - type parameters = { + type parameters = Dal_config.parameters = { redundancy_factor : int; page_size : int; slot_size : int; number_of_shards : int; } - let parameters_encoding = - let open Data_encoding in - conv - (fun {redundancy_factor; page_size; slot_size; number_of_shards} -> - (redundancy_factor, page_size, slot_size, number_of_shards)) - (fun (redundancy_factor, page_size, slot_size, number_of_shards) -> - {redundancy_factor; page_size; slot_size; number_of_shards}) - (obj4 - (req "redundancy_factor" uint8) - (req "page_size" uint16) - (req "slot_size" int31) - (req "number_of_shards" uint16)) - [@@coverage off] + let parameters_encoding = Dal_config.parameters_encoding let pages_per_slot {slot_size; page_size; _} = slot_size / page_size @@ -1835,35 +1823,14 @@ module Internal_for_tests = struct end module Config = struct - type t = {activated : bool; use_mock_srs_for_testing : parameters option} - - let parameters_encoding : parameters Data_encoding.t = - let open Data_encoding in - conv - (fun {slot_size; page_size; redundancy_factor; number_of_shards} -> - (slot_size, page_size, redundancy_factor, number_of_shards)) - (fun (slot_size, page_size, redundancy_factor, number_of_shards) -> - {slot_size; page_size; redundancy_factor; number_of_shards}) - (obj4 - (req "slot_size" int31) - (req "page_size" int31) - (req "redundancy_factor" int31) - (req "number_of_shards" int31)) - [@@coverage off] + type t = Dal_config.t = { + activated : bool; + use_mock_srs_for_testing : parameters option; + } - let encoding : t Data_encoding.t = - let open Data_encoding in - conv - (fun {activated; use_mock_srs_for_testing} -> - (activated, use_mock_srs_for_testing)) - (fun (activated, use_mock_srs_for_testing) -> - {activated; use_mock_srs_for_testing}) - (obj2 - (req "activated" bool) - (req "use_mock_srs_for_testing" (option parameters_encoding))) - [@@coverage off] + let encoding : t Data_encoding.t = Dal_config.encoding - let default = {activated = false; use_mock_srs_for_testing = None} + let default = Dal_config.default let init_dal ~find_srs_files ?(srs_size_log2 = 21) dal_config = let open Lwt_result_syntax in diff --git a/src/lib_crypto_dal/cryptobox.mli b/src/lib_crypto_dal/cryptobox.mli index f269a3d9d72db636862e5e4eb6ca1ace5dfea031..67fe6e84be711d468d55e9b3be9f7cf5543e603a 100644 --- a/src/lib_crypto_dal/cryptobox.mli +++ b/src/lib_crypto_dal/cryptobox.mli @@ -63,7 +63,7 @@ open Cryptobox_intf (** Initial values for the parameters of the DAL cryptographic primitives. It used to build a value of type [t]. *) -type parameters = { +type parameters = Dal_config.parameters = { redundancy_factor : int; page_size : int; slot_size : int; @@ -117,7 +117,6 @@ type error += Invalid_precomputation_hash of (string, string) error_container module Verifier : VERIFIER with type t = t - and type parameters = parameters and type commitment = commitment and type commitment_proof = commitment_proof and type page_proof = page_proof @@ -126,7 +125,7 @@ module Verifier : include VERIFIER with type t := t - and type parameters := parameters + and type parameters := Dal_config.parameters and type commitment := commitment and type commitment_proof := commitment_proof and type page_proof := page_proof @@ -517,23 +516,13 @@ end (** node parameters for the DAL. *) module Config : sig - type t = { + type t = Dal_config.t = { activated : bool; - (** [true] if the DAL is activated. This may have - an impact on the loading time of the node. *) use_mock_srs_for_testing : parameters option; - (** If [None], the srs is read from the srs files. - This is the value expected for production. For testing - purposes, we may want to compute the srs instead but this is - not secure. In this case, the size of a slot, page, the - erasure code redundancy factor and number of shards must be - specified. *) } val encoding : t Data_encoding.t - (** The default configuration is - [{activated = false; use_mock_srs_for_testing = None}]. *) val default : t (** [init_dal find_trusted_setup_files ?(srs_size_log2=21) config] initializes the diff --git a/src/lib_crypto_dal/cryptobox_intf.ml b/src/lib_crypto_dal/cryptobox_intf.ml index 5438c9934caafa1f709f9e40a47a50a73f769991..52014b8eab0e465ce091fa954fa827deafa50c7f 100644 --- a/src/lib_crypto_dal/cryptobox_intf.ml +++ b/src/lib_crypto_dal/cryptobox_intf.ml @@ -67,7 +67,7 @@ module type VERIFIER = sig type t (** Parameters to build a value of type [t] *) - type parameters = { + type parameters = Dal_config.parameters = { redundancy_factor : int; page_size : int; slot_size : int; diff --git a/src/lib_crypto_dal/dal_config/dal_config.ml b/src/lib_crypto_dal/dal_config/dal_config.ml new file mode 100644 index 0000000000000000000000000000000000000000..53c058bc73c1004259f6c5afda5bb2f84d0ec927 --- /dev/null +++ b/src/lib_crypto_dal/dal_config/dal_config.ml @@ -0,0 +1,62 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2023 Nomadic Labs *) +(* Copyright (c) 2023 Marigold *) +(* *) +(* 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 parameters = { + redundancy_factor : int; + page_size : int; + slot_size : int; + number_of_shards : int; +} + +let parameters_encoding = + let open Data_encoding in + conv + (fun {redundancy_factor; page_size; slot_size; number_of_shards} -> + (redundancy_factor, page_size, slot_size, number_of_shards)) + (fun (redundancy_factor, page_size, slot_size, number_of_shards) -> + {redundancy_factor; page_size; slot_size; number_of_shards}) + (obj4 + (req "redundancy_factor" uint8) + (req "page_size" uint16) + (req "slot_size" int31) + (req "number_of_shards" uint16)) + [@@coverage off] + +type t = {activated : bool; use_mock_srs_for_testing : parameters option} + +let encoding : t Data_encoding.t = + let open Data_encoding in + conv + (fun {activated; use_mock_srs_for_testing} -> + (activated, use_mock_srs_for_testing)) + (fun (activated, use_mock_srs_for_testing) -> + {activated; use_mock_srs_for_testing}) + (obj2 + (req "activated" bool) + (req "use_mock_srs_for_testing" (option parameters_encoding))) + [@@coverage off] + +let default = {activated = false; use_mock_srs_for_testing = None} diff --git a/src/lib_crypto_dal/dal_config/dal_config.mli b/src/lib_crypto_dal/dal_config/dal_config.mli new file mode 100644 index 0000000000000000000000000000000000000000..a4bee6037e031f5f2eafe2d920342df74cd4dbfc --- /dev/null +++ b/src/lib_crypto_dal/dal_config/dal_config.mli @@ -0,0 +1,56 @@ +(*****************************************************************************) +(* *) +(* Open Source License *) +(* Copyright (c) 2023 Nomadic Labs *) +(* Copyright (c) 2023 Marigold *) +(* *) +(* 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. *) +(* *) +(*****************************************************************************) + +(** node parameters for the DAL. *) + +(* Parameters of the DAL cryptographic primitives. *) +type parameters = { + redundancy_factor : int; + page_size : int; + slot_size : int; + number_of_shards : int; +} + +val parameters_encoding : parameters Data_encoding.t + +type t = { + activated : bool; + (** [true] if the DAL is activated. This may have + an impact on the loading time of the node. *) + use_mock_srs_for_testing : parameters option; + (** If [None], the srs is read from the srs files. + This is the value expected for production. For testing + purposes, we may want to compute the srs instead but this is + not secure. In this case, the size of a slot, page, the + erasure code redundancy factor and number of shards must be + specified. *) +} + +val encoding : t Data_encoding.t + +(** The default configuration is + [{activated = false; use_mock_srs_for_testing = None}]. *) +val default : t diff --git a/src/lib_crypto_dal/dal_config/dune b/src/lib_crypto_dal/dal_config/dune new file mode 100644 index 0000000000000000000000000000000000000000..49e257187bb87ef929676adf4bb6605fdf9ab212 --- /dev/null +++ b/src/lib_crypto_dal/dal_config/dune @@ -0,0 +1,13 @@ +; This file was automatically generated, do not edit. +; Edit file manifest/main.ml instead. + +(library + (name tezos_crypto_dal_octez_dal_config) + (public_name tezos-crypto-dal.octez-dal-config) + (instrumentation (backend bisect_ppx)) + (libraries + data-encoding) + (js_of_ocaml) + (flags + (:standard) + -open Data_encoding)) diff --git a/src/lib_crypto_dal/dune b/src/lib_crypto_dal/dune index ca02086f8cd27d1ee565d542dda2898632408487..7ae166d17896089ed96ec3cdd3d480b851187c0e 100644 --- a/src/lib_crypto_dal/dune +++ b/src/lib_crypto_dal/dune @@ -9,6 +9,7 @@ tezos-stdlib tezos-error-monad data-encoding + tezos-crypto-dal.octez-dal-config tezos-crypto octez-bls12-381-polynomial lwt.unix) @@ -16,4 +17,5 @@ (:standard) -open Tezos_stdlib -open Tezos_error_monad - -open Data_encoding)) + -open Data_encoding + -open Tezos_crypto_dal_octez_dal_config)) diff --git a/src/lib_crypto_dal/test/dune b/src/lib_crypto_dal/test/dune index 7b464a11c4590310f7f93c9230880dea8ed35358..33fb88622e4496eab9c105595043125772e5f6df 100644 --- a/src/lib_crypto_dal/test/dune +++ b/src/lib_crypto_dal/test/dune @@ -8,6 +8,7 @@ tezt.core tezos-stdlib tezos-crypto-dal + tezos-crypto-dal.octez-dal-config tezos-error-monad data-encoding octez-alcotezt @@ -21,6 +22,7 @@ -open Tezt_core.Base -open Tezos_stdlib -open Tezos_crypto_dal + -open Tezos_crypto_dal_octez_dal_config -open Tezos_error_monad -open Data_encoding -open Octez_alcotezt) diff --git a/src/lib_node_config/config_file.ml b/src/lib_node_config/config_file.ml index 8478bbb3c51a7421895d3a7b6a487d958fe99331..04160b0db59eea667cafe9c809d8ba9426496162 100644 --- a/src/lib_node_config/config_file.ml +++ b/src/lib_node_config/config_file.ml @@ -53,12 +53,14 @@ type blockchain_network = { user_activated_upgrades : User_activated.upgrades; user_activated_protocol_overrides : User_activated.protocol_overrides; default_bootstrap_peers : string list; + dal_config : Tezos_crypto_dal.Cryptobox.Config.t; } let make_blockchain_network ~alias ~chain_name ?old_chain_name ?incompatible_chain_name ~sandboxed_chain_name ?(user_activated_upgrades = []) ?(user_activated_protocol_overrides = []) - ?(default_bootstrap_peers = []) ?genesis_parameters genesis = + ?(default_bootstrap_peers = []) ?genesis_parameters + ?(dal_config = Tezos_crypto_dal.Cryptobox.Config.default) genesis = let of_string = Distributed_db_version.Name.of_string in { alias = Some alias; @@ -78,6 +80,7 @@ let make_blockchain_network ~alias ~chain_name ?old_chain_name (Protocol_hash.of_b58check_exn a, Protocol_hash.of_b58check_exn b)) user_activated_protocol_overrides; default_bootstrap_peers; + dal_config; } (* The script in scripts/user_activated_upgrade.sh patches the following lines @@ -240,6 +243,7 @@ let blockchain_network_encoding : blockchain_network Data_encoding.t = user_activated_upgrades; user_activated_protocol_overrides; default_bootstrap_peers; + dal_config; } -> ( genesis, genesis_parameters, @@ -249,7 +253,8 @@ let blockchain_network_encoding : blockchain_network Data_encoding.t = sandboxed_chain_name, user_activated_upgrades, user_activated_protocol_overrides, - default_bootstrap_peers )) + default_bootstrap_peers, + dal_config )) (fun ( genesis, genesis_parameters, chain_name, @@ -258,7 +263,8 @@ let blockchain_network_encoding : blockchain_network Data_encoding.t = sandboxed_chain_name, user_activated_upgrades, user_activated_protocol_overrides, - default_bootstrap_peers ) -> + default_bootstrap_peers, + dal_config ) -> { alias = None; genesis; @@ -270,9 +276,10 @@ let blockchain_network_encoding : blockchain_network Data_encoding.t = user_activated_upgrades; user_activated_protocol_overrides; default_bootstrap_peers; + dal_config; }) (let chain = Distributed_db_version.Name.encoding in - obj9 + obj10 (req "genesis" Genesis.encoding) (opt "genesis_parameters" Genesis.Parameters.encoding) (req "chain_name" chain) @@ -289,7 +296,16 @@ let blockchain_network_encoding : blockchain_network Data_encoding.t = ~description: "List of hosts to use if p2p.bootstrap_peers is unspecified." (list string) - [])) + []) + (dft + "dal_config" + ~description: + "USE FOR TESTING PURPOSE ONLY. Configuration for the \ + data-availibility layer" + Tezos_crypto_dal.Cryptobox.Config.encoding + (* We use default config unless explicitly overridden via the config file. + Note that such override is expected to only be used in test networks. *) + Tezos_crypto_dal.Cryptobox.Config.default)) let builtin_blockchain_networks_with_tags = [ @@ -350,7 +366,6 @@ type t = { shell : Shell_limits.limits; blockchain_network : blockchain_network; metrics_addr : string list; - dal : Tezos_crypto_dal.Cryptobox.Config.t; } and p2p = { @@ -416,7 +431,6 @@ let default_config = blockchain_network = blockchain_network_mainnet; disable_config_validation = default_disable_config_validation; metrics_addr = []; - dal = Tezos_crypto_dal.Cryptobox.Config.default; } let p2p = @@ -653,7 +667,6 @@ let encoding = shell; blockchain_network; metrics_addr; - dal; } -> ( data_dir, disable_config_validation, @@ -663,8 +676,7 @@ let encoding = internal_events, shell, blockchain_network, - metrics_addr, - dal )) + metrics_addr )) (fun ( data_dir, disable_config_validation, rpc, @@ -673,8 +685,7 @@ let encoding = internal_events, shell, blockchain_network, - metrics_addr, - dal ) -> + metrics_addr ) -> { disable_config_validation; data_dir; @@ -685,9 +696,8 @@ let encoding = shell; blockchain_network; metrics_addr; - dal; }) - (obj10 + (obj9 (dft "data-dir" ~description:"Location of the data dir on disk." @@ -732,14 +742,7 @@ let encoding = "metrics_addr" ~description:"Configuration of the Prometheus metrics endpoint" (list string) - default_config.metrics_addr) - (dft - "dal" - ~description: - "USE FOR TESTING PURPOSE ONLY. Configuration for the \ - data-availibility layer" - Tezos_crypto_dal.Cryptobox.Config.encoding - Tezos_crypto_dal.Cryptobox.Config.default)) + default_config.metrics_addr)) (* Abstract version of [Json_encoding.Cannot_destruct]: first argument is the string representation of the path, second argument is the error message diff --git a/src/lib_node_config/config_file.mli b/src/lib_node_config/config_file.mli index 1be757717eb61db0d32a0dfc1e03af09e64239c5..861b3b1f078b86b09475b25ad7d664cc469ca976 100644 --- a/src/lib_node_config/config_file.mli +++ b/src/lib_node_config/config_file.mli @@ -38,6 +38,7 @@ type blockchain_network = { user_activated_upgrades : User_activated.upgrades; user_activated_protocol_overrides : User_activated.protocol_overrides; default_bootstrap_peers : string list; + dal_config : Tezos_crypto_dal.Cryptobox.Config.t; } (** List of built-in networks with their alias. *) @@ -56,7 +57,6 @@ type t = { shell : Shell_limits.limits; blockchain_network : blockchain_network; metrics_addr : string list; - dal : Tezos_crypto_dal.Cryptobox.Config.t; } and p2p = { diff --git a/src/lib_rpc_http/RPC_server.ml b/src/lib_rpc_http/RPC_server.ml index 8ae370121b160bf0285e7bc5f8550bc7a1490b1e..ebf9829f41f2e5724ee92678f0b7760a524da914 100644 --- a/src/lib_rpc_http/RPC_server.ml +++ b/src/lib_rpc_http/RPC_server.ml @@ -79,6 +79,7 @@ module Acl = struct "GET /chains/*/mempool/pending_operations"; "GET /config/network/user_activated_protocol_overrides"; "GET /config/network/user_activated_upgrades"; + "GET /config/network/dal"; "GET /describe/**"; "GET /errors"; "GET /monitor/**"; diff --git a/src/lib_shell/config_directory.ml b/src/lib_shell/config_directory.ml index 36738fc4d224ec44b990a908b048bf7a90950b4a..8111aa5ea903f70b219f173fddfae3f39b3f7590 100644 --- a/src/lib_shell/config_directory.ml +++ b/src/lib_shell/config_directory.ml @@ -24,7 +24,7 @@ (*****************************************************************************) let build_rpc_directory ~user_activated_upgrades - ~user_activated_protocol_overrides ~mainchain_validator store = + ~user_activated_protocol_overrides ~dal_config ~mainchain_validator store = let open Lwt_result_syntax in let register endpoint f directory = Tezos_rpc.Directory.register directory endpoint f @@ -35,6 +35,8 @@ let build_rpc_directory ~user_activated_upgrades |> register Config_services.Network.user_activated_protocol_overrides (fun () () () -> return user_activated_protocol_overrides) + |> register Config_services.Network.dal_config (fun () () () -> + return dal_config) |> register Config_services.history_mode (fun () () () -> let chain_store = Store.main_chain_store store in return (Store.Chain.history_mode chain_store)) diff --git a/src/lib_shell/config_directory.mli b/src/lib_shell/config_directory.mli index fcd7f58241be623787379bf629ef2875d48dbb51..ec9a1496681297e492b4981fe009d14aba250d91 100644 --- a/src/lib_shell/config_directory.mli +++ b/src/lib_shell/config_directory.mli @@ -26,6 +26,7 @@ val build_rpc_directory : user_activated_upgrades:User_activated.upgrades -> user_activated_protocol_overrides:User_activated.protocol_overrides -> + dal_config:Dal_config.t -> mainchain_validator:Chain_validator.t -> Store.t -> unit Tezos_rpc.Directory.t diff --git a/src/lib_shell/dune b/src/lib_shell/dune index bb84cee488dfbfc88f3d55b75f8e8663235563eb..e5d54e331de60908358283c75ffcfce5b7968c0c 100644 --- a/src/lib_shell/dune +++ b/src/lib_shell/dune @@ -27,6 +27,7 @@ tezos-workers tezos-validation tezos-version + tezos-crypto-dal.octez-dal-config lwt-exit) (inline_tests (flags -verbose) (modes native)) (preprocess (pps ppx_expect)) @@ -49,6 +50,7 @@ -open Tezos_requester -open Tezos_workers -open Tezos_validation - -open Tezos_version)) + -open Tezos_version + -open Tezos_crypto_dal_octez_dal_config)) (documentation (package tezos-shell)) diff --git a/src/lib_shell/node.ml b/src/lib_shell/node.ml index 58846d4b9b3c0f992c4aa8b5b143ae04cddf6d8e..35543c6c0b0a7c15a682b3640b7494c4864d3819 100644 --- a/src/lib_shell/node.ml +++ b/src/lib_shell/node.ml @@ -68,6 +68,7 @@ type t = { p2p : Distributed_db.p2p; user_activated_upgrades : User_activated.upgrades; user_activated_protocol_overrides : User_activated.protocol_overrides; + dal_config : Tezos_crypto_dal.Cryptobox.Config.t; operation_metadata_size_limit : Shell_limits.operation_metadata_size_limit; (* For P2P RPCs *) shutdown : unit -> unit Lwt.t; @@ -136,7 +137,7 @@ type config = { target : (Block_hash.t * int32) option; disable_mempool : bool; enable_testchain : bool; - dal : Tezos_crypto_dal.Cryptobox.Config.t; + dal_config : Tezos_crypto_dal.Cryptobox.Config.t; } (* These protocols are linked with the node and @@ -216,7 +217,7 @@ let create ?(sandboxed = false) ?sandbox_parameters ~singleprocess ~version target; disable_mempool; enable_testchain; - dal; + dal_config; } peer_validator_limits block_validator_limits prevalidator_limits chain_validator_limits history_mode = let open Lwt_result_syntax in @@ -270,7 +271,7 @@ let create ?(sandboxed = false) ?sandbox_parameters ~singleprocess ~version protocol_root; process_path = Sys.executable_name; sandbox_parameters; - dal_config = dal; + dal_config; internal_events; }) in @@ -338,6 +339,7 @@ let create ?(sandboxed = false) ?sandbox_parameters ~singleprocess ~version p2p; user_activated_upgrades; user_activated_protocol_overrides; + dal_config; operation_metadata_size_limit; shutdown; } @@ -368,6 +370,7 @@ let build_rpc_directory ~version ~commit_info node = (Config_directory.build_rpc_directory ~user_activated_upgrades:node.user_activated_upgrades ~user_activated_protocol_overrides:node.user_activated_protocol_overrides + ~dal_config:node.dal_config ~mainchain_validator:node.mainchain_validator node.store) ; merge (Version_directory.rpc_directory ~version ~commit_info node.p2p) ; diff --git a/src/lib_shell/node.mli b/src/lib_shell/node.mli index cb2489d880aef841c2afa658755ce7dd34e70985..9f154100514b2f68d7cb1544f62b7369ce0fb021 100644 --- a/src/lib_shell/node.mli +++ b/src/lib_shell/node.mli @@ -48,7 +48,7 @@ type config = { (** If [true], all non-empty mempools will be ignored. *) enable_testchain : bool; (** If [false], testchain related messages will be ignored. *) - dal : Tezos_crypto_dal.Cryptobox.Config.t; + dal_config : Tezos_crypto_dal.Cryptobox.Config.t; } val create : diff --git a/src/lib_shell/test/test_node.ml b/src/lib_shell/test/test_node.ml index f1cfbbb817ee1a943f8ea781dec1fce776652d78..9c2f4aa8f86761d46ee4b13bbb50fe65bb1cb91f 100644 --- a/src/lib_shell/test/test_node.ml +++ b/src/lib_shell/test/test_node.ml @@ -59,7 +59,7 @@ let init_config (* (f : 'a -> unit -> unit Lwt.t) *) f test_dir switch () : target = None; disable_mempool = false; enable_testchain = true; - dal = Tezos_crypto_dal.Cryptobox.Config.default; + dal_config = Tezos_crypto_dal.Cryptobox.Config.default; } in f sandbox_parameters config switch () diff --git a/src/lib_shell_services/config_services.ml b/src/lib_shell_services/config_services.ml index 12d3f899f2cd4f06db451e20e0e671a9080392cb..c6851e3004548b23d310eaca4a68a75764bc4186 100644 --- a/src/lib_shell_services/config_services.ml +++ b/src/lib_shell_services/config_services.ml @@ -39,6 +39,13 @@ module Network = struct ~query:Tezos_rpc.Query.empty ~output:User_activated.protocol_overrides_encoding Tezos_rpc.Path.(path / "network" / "user_activated_protocol_overrides") + + let dal_config = + Tezos_rpc.Service.get_service + ~description:"Configuration for the DAL" + ~query:Tezos_rpc.Query.empty + ~output:Dal_config.encoding + Tezos_rpc.Path.(path / "network" / "dal") end let history_mode_encoding = @@ -63,3 +70,6 @@ end let user_activated_upgrades cctxt = Tezos_rpc.Context.make_call Network.user_activated_upgrades cctxt () () () + +let dal_config cctxt = + Tezos_rpc.Context.make_call Network.dal_config cctxt () () () diff --git a/src/lib_shell_services/config_services.mli b/src/lib_shell_services/config_services.mli index cb5f69f1cd9f72c740ac709265a56dbfb9af4cc4..573bf3c3de5c394e94638623cd59c29c648b807a 100644 --- a/src/lib_shell_services/config_services.mli +++ b/src/lib_shell_services/config_services.mli @@ -41,6 +41,18 @@ module Network : sig unit, User_activated.protocol_overrides ) Tezos_rpc.Service.t + + (* TODO: https://gitlab.com/tezos/tezos/-/issues/5926 + + Consider exposing the whole network record via `config/network` + instead of exposing each field separately. Note that the + [Config_file.blockchain_network] lives in [lib_node_config], which isn't js_combatible, + so we can't reference it in [lib_shell_services], which is js_compatible. + Hence to do this we would need to extract [Config_file.blockchain_network] into a + separate directory, as done for [lib_dal_config]. *) + + val dal_config : + ([`GET], unit, unit, unit, unit, Dal_config.t) Tezos_rpc.Service.t end val history_mode : @@ -66,3 +78,5 @@ end val user_activated_upgrades : #Tezos_rpc.Context.simple -> User_activated.upgrades tzresult Lwt.t + +val dal_config : #Tezos_rpc.Context.simple -> Dal_config.t tzresult Lwt.t diff --git a/src/lib_shell_services/dune b/src/lib_shell_services/dune index 2c1f1eca35de0197503c8de4312651bbe970dc90..8fd6fe09da753de428549742c0d1e19f46ec5dee 100644 --- a/src/lib_shell_services/dune +++ b/src/lib_shell_services/dune @@ -13,7 +13,8 @@ tezos-p2p-services tezos-version tezos-context.sigs - tezos-context.merkle_proof_encoding) + tezos-context.merkle_proof_encoding + tezos-crypto-dal.octez-dal-config) (js_of_ocaml) (library_flags (:standard -linkall)) (flags @@ -21,4 +22,5 @@ -open Tezos_base.TzPervasives -open Tezos_base -open Tezos_p2p_services - -open Tezos_version)) + -open Tezos_version + -open Tezos_crypto_dal_octez_dal_config)) diff --git a/tezt/lib_tezos/dal_node.ml b/tezt/lib_tezos/dal_node.ml index ac9281389e5c8bf64cbc4b02005e6527df729f3d..59c53ed8663c453c3202614ff89da8e33badb824 100644 --- a/tezt/lib_tezos/dal_node.ml +++ b/tezt/lib_tezos/dal_node.ml @@ -78,8 +78,7 @@ let data_dir dal_node = dal_node.persistent_state.data_dir let spawn_command dal_node = Process.spawn ~name:dal_node.name ~color:dal_node.color dal_node.path -let spawn_config_init ?(use_unsafe_srs = true) ?(expected_pow = 0.) - ?(peers = []) dal_node = +let spawn_config_init ?(expected_pow = 0.) ?(peers = []) dal_node = spawn_command dal_node @@ List.filter_map Fun.id @@ -92,7 +91,6 @@ let spawn_config_init ?(use_unsafe_srs = true) ?(expected_pow = 0.) Some (Format.asprintf "%s:%d" (rpc_host dal_node) (rpc_port dal_node)); Some "--net-addr"; Some (listen_addr dal_node); - (if use_unsafe_srs then Some "--use-unsafe-srs-for-tests" else None); Some "--expected-pow"; Some (string_of_float expected_pow); Some "--peers"; @@ -109,10 +107,8 @@ module Config_file = struct let update dal_node update = read dal_node |> update |> write dal_node end -let init_config ?use_unsafe_srs ?expected_pow ?peers dal_node = - let process = - spawn_config_init ?use_unsafe_srs ?expected_pow ?peers dal_node - in +let init_config ?expected_pow ?peers dal_node = + let process = spawn_config_init ?expected_pow ?peers dal_node in Process.check process let read_identity dal_node = diff --git a/tezt/lib_tezos/dal_node.mli b/tezt/lib_tezos/dal_node.mli index 36d2251bed3af751ad8bfb3f370e89126170d66d..e7cbbe3321de2ae6205191f6742f1111f1e50b8e 100644 --- a/tezt/lib_tezos/dal_node.mli +++ b/tezt/lib_tezos/dal_node.mli @@ -94,18 +94,9 @@ val wait : t -> Unix.process_status Lwt.t (** Run [octez-dal-node config init]. - If [use_unsafe_srs] is [true], the dal node runs with unsafe computed SRS - allowing tests to run faster, without the need of large file. Default is - [true] in tezt. - [expected_pow] allows to change the PoW difficulty. Default value is 0. *) -val init_config : - ?use_unsafe_srs:bool -> - ?expected_pow:float -> - ?peers:string list -> - t -> - unit Lwt.t +val init_config : ?expected_pow:float -> ?peers:string list -> t -> unit Lwt.t module Config_file : sig (** DAL node configuration files. *) @@ -120,7 +111,7 @@ module Config_file : sig running, it needs to be restarted manually. Example: - [Node.Config_file.update node (JSON.put ("use_unsafe_srs", "true"))] *) + [Node.Config_file.update node (JSON.put ("expected_pow", "0.0"))] *) val update : t -> (JSON.t -> JSON.t) -> unit end diff --git a/tezt/lib_tezos/node.ml b/tezt/lib_tezos/node.ml index c12bd5183c23c4a7f5a2b7476bc96c1be2a13bbf..4ffa4e501cb27464d5cba8dba01abca58c988ea5 100644 --- a/tezt/lib_tezos/node.ml +++ b/tezt/lib_tezos/node.ml @@ -414,6 +414,38 @@ module Config_file = struct in JSON.put ("network", network) old_config + let set_sandbox_network_with_dal_config + (dal_config : Tezos_crypto_dal.Cryptobox.Config.t) old_config = + let dal_config_json = + let parameters = + match dal_config.use_mock_srs_for_testing with + | Some parameters -> + `O + [ + ("slot_size", `Float (float_of_int parameters.slot_size)); + ("page_size", `Float (float_of_int parameters.page_size)); + ( "redundancy_factor", + `Float (float_of_int parameters.redundancy_factor) ); + ( "number_of_shards", + `Float (float_of_int parameters.number_of_shards) ); + ] + | None -> `Null + in + JSON.annotate + ~origin:"dal_initialisation" + (`O + [ + ("activated", `Bool dal_config.activated); + ("use_mock_srs_for_testing", parameters); + ]) + in + let network = + sandbox_network_config + |> JSON.annotate ~origin:"set_sandbox_network_with_dal_config" + |> JSON.put ("dal_config", dal_config_json) + in + JSON.put ("network", network) old_config + let set_ghostnet_sandbox_network ?user_activated_upgrades () old_config = let may_patch_user_activated_upgrades = match user_activated_upgrades with diff --git a/tezt/lib_tezos/node.mli b/tezt/lib_tezos/node.mli index 5f9ae2e0f2d408b309d3ecaddadee9eb90cb3efa..18f5af8dcfa3680332d02b0183f0bbd3b581a202 100644 --- a/tezt/lib_tezos/node.mli +++ b/tezt/lib_tezos/node.mli @@ -307,6 +307,10 @@ module Config_file : sig val set_sandbox_network_with_user_activated_overrides : (string * string) list -> JSON.t -> JSON.t + (** Set the network config to a sandbox with the given dal config. *) + val set_sandbox_network_with_dal_config : + Tezos_crypto_dal.Cryptobox.Config.t -> JSON.t -> JSON.t + (** Set the prevalidator configuration in the given configuration. *) val set_prevalidator : ?operations_request_timeout:float -> diff --git a/tezt/lib_tezos/rollup.ml b/tezt/lib_tezos/rollup.ml index c58992cf3a888bb4502aea2de8499632c598e420..247d197728f66148542bcec60a5ac44aedd33054 100644 --- a/tezt/lib_tezos/rollup.ml +++ b/tezt/lib_tezos/rollup.ml @@ -68,29 +68,6 @@ module Dal = struct attestation_threshold; blocks_per_epoch; } - - let cryptobox_config_to_json (t : Cryptobox.Config.t) = - let parameters = - match t.use_mock_srs_for_testing with - | Some parameters -> - `O - [ - ("slot_size", `Float (float_of_int parameters.slot_size)); - ("page_size", `Float (float_of_int parameters.page_size)); - ( "redundancy_factor", - `Float (float_of_int parameters.redundancy_factor) ); - ( "number_of_shards", - `Float (float_of_int parameters.number_of_shards) ); - ] - | None -> `Null - in - JSON.annotate - ~origin:"dal_initialisation" - (`O - [ - ("activated", `Bool t.activated); - ("use_mock_srs_for_testing", parameters); - ]) end let endpoint dal_node = diff --git a/tezt/lib_tezos/rollup.mli b/tezt/lib_tezos/rollup.mli index 319f7285a92e058bb80c192b74c5125dcf38de8d..d53bfd189cd400bbb3aa405b0e8e107e74a4d522 100644 --- a/tezt/lib_tezos/rollup.mli +++ b/tezt/lib_tezos/rollup.mli @@ -40,10 +40,6 @@ module Dal : sig val parameter_file : Protocol.t -> string Lwt.t val from_client : Client.t -> t Lwt.t - - (** [cryptobox_config_to_json config] returns the Json encoding of - the record {!type:Cryptobox.Config.t}. *) - val cryptobox_config_to_json : Cryptobox.Config.t -> JSON.t end val endpoint : Dal_node.t -> string diff --git a/tezt/tests/dal.ml b/tezt/tests/dal.ml index 951cd78586e0f513303545f47c31355942f78d38..2cb51467d59ff5a13708ec603c84003327ef3fbb 100644 --- a/tezt/tests/dal.ml +++ b/tezt/tests/dal.ml @@ -81,16 +81,12 @@ let setup_node ?(custom_constants = None) ?(additional_bootstrap_accounts = 5) let node = Node.create nodes_args in let* () = Node.config_init node [] in let* dal_parameters = Rollup.Dal.Parameters.from_client client in - Node.Config_file.update node (fun json -> - let config : Cryptobox.Config.t = - { - activated = true; - use_mock_srs_for_testing = Some dal_parameters.cryptobox; - } - in - JSON.put - ("dal", Rollup.Dal.Parameters.cryptobox_config_to_json config) - json) ; + let config : Cryptobox.Config.t = + {activated = true; use_mock_srs_for_testing = Some dal_parameters.cryptobox} + in + Node.Config_file.update + node + (Node.Config_file.set_sandbox_network_with_dal_config config) ; let* () = Node.run node ~event_sections_levels node_arguments in let* () = Node.wait_for_ready node in let* client = Client.init ~endpoint:(Node node) () in