diff --git a/client-libs/kaitai-struct-files/files/alpha__constants.ksy b/client-libs/kaitai-struct-files/files/alpha__constants.ksy index 57b37cddac9161485126b2342f3a872319705a8d..d01762e187f9a753b407a36c4a85ba9720cb1340 100644 --- a/client-libs/kaitai-struct-files/files/alpha__constants.ksy +++ b/client-libs/kaitai-struct-files/files/alpha__constants.ksy @@ -382,6 +382,9 @@ seq: - id: allow_tz4_delegate_enable type: u1 enum: bool -- id: all_bakers_attest_enable +- id: all_bakers_attest_activation_level_tag type: u1 enum: bool +- id: all_bakers_attest_activation_level + type: s4be + if: (all_bakers_attest_activation_level_tag == bool::true) diff --git a/client-libs/kaitai-struct-files/files/alpha__constants__parametric.ksy b/client-libs/kaitai-struct-files/files/alpha__constants__parametric.ksy index af2c8cac106f99468c5eb2381b1bb8ab7a4bf00c..784c6834f8ad404ef17e5c45df803914eec46770 100644 --- a/client-libs/kaitai-struct-files/files/alpha__constants__parametric.ksy +++ b/client-libs/kaitai-struct-files/files/alpha__constants__parametric.ksy @@ -354,6 +354,9 @@ seq: - id: allow_tz4_delegate_enable type: u1 enum: bool -- id: all_bakers_attest_enable +- id: all_bakers_attest_activation_level_tag type: u1 enum: bool +- id: all_bakers_attest_activation_level + type: s4be + if: (all_bakers_attest_activation_level_tag == bool::true) diff --git a/client-libs/kaitai-struct-files/files/alpha__parameters.ksy b/client-libs/kaitai-struct-files/files/alpha__parameters.ksy index 5b4ef02703a7974b9c0dace50fc9dbf5b8278c39..ea27edb246c9ce1eaf0f8b5c065b73f26bedd992 100644 --- a/client-libs/kaitai-struct-files/files/alpha__parameters.ksy +++ b/client-libs/kaitai-struct-files/files/alpha__parameters.ksy @@ -632,6 +632,9 @@ seq: - id: allow_tz4_delegate_enable type: u1 enum: bool -- id: all_bakers_attest_enable +- id: all_bakers_attest_activation_level_tag type: u1 enum: bool +- id: all_bakers_attest_activation_level + type: s4be + if: (all_bakers_attest_activation_level_tag == bool::true) diff --git a/docs/protocols/alpha.rst b/docs/protocols/alpha.rst index 0a5dc83b8f466c2ffcc3d85bb728af96703a9452..c673a4b3ff391d1d7b7964587202d22030430bc8 100644 --- a/docs/protocols/alpha.rst +++ b/docs/protocols/alpha.rst @@ -81,7 +81,7 @@ Minor Changes - Added a feature flag which would allow tz4 (BLS) addresses as delegate and or as consensus keys. (MR :gl:`!15311`) -- Added a feature flag for allowing all bakers to attest. (MR :gl:`!15584`) +- Added a feature flag for allowing all bakers to attest. (MR :gl:`!15584`, :gl:`!15764`) Internal -------- diff --git a/src/proto_alpha/lib_parameters/default_parameters.ml b/src/proto_alpha/lib_parameters/default_parameters.ml index 369848b78fd08d2421c44f9821bd23c760bb2978..36b00fcdb03fb1be731747cce69ebc305f27d334 100644 --- a/src/proto_alpha/lib_parameters/default_parameters.ml +++ b/src/proto_alpha/lib_parameters/default_parameters.ml @@ -334,7 +334,7 @@ let constants_mainnet : Constants.Parametric.t = (* TODO: https://gitlab.com/tezos/tezos/-/issues/7553 Enable once we built performance confidance *) allow_tz4_delegate_enable = false; - all_bakers_attest_enable = false; + all_bakers_attest_activation_level = None; } let constants_sandbox = diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index df2f28456d6a336d27e1707bad1e2b96f0296090..dfa1ce5c0235c572d9ad95cdb11dc190927fad35 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -951,7 +951,7 @@ module Constants : sig direct_ticket_spending_enable : bool; aggregate_attestation : bool; allow_tz4_delegate_enable : bool; - all_bakers_attest_enable : bool; + all_bakers_attest_activation_level : Raw_level_repr.t option; } val encoding : t Data_encoding.t @@ -1091,7 +1091,7 @@ module Constants : sig val allow_tz4_delegate_enable : context -> bool - val all_bakers_attest_enable : context -> bool + val all_bakers_attest_activation_level : context -> Raw_level_repr.t option (** All constants: fixed and parametric *) type t = private {fixed : fixed; parametric : Parametric.t} diff --git a/src/proto_alpha/lib_protocol/constants_parametric_repr.ml b/src/proto_alpha/lib_protocol/constants_parametric_repr.ml index e105ec83b31ac813962eda0550505206a8e873f0..333156716dddcc48d540e6c7f26a76ac726aa6c8 100644 --- a/src/proto_alpha/lib_protocol/constants_parametric_repr.ml +++ b/src/proto_alpha/lib_protocol/constants_parametric_repr.ml @@ -293,7 +293,7 @@ type t = { direct_ticket_spending_enable : bool; aggregate_attestation : bool; allow_tz4_delegate_enable : bool; - all_bakers_attest_enable : bool; + all_bakers_attest_activation_level : Raw_level_repr.t option; } let sc_rollup_encoding = @@ -604,7 +604,7 @@ let encoding = ( c.direct_ticket_spending_enable, c.aggregate_attestation, c.allow_tz4_delegate_enable, - c.all_bakers_attest_enable ) ) ) ) ) ) ) ) )) + c.all_bakers_attest_activation_level ) ) ) ) ) ) ) ) )) (fun ( ( ( consensus_rights_delay, blocks_preservation_cycles, delegate_parameters_activation_delay, @@ -649,7 +649,7 @@ let encoding = ( direct_ticket_spending_enable, aggregate_attestation, allow_tz4_delegate_enable, - all_bakers_attest_enable ) ) ) ) ) ) ) ) ) -> + all_bakers_attest_activation_level ) ) ) ) ) ) ) ) ) -> { consensus_rights_delay; blocks_preservation_cycles; @@ -696,7 +696,7 @@ let encoding = direct_ticket_spending_enable; aggregate_attestation; allow_tz4_delegate_enable; - all_bakers_attest_enable; + all_bakers_attest_activation_level; }) (merge_objs (merge_objs @@ -764,7 +764,9 @@ let encoding = (req "direct_ticket_spending_enable" bool) (req "aggregate_attestation" bool) (req "allow_tz4_delegate_enable" bool) - (req "all_bakers_attest_enable" bool)))))))))) + (opt + "all_bakers_attest_activation_level" + Raw_level_repr.encoding)))))))))) let update_sc_rollup_parameter ratio_i32 c = (* Constants remain small enough to fit in [int32] after update (as a diff --git a/src/proto_alpha/lib_protocol/constants_parametric_repr.mli b/src/proto_alpha/lib_protocol/constants_parametric_repr.mli index 60a1a50fbd15bffd9bb1f3dac29c7b411533baae..4b0f95c8a5ccfd0cca767da7bcd1b0a2399f3293 100644 --- a/src/proto_alpha/lib_protocol/constants_parametric_repr.mli +++ b/src/proto_alpha/lib_protocol/constants_parametric_repr.mli @@ -230,7 +230,7 @@ type t = { (* attestation aggregation feature flag *) aggregate_attestation : bool; allow_tz4_delegate_enable : bool; - all_bakers_attest_enable : bool; + all_bakers_attest_activation_level : Raw_level_repr.t option; } val encoding : t Data_encoding.encoding diff --git a/src/proto_alpha/lib_protocol/constants_storage.ml b/src/proto_alpha/lib_protocol/constants_storage.ml index d765b1c2f2f58d14097600043144b357ed23eb78..15355ea275fd6502352dd27cf54bff981c979861 100644 --- a/src/proto_alpha/lib_protocol/constants_storage.ml +++ b/src/proto_alpha/lib_protocol/constants_storage.ml @@ -299,5 +299,5 @@ let aggregate_attestation c = (Raw_context.constants c).aggregate_attestation let allow_tz4_delegate_enable c = (Raw_context.constants c).allow_tz4_delegate_enable -let all_bakers_attest_enable c = - (Raw_context.constants c).all_bakers_attest_enable +let all_bakers_attest_activation_level c = + (Raw_context.constants c).all_bakers_attest_activation_level diff --git a/src/proto_alpha/lib_protocol/constants_storage.mli b/src/proto_alpha/lib_protocol/constants_storage.mli index 2de3bbe766325148c10a1e8371c42cc8b81304c3..be085fc30256be96d7daa82ad0d34a65cb51399a 100644 --- a/src/proto_alpha/lib_protocol/constants_storage.mli +++ b/src/proto_alpha/lib_protocol/constants_storage.mli @@ -185,4 +185,5 @@ val slashable_deposits_period : Raw_context.t -> int (* attestation aggregation feature flag *) val aggregate_attestation : Raw_context.t -> bool -val all_bakers_attest_enable : Raw_context.t -> bool +val all_bakers_attest_activation_level : + Raw_context.t -> Raw_level_repr.t option diff --git a/src/proto_alpha/lib_protocol/delegate_sampler.ml b/src/proto_alpha/lib_protocol/delegate_sampler.ml index c0cfac951e709f19b1c140f9894c8512f45fa638..9b7da835fedde32cf3648f05b299bb4e5f2c7bf6 100644 --- a/src/proto_alpha/lib_protocol/delegate_sampler.ml +++ b/src/proto_alpha/lib_protocol/delegate_sampler.ml @@ -141,6 +141,11 @@ module Random = struct return (c, pk) end +let check_all_bakers_attest_at_level ctxt level = + match Constants_storage.all_bakers_attest_activation_level ctxt with + | None -> false + | Some act_level -> Raw_level_repr.(level.Level_repr.level >= act_level) + let slot_owner c level slot = Random.owner c level (Slot_repr.to_int slot) let baking_rights_owner c (level : Level_repr.t) ~round = diff --git a/src/proto_alpha/lib_protocol/delegate_sampler.mli b/src/proto_alpha/lib_protocol/delegate_sampler.mli index 218e63864f1e5fd8832b46d5f8e816bc77eb7619..e69a05b55769cf3262268f0cd46e2f459e61144c 100644 --- a/src/proto_alpha/lib_protocol/delegate_sampler.mli +++ b/src/proto_alpha/lib_protocol/delegate_sampler.mli @@ -78,6 +78,10 @@ val attesting_rights_count : Level_repr.t -> (Raw_context.t * int Signature.Public_key_hash.Map.t) tzresult Lwt.t +(** [check_all_bakers_attest_at_level ctxt level] checks that at the given + level, all bakers were allowed (and expected) to attest. *) +val check_all_bakers_attest_at_level : Raw_context.t -> Level_repr.t -> bool + module For_RPC : sig (** The baking power for a given delegate computed from its current stake. *) diff --git a/src/proto_alpha/lib_protocol/raw_context.ml b/src/proto_alpha/lib_protocol/raw_context.ml index f42782d048f8b4635aae5f318e4a3e48730f4da7..3d622aa2ef4a2825c85e140ece50816c2b1d228f 100644 --- a/src/proto_alpha/lib_protocol/raw_context.ml +++ b/src/proto_alpha/lib_protocol/raw_context.ml @@ -1234,7 +1234,7 @@ let prepare_first_block ~level ~timestamp chain_id ctxt = direct_ticket_spending_enable; aggregate_attestation; allow_tz4_delegate_enable; - all_bakers_attest_enable; + all_bakers_attest_activation_level; } : Previous.t) = c @@ -1286,7 +1286,7 @@ let prepare_first_block ~level ~timestamp chain_id ctxt = direct_ticket_spending_enable; aggregate_attestation; allow_tz4_delegate_enable; - all_bakers_attest_enable; + all_bakers_attest_activation_level; } in let*! ctxt = add_constants ctxt constants in @@ -1578,7 +1578,7 @@ let prepare_first_block ~level ~timestamp chain_id ctxt = direct_ticket_spending_enable; aggregate_attestation = false; allow_tz4_delegate_enable = false; - all_bakers_attest_enable = false; + all_bakers_attest_activation_level = None; } in let new_constants : Constants_parametric_repr.t option = 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 4b8e30747e46809d614b22f8efa479679c222c6d..afabe372d346fe6ad4ebe81e0fb36a3936276325 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 @@ -81,7 +81,7 @@ "adaptive_issuance_activation_vote_enable": true, "adaptive_issuance_force_activation": false, "direct_ticket_spending_enable": false, "aggregate_attestation": false, - "allow_tz4_delegate_enable": true, "all_bakers_attest_enable": false } + "allow_tz4_delegate_enable": true } ./octez-client rpc get /chains/main/blocks/head/helpers/baking_rights [ { "level": 2, "delegate": "[PUBLIC_KEY_HASH]", 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 604258e8de4d93aa35058ee0abef4fe9695ddf1a..de4cade3409389d164ded73af22d01d56af96551 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 @@ -81,7 +81,7 @@ "adaptive_issuance_activation_vote_enable": true, "adaptive_issuance_force_activation": false, "direct_ticket_spending_enable": false, "aggregate_attestation": false, - "allow_tz4_delegate_enable": true, "all_bakers_attest_enable": false } + "allow_tz4_delegate_enable": true } ./octez-client --mode light rpc get /chains/main/blocks/head/helpers/baking_rights [ { "level": 2, "delegate": "[PUBLIC_KEY_HASH]", 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 3254159df6e9212ecf822bbdd81c6372a3d94ab7..617f26d72c713e93202ba30b51889d993f42a8a1 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 @@ -81,7 +81,7 @@ "adaptive_issuance_activation_vote_enable": true, "adaptive_issuance_force_activation": false, "direct_ticket_spending_enable": false, "aggregate_attestation": false, - "allow_tz4_delegate_enable": true, "all_bakers_attest_enable": false } + "allow_tz4_delegate_enable": true } ./octez-client --mode proxy rpc get /chains/main/blocks/head/helpers/baking_rights [ { "level": 2, "delegate": "[PUBLIC_KEY_HASH]", diff --git a/tezt/tests/expected/weeklynet.ml/Alpha- weeklynet regression test.out b/tezt/tests/expected/weeklynet.ml/Alpha- weeklynet regression test.out index a4289984e2836bcaf76390515a05f709269c96c1..31033a4c506e3d89246e931ac43896711a85f975 100644 --- a/tezt/tests/expected/weeklynet.ml/Alpha- weeklynet regression test.out +++ b/tezt/tests/expected/weeklynet.ml/Alpha- weeklynet regression test.out @@ -71,4 +71,4 @@ "adaptive_issuance_activation_vote_enable": true, "adaptive_issuance_force_activation": false, "direct_ticket_spending_enable": false, "aggregate_attestation": false, - "allow_tz4_delegate_enable": false, "all_bakers_attest_enable": false } + "allow_tz4_delegate_enable": false } diff --git a/tezt/tests/weeklynet_configs/alpha.json b/tezt/tests/weeklynet_configs/alpha.json index 84264f34cf49b99385e88b4ca31dc061c9cb25f2..6c23cb4d9bce88e37b1b4d650a4ac5449c3a92a5 100644 --- a/tezt/tests/weeklynet_configs/alpha.json +++ b/tezt/tests/weeklynet_configs/alpha.json @@ -154,6 +154,5 @@ "adaptive_issuance_force_activation": false, "direct_ticket_spending_enable": false, "aggregate_attestation": false, - "allow_tz4_delegate_enable": false, - "all_bakers_attest_enable": false + "allow_tz4_delegate_enable": false }