diff --git a/src/proto_alpha/lib_parameters/default_parameters.ml b/src/proto_alpha/lib_parameters/default_parameters.ml index 1fd837f2dab9750baac7cd271cf7bdecd5ff2194..8391e4d69b5eea66ee872becc211aa3a94ad0cdc 100644 --- a/src/proto_alpha/lib_parameters/default_parameters.ml +++ b/src/proto_alpha/lib_parameters/default_parameters.ml @@ -475,3 +475,7 @@ let json_of_parameters ?chain_id parameters = Data_encoding.Json.construct Protocol_parameters_overrides.encoding Protocol_parameters_overrides.{parameters; chain_id} + +module Internal_for_tests = struct + let make_sc_rollup_parameter = make_sc_rollup_parameter +end diff --git a/src/proto_alpha/lib_parameters/default_parameters.mli b/src/proto_alpha/lib_parameters/default_parameters.mli index 86be2852e5ec84ca9233498df3fd8d3e822a68a2..bc28be2d209e73f1e2be9f36ba8e404b85875cc5 100644 --- a/src/proto_alpha/lib_parameters/default_parameters.mli +++ b/src/proto_alpha/lib_parameters/default_parameters.mli @@ -52,3 +52,8 @@ val parameters_of_constants : val json_of_parameters : ?chain_id:Chain_id.t -> Parameters.t -> Data_encoding.json + +module Internal_for_tests : sig + val make_sc_rollup_parameter : + dal_activation_level:Raw_level.t -> int -> Constants.Parametric.sc_rollup +end diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index e5e9609a1d7ecaa30303beea4bbb8d7e144d070f..4d4672b7d252bdfceb9e75daccaa7a2e08c99a5b 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -929,6 +929,12 @@ module Constants : sig } val encoding : t Data_encoding.t + + val update_sc_rollup_parameter : block_time:int -> sc_rollup -> sc_rollup + + module Internal_for_tests : sig + val sc_rollup_encoding : sc_rollup Data_encoding.t + end end module Generated : sig diff --git a/src/proto_alpha/lib_protocol/constants_parametric_repr.ml b/src/proto_alpha/lib_protocol/constants_parametric_repr.ml index d2765ea3a0e57edf22be4e61937e6f2bb8fefcbb..87b83b6a73d51e3fb69cd06b49818215940e2aae 100644 --- a/src/proto_alpha/lib_protocol/constants_parametric_repr.ml +++ b/src/proto_alpha/lib_protocol/constants_parametric_repr.ml @@ -675,3 +675,20 @@ let encoding = (merge_objs adaptive_issuance_encoding (obj1 (req "direct_ticket_spending_enable" bool)))))))))) + +let update_sc_rollup_parameter ~block_time c = + let seconds_in_a_day = 60 * 60 * 24 in + let seconds_in_a_week = seconds_in_a_day * 7 in + { + c with + challenge_window_in_blocks = seconds_in_a_week * 2 / block_time; + (* Same as challenge_window_in_blocks *) + max_active_outbox_levels = Int32.of_int (seconds_in_a_week * 2 / block_time); + commitment_period_in_blocks = 60 * 15 / block_time; + max_lookahead_in_blocks = Int32.of_int (seconds_in_a_day * 30 / block_time); + timeout_period_in_blocks = seconds_in_a_week / block_time; + } + +module Internal_for_tests = struct + let sc_rollup_encoding = sc_rollup_encoding +end diff --git a/src/proto_alpha/lib_protocol/constants_parametric_repr.mli b/src/proto_alpha/lib_protocol/constants_parametric_repr.mli index 5f93956f4291492f69b717f430b481aa8aea6535..bddbfa855d83e10f1439627de824ea2779d5ea60 100644 --- a/src/proto_alpha/lib_protocol/constants_parametric_repr.mli +++ b/src/proto_alpha/lib_protocol/constants_parametric_repr.mli @@ -212,3 +212,9 @@ type t = { } val encoding : t Data_encoding.encoding + +val update_sc_rollup_parameter : block_time:int -> sc_rollup -> sc_rollup + +module Internal_for_tests : sig + val sc_rollup_encoding : sc_rollup Data_encoding.t +end diff --git a/src/proto_alpha/lib_protocol/raw_context.ml b/src/proto_alpha/lib_protocol/raw_context.ml index 6379f8b5204235c7e065c500274267eefc455084..fc3395c759a1660554532eb08fe4cad0da51a63c 100644 --- a/src/proto_alpha/lib_protocol/raw_context.ml +++ b/src/proto_alpha/lib_protocol/raw_context.ml @@ -955,20 +955,9 @@ let update_block_time_related_constants (c : Constants_parametric_repr.t) = let nonce_revelation_threshold = half_more c.nonce_revelation_threshold in let blocks_per_stake_snapshot = half_more c.blocks_per_stake_snapshot in let max_operations_time_to_live = 3 * c.max_operations_time_to_live / 2 in - let seconds_in_a_day = 60 * 60 * 24 in - let seconds_in_a_week = seconds_in_a_day * 7 in let block_time = Int64.to_int (Period_repr.to_seconds minimal_block_delay) in let sc_rollup = - { - c.sc_rollup with - challenge_window_in_blocks = seconds_in_a_week * 2 / block_time; - (* Same as challenge_window_in_blocks *) - max_active_outbox_levels = - Int32.of_int (seconds_in_a_week * 2 / block_time); - commitment_period_in_blocks = 60 * 15 / block_time; - max_lookahead_in_blocks = Int32.of_int (seconds_in_a_day * 30 / block_time); - timeout_period_in_blocks = seconds_in_a_week / block_time; - } + Constants_parametric_repr.update_sc_rollup_parameter c.sc_rollup ~block_time in { c with diff --git a/src/proto_alpha/lib_protocol/test/integration/test_constants.ml b/src/proto_alpha/lib_protocol/test/integration/test_constants.ml index c42f2c762e9ed061b9bf28a442a70ca8ec517590..4020c744c579191242c469d12b76bad3d5267826 100644 --- a/src/proto_alpha/lib_protocol/test/integration/test_constants.ml +++ b/src/proto_alpha/lib_protocol/test/integration/test_constants.ml @@ -34,6 +34,33 @@ open Test_tez +let test_sc_rollup_constants_consistency () = + let open Protocol.Alpha_context in + let to_string c = + Data_encoding.Json.( + to_string ~minify:true + @@ construct Constants.Parametric.Internal_for_tests.sc_rollup_encoding c) + in + (* We do not necessarily need to update this value when the block time + changes. The goal is to witness the consistency of the “symbolic” + computations in [Default_parameters] and [Raw_context].. *) + let block_time = 10 in + let sc_rollup = + Default_parameters.Internal_for_tests.make_sc_rollup_parameter + ~dal_activation_level:Raw_level.root + block_time + in + let sc_rollup' = + Constants.Parametric.update_sc_rollup_parameter sc_rollup ~block_time + in + Assert.equal + ~loc:__LOC__ + (fun s1 s2 -> String.equal (to_string s1) (to_string s2)) + "sc_rollup_parameter update" + (fun fmt sc_rollup -> Format.pp_print_string fmt @@ to_string sc_rollup) + sc_rollup + sc_rollup' + let test_constants_consistency () = let open Default_parameters in List.iter_es @@ -214,6 +241,10 @@ let liquidity_baking_subsidy_param () = let tests = [ + Tztest.tztest + "sc_rollup constants consistency" + `Quick + test_sc_rollup_constants_consistency; Tztest.tztest "constants consistency" `Quick test_constants_consistency; Tztest.tztest "max_operations_ttl" `Quick test_max_operations_ttl; Tztest.tztest