From f04f20bb329c5bf414275b7437a9b0f61c8e920a Mon Sep 17 00:00:00 2001 From: Julien Tesson Date: Wed, 13 Dec 2023 14:58:53 +0100 Subject: [PATCH 1/4] proto/constants_parametric: add blocks_preservation_cycles --- .../lib_parameters/default_parameters.ml | 3 +++ src/proto_alpha/lib_protocol/alpha_context.mli | 3 +++ .../lib_protocol/constants_parametric_repr.ml | 15 +++++++++++---- .../lib_protocol/constants_parametric_repr.mli | 6 +++++- src/proto_alpha/lib_protocol/constants_storage.ml | 4 ++++ .../lib_protocol/constants_storage.mli | 2 ++ src/proto_alpha/lib_protocol/raw_context.ml | 1 + 7 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/proto_alpha/lib_parameters/default_parameters.ml b/src/proto_alpha/lib_parameters/default_parameters.ml index 1812c9ec9eb0..a4526b223f66 100644 --- a/src/proto_alpha/lib_parameters/default_parameters.ml +++ b/src/proto_alpha/lib_parameters/default_parameters.ml @@ -130,6 +130,7 @@ let constants_mainnet = { Constants.Parametric.preserved_cycles = 5; consensus_rights_delay = 5; + blocks_preservation_cycles = 5; blocks_per_cycle = 16384l; blocks_per_commitment = 128l; nonce_revelation_threshold = 512l; @@ -320,6 +321,7 @@ let constants_sandbox = }; issuance_weights; Constants.Parametric.preserved_cycles = 2; + blocks_preservation_cycles = 2; consensus_rights_delay = 2; blocks_per_cycle = 8l; blocks_per_commitment = 4l; @@ -356,6 +358,7 @@ let constants_test = issuance_weights; Constants.Parametric.preserved_cycles = 3; consensus_rights_delay = 3; + blocks_preservation_cycles = 3; blocks_per_cycle = 12l; blocks_per_commitment = 4l; nonce_revelation_threshold = 4l; diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index 7586a2e2e8ad..4804b4d2af18 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -884,6 +884,7 @@ module Constants : sig type t = { preserved_cycles : int; consensus_rights_delay : int; + blocks_preservation_cycles : int; blocks_per_cycle : int32; blocks_per_commitment : int32; nonce_revelation_threshold : int32; @@ -946,6 +947,8 @@ module Constants : sig val consensus_rights_delay : context -> int + val blocks_preservation_cycles : context -> int + val blocks_per_cycle : context -> int32 val blocks_per_commitment : context -> int32 diff --git a/src/proto_alpha/lib_protocol/constants_parametric_repr.ml b/src/proto_alpha/lib_protocol/constants_parametric_repr.ml index 2d9c92042a7c..9ffceb2a91c5 100644 --- a/src/proto_alpha/lib_protocol/constants_parametric_repr.ml +++ b/src/proto_alpha/lib_protocol/constants_parametric_repr.ml @@ -168,6 +168,7 @@ type issuance_weights = { type t = { preserved_cycles : int; consensus_rights_delay : int; + blocks_preservation_cycles : int; blocks_per_cycle : int32; blocks_per_commitment : int32; nonce_revelation_threshold : int32; @@ -483,7 +484,9 @@ let encoding = let open Data_encoding in conv (fun c -> - ( ( (c.preserved_cycles, c.consensus_rights_delay), + ( ( ( c.preserved_cycles, + c.consensus_rights_delay, + c.blocks_preservation_cycles ), ( c.blocks_per_cycle, c.blocks_per_commitment, c.nonce_revelation_threshold, @@ -521,7 +524,9 @@ let encoding = ( (c.sc_rollup, c.zk_rollup), (c.adaptive_issuance, c.direct_ticket_spending_enable) ) ) ) ) ) ) )) - (fun ( ( (preserved_cycles, consensus_rights_delay), + (fun ( ( ( preserved_cycles, + consensus_rights_delay, + blocks_preservation_cycles ), ( blocks_per_cycle, blocks_per_commitment, nonce_revelation_threshold, @@ -562,6 +567,7 @@ let encoding = { preserved_cycles; consensus_rights_delay; + blocks_preservation_cycles; blocks_per_cycle; blocks_per_commitment; nonce_revelation_threshold; @@ -603,9 +609,10 @@ let encoding = }) (merge_objs (merge_objs - (obj2 + (obj3 (req "preserved_cycles" uint8) - (req "consensus_rights_delay" uint8)) + (req "consensus_rights_delay" uint8) + (req "blocks_preservation_cycles" uint8)) (obj9 (req "blocks_per_cycle" int32) (req "blocks_per_commitment" int32) diff --git a/src/proto_alpha/lib_protocol/constants_parametric_repr.mli b/src/proto_alpha/lib_protocol/constants_parametric_repr.mli index c70d98b672bb..bf1c6faa99aa 100644 --- a/src/proto_alpha/lib_protocol/constants_parametric_repr.mli +++ b/src/proto_alpha/lib_protocol/constants_parametric_repr.mli @@ -154,8 +154,12 @@ type issuance_weights = { type t = { preserved_cycles : int; - (* Number of cycles after which computed consensus rights are used to actually participate in the consensus *) + (* Number of cycles after which computed consensus rights are used to actually + participate in the consensus *) consensus_rights_delay : int; + (* Number of past cycles about which the protocol hints the shell that it should + keep them in its history. *) + blocks_preservation_cycles : int; blocks_per_cycle : int32; blocks_per_commitment : int32; nonce_revelation_threshold : int32; diff --git a/src/proto_alpha/lib_protocol/constants_storage.ml b/src/proto_alpha/lib_protocol/constants_storage.ml index e019707fa86e..a41f82b93743 100644 --- a/src/proto_alpha/lib_protocol/constants_storage.ml +++ b/src/proto_alpha/lib_protocol/constants_storage.ml @@ -32,6 +32,10 @@ let consensus_rights_delay c = let constants = Raw_context.constants c in constants.consensus_rights_delay +let blocks_preservation_cycles c = + let constants = Raw_context.constants c in + constants.blocks_preservation_cycles + let blocks_per_cycle c = let constants = Raw_context.constants c in constants.blocks_per_cycle diff --git a/src/proto_alpha/lib_protocol/constants_storage.mli b/src/proto_alpha/lib_protocol/constants_storage.mli index 130a00936063..881a99c9c5f5 100644 --- a/src/proto_alpha/lib_protocol/constants_storage.mli +++ b/src/proto_alpha/lib_protocol/constants_storage.mli @@ -33,6 +33,8 @@ val preserved_cycles : Raw_context.t -> int val consensus_rights_delay : Raw_context.t -> int +val blocks_preservation_cycles : Raw_context.t -> int + val blocks_per_cycle : Raw_context.t -> int32 val blocks_per_commitment : Raw_context.t -> int32 diff --git a/src/proto_alpha/lib_protocol/raw_context.ml b/src/proto_alpha/lib_protocol/raw_context.ml index 2280ad4130ab..c0bd545f1766 100644 --- a/src/proto_alpha/lib_protocol/raw_context.ml +++ b/src/proto_alpha/lib_protocol/raw_context.ml @@ -1119,6 +1119,7 @@ let prepare_first_block ~level ~timestamp chain_id ctxt = { preserved_cycles = c.preserved_cycles; consensus_rights_delay = c.preserved_cycles; + blocks_preservation_cycles = c.preserved_cycles; blocks_per_cycle = c.blocks_per_cycle; blocks_per_commitment = c.blocks_per_commitment; nonce_revelation_threshold = c.nonce_revelation_threshold; -- GitLab From 2305aa538103cb9876dcfefb58903352dea93235 Mon Sep 17 00:00:00 2001 From: Julien Tesson Date: Wed, 13 Dec 2023 15:03:20 +0100 Subject: [PATCH 2/4] docs/proto/alpha: changelog entry for constant blocks_preservation_cycles --- docs/protocols/alpha.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/protocols/alpha.rst b/docs/protocols/alpha.rst index 223d1335c928..91bd06fc606a 100644 --- a/docs/protocols/alpha.rst +++ b/docs/protocols/alpha.rst @@ -47,6 +47,8 @@ Protocol parameters - Added ``consensus_rights_delay`` parametric constant. (MR :gl:`!11188`) +- Added ``blocks_preservation_cycles`` parametric constant. (MR :gl:`!11280`) + Bug Fixes --------- -- GitLab From 135d3789007ce51ef297b9b8d8f5464a2b6d5e57 Mon Sep 17 00:00:00 2001 From: Julien Sagot Date: Wed, 13 Dec 2023 15:53:32 +0100 Subject: [PATCH 3/4] tezt/RPC: reset regression traces for constant change --- ...lpha- (mode client) RPC regression tests- misc_protocol.out | 3 ++- ...Alpha- (mode light) RPC regression tests- misc_protocol.out | 3 ++- ...Alpha- (mode proxy) RPC regression tests- misc_protocol.out | 3 ++- ...xy_server_data_dir) RPC regression tests- misc_protocol.out | 3 ++- ...e proxy_server_rpc) RPC regression tests- misc_protocol.out | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/tezt/tests/expected/RPC_test.ml/Alpha- (mode client) RPC regression tests- misc_protocol.out b/tezt/tests/expected/RPC_test.ml/Alpha- (mode client) RPC regression tests- misc_protocol.out index db817ab3b03e..6027868f0a7b 100644 --- a/tezt/tests/expected/RPC_test.ml/Alpha- (mode client) RPC regression tests- misc_protocol.out +++ b/tezt/tests/expected/RPC_test.ml/Alpha- (mode client) RPC regression tests- misc_protocol.out @@ -9,7 +9,8 @@ "smart_rollup_max_wrapped_proof_binary_size": 30000, "smart_rollup_message_size_limit": 4096, "smart_rollup_max_number_of_messages_per_level": "1000000", - "preserved_cycles": 2, "consensus_rights_delay": 2, "blocks_per_cycle": 8, + "preserved_cycles": 2, "consensus_rights_delay": 2, + "blocks_preservation_cycles": 2, "blocks_per_cycle": 8, "blocks_per_commitment": 4, "nonce_revelation_threshold": 4, "blocks_per_stake_snapshot": 4, "cycles_per_voting_period": 8, "hard_gas_limit_per_operation": "1040000", diff --git a/tezt/tests/expected/RPC_test.ml/Alpha- (mode light) RPC regression tests- misc_protocol.out b/tezt/tests/expected/RPC_test.ml/Alpha- (mode light) RPC regression tests- misc_protocol.out index 11c8467907b3..5dfce17a75d5 100644 --- a/tezt/tests/expected/RPC_test.ml/Alpha- (mode light) RPC regression tests- misc_protocol.out +++ b/tezt/tests/expected/RPC_test.ml/Alpha- (mode light) RPC regression tests- misc_protocol.out @@ -9,7 +9,8 @@ "smart_rollup_max_wrapped_proof_binary_size": 30000, "smart_rollup_message_size_limit": 4096, "smart_rollup_max_number_of_messages_per_level": "1000000", - "preserved_cycles": 2, "consensus_rights_delay": 2, "blocks_per_cycle": 8, + "preserved_cycles": 2, "consensus_rights_delay": 2, + "blocks_preservation_cycles": 2, "blocks_per_cycle": 8, "blocks_per_commitment": 4, "nonce_revelation_threshold": 4, "blocks_per_stake_snapshot": 4, "cycles_per_voting_period": 8, "hard_gas_limit_per_operation": "1040000", diff --git a/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy) RPC regression tests- misc_protocol.out b/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy) RPC regression tests- misc_protocol.out index 3826c6b7d411..652c31fcd076 100644 --- a/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy) RPC regression tests- misc_protocol.out +++ b/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy) RPC regression tests- misc_protocol.out @@ -9,7 +9,8 @@ "smart_rollup_max_wrapped_proof_binary_size": 30000, "smart_rollup_message_size_limit": 4096, "smart_rollup_max_number_of_messages_per_level": "1000000", - "preserved_cycles": 2, "consensus_rights_delay": 2, "blocks_per_cycle": 8, + "preserved_cycles": 2, "consensus_rights_delay": 2, + "blocks_preservation_cycles": 2, "blocks_per_cycle": 8, "blocks_per_commitment": 4, "nonce_revelation_threshold": 4, "blocks_per_stake_snapshot": 4, "cycles_per_voting_period": 8, "hard_gas_limit_per_operation": "1040000", diff --git a/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_data_dir) RPC regression tests- misc_protocol.out b/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_data_dir) RPC regression tests- misc_protocol.out index f8010a722882..91c21ce9f320 100644 --- a/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_data_dir) RPC regression tests- misc_protocol.out +++ b/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_data_dir) RPC regression tests- misc_protocol.out @@ -9,7 +9,8 @@ "smart_rollup_max_wrapped_proof_binary_size": 30000, "smart_rollup_message_size_limit": 4096, "smart_rollup_max_number_of_messages_per_level": "1000000", - "preserved_cycles": 2, "consensus_rights_delay": 2, "blocks_per_cycle": 8, + "preserved_cycles": 2, "consensus_rights_delay": 2, + "blocks_preservation_cycles": 2, "blocks_per_cycle": 8, "blocks_per_commitment": 4, "nonce_revelation_threshold": 4, "blocks_per_stake_snapshot": 4, "cycles_per_voting_period": 8, "hard_gas_limit_per_operation": "1040000", diff --git a/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_rpc) RPC regression tests- misc_protocol.out b/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_rpc) RPC regression tests- misc_protocol.out index f8010a722882..91c21ce9f320 100644 --- a/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_rpc) RPC regression tests- misc_protocol.out +++ b/tezt/tests/expected/RPC_test.ml/Alpha- (mode proxy_server_rpc) RPC regression tests- misc_protocol.out @@ -9,7 +9,8 @@ "smart_rollup_max_wrapped_proof_binary_size": 30000, "smart_rollup_message_size_limit": 4096, "smart_rollup_max_number_of_messages_per_level": "1000000", - "preserved_cycles": 2, "consensus_rights_delay": 2, "blocks_per_cycle": 8, + "preserved_cycles": 2, "consensus_rights_delay": 2, + "blocks_preservation_cycles": 2, "blocks_per_cycle": 8, "blocks_per_commitment": 4, "nonce_revelation_threshold": 4, "blocks_per_stake_snapshot": 4, "cycles_per_voting_period": 8, "hard_gas_limit_per_operation": "1040000", -- GitLab From af35e736e20c73a95cd7d9e6b667fca4f4e09627 Mon Sep 17 00:00:00 2001 From: Julien Sagot Date: Wed, 13 Dec 2023 15:59:09 +0100 Subject: [PATCH 4/4] kaitai: adapt to new protocol constant --- contrib/kaitai-struct-files/files/alpha__constants.ksy | 2 ++ .../kaitai-struct-files/files/alpha__constants__parametric.ksy | 2 ++ contrib/kaitai-struct-files/files/alpha__parameters.ksy | 2 ++ 3 files changed, 6 insertions(+) diff --git a/contrib/kaitai-struct-files/files/alpha__constants.ksy b/contrib/kaitai-struct-files/files/alpha__constants.ksy index a616216597c6..5fb50b16d11c 100644 --- a/contrib/kaitai-struct-files/files/alpha__constants.ksy +++ b/contrib/kaitai-struct-files/files/alpha__constants.ksy @@ -195,6 +195,8 @@ seq: type: u1 - id: consensus_rights_delay type: u1 +- id: blocks_preservation_cycles + type: u1 - id: blocks_per_cycle type: s4 - id: blocks_per_commitment diff --git a/contrib/kaitai-struct-files/files/alpha__constants__parametric.ksy b/contrib/kaitai-struct-files/files/alpha__constants__parametric.ksy index 0d84675ccf06..6b9c58387554 100644 --- a/contrib/kaitai-struct-files/files/alpha__constants__parametric.ksy +++ b/contrib/kaitai-struct-files/files/alpha__constants__parametric.ksy @@ -167,6 +167,8 @@ seq: type: u1 - id: consensus_rights_delay type: u1 +- id: blocks_preservation_cycles + type: u1 - id: blocks_per_cycle type: s4 - id: blocks_per_commitment diff --git a/contrib/kaitai-struct-files/files/alpha__parameters.ksy b/contrib/kaitai-struct-files/files/alpha__parameters.ksy index 1fca0bb263e5..611c5a271d4a 100644 --- a/contrib/kaitai-struct-files/files/alpha__parameters.ksy +++ b/contrib/kaitai-struct-files/files/alpha__parameters.ksy @@ -445,6 +445,8 @@ seq: type: u1 - id: consensus_rights_delay type: u1 +- id: blocks_preservation_cycles + type: u1 - id: blocks_per_cycle type: s4 - id: blocks_per_commitment -- GitLab