123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166(*****************************************************************************)(* *)(* Open Source License *)(* Copyright (c) 2023 Functori, <contact@functori.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. *)(* *)(*****************************************************************************)(** Protocol agnostic representation for protocol constants. *)typedal_constants={feature_enable:bool;attestation_lag:int;number_of_slots:int;cryptobox_parameters:Tezos_crypto_dal.Cryptobox.parameters;}typereveal_activation_level={blake2B:int32;metadata:int32;dal_page:int32;dal_parameters:int32;dal_attested_slots_validity_lag:int32;}typesc_rollup_constants={challenge_window_in_blocks:int;commitment_period_in_blocks:int;reveal_activation_level:reveal_activation_leveloption;max_number_of_stored_cemented_commitments:int;}typeprotocol_constants={minimal_block_delay:int64;delay_increment_per_round:int64;sc_rollup:sc_rollup_constants;dal:dal_constants;}letreveal_activation_level_encoding=letopenData_encodinginconv(fun{blake2B;metadata;dal_page;dal_parameters;dal_attested_slots_validity_lag;}->(blake2B,metadata,dal_page,dal_parameters,dal_attested_slots_validity_lag))(fun(blake2B,metadata,dal_page,dal_parameters,dal_attested_slots_validity_lag)->{blake2B;metadata;dal_page;dal_parameters;dal_attested_slots_validity_lag;})@@obj5(req"blake2B"int32)(req"metadata"int32)(req"dal_page"int32)(req"dal_parameters"int32)(req"dal_attested_slots_validity_lag"int32)letencoding=letopenData_encodinginconv(fun{minimal_block_delay;delay_increment_per_round;sc_rollup={challenge_window_in_blocks;commitment_period_in_blocks;reveal_activation_level;max_number_of_stored_cemented_commitments;};dal={feature_enable;attestation_lag;number_of_slots;cryptobox_parameters;};}->(minimal_block_delay,delay_increment_per_round,(challenge_window_in_blocks,commitment_period_in_blocks,reveal_activation_level,max_number_of_stored_cemented_commitments),(feature_enable,attestation_lag,number_of_slots,cryptobox_parameters)))(fun(minimal_block_delay,delay_increment_per_round,(challenge_window_in_blocks,commitment_period_in_blocks,reveal_activation_level,max_number_of_stored_cemented_commitments),(feature_enable,attestation_lag,number_of_slots,cryptobox_parameters))->{minimal_block_delay;delay_increment_per_round;sc_rollup={challenge_window_in_blocks;commitment_period_in_blocks;reveal_activation_level;max_number_of_stored_cemented_commitments;};dal={feature_enable;attestation_lag;number_of_slots;cryptobox_parameters;};})@@obj4(req"minimal_block_delay"int64)(req"delay_increment_per_round"int64)(req"sc_rollup"(obj4(req"challenge_window_in_blocks"int31)(req"commitment_period_in_blocks"int31)(opt"reveal_activation_level"reveal_activation_level_encoding)(req"max_number_of_stored_cemented_commitments"int31)))(req"dal"(obj4(req"feature_enable"bool)(req"attestation_lag"int31)(req"number_of_slots"int31)(req"cryptobox_parameters"Tezos_crypto_dal.Cryptobox.parameters_encoding)))