From f8ac0e4a5fe5a7af262a9b0d4505d6918047c353 Mon Sep 17 00:00:00 2001 From: Philippe Wang Date: Tue, 6 Jun 2023 22:39:49 -0700 Subject: [PATCH] Proto: update context with adaptive inflation vote EMA --- .../adaptive_inflation_storage.ml | 14 ++++++++++ .../adaptive_inflation_storage.mli | 7 +++++ src/proto_alpha/lib_protocol/alpha_context.ml | 4 +++ .../lib_protocol/alpha_context.mli | 8 ++++++ src/proto_alpha/lib_protocol/apply.ml | 26 ++++++++++++++----- 5 files changed, 53 insertions(+), 6 deletions(-) diff --git a/src/proto_alpha/lib_protocol/adaptive_inflation_storage.ml b/src/proto_alpha/lib_protocol/adaptive_inflation_storage.ml index 25682b3f9b89..ab2c1823fe61 100644 --- a/src/proto_alpha/lib_protocol/adaptive_inflation_storage.ml +++ b/src/proto_alpha/lib_protocol/adaptive_inflation_storage.ml @@ -203,6 +203,20 @@ let load_reward_coeff ctxt = let init_ema ctxt = Storage.Adaptive_inflation.Launch_ema.init ctxt 0L +let update_ema ctxt ~vote = + Storage.Adaptive_inflation.Launch_ema.get ctxt >>=? fun old_ema -> + Toggle_votes_repr.Adaptive_inflation_launch_EMA.of_int64 old_ema + >>=? fun old_ema -> + let new_ema = + Toggle_votes_repr.compute_new_adaptive_inflation_ema + ~toggle_vote:vote + old_ema + in + Storage.Adaptive_inflation.Launch_ema.update + ctxt + (Toggle_votes_repr.Adaptive_inflation_launch_EMA.to_int64 new_ema) + >|=? fun ctxt -> (ctxt, new_ema) + let activate ctxt ~cycle = Storage.Adaptive_inflation.Activation.init ctxt cycle module For_RPC = struct diff --git a/src/proto_alpha/lib_protocol/adaptive_inflation_storage.mli b/src/proto_alpha/lib_protocol/adaptive_inflation_storage.mli index f49be6ce69b2..6054df5c9482 100644 --- a/src/proto_alpha/lib_protocol/adaptive_inflation_storage.mli +++ b/src/proto_alpha/lib_protocol/adaptive_inflation_storage.mli @@ -42,6 +42,13 @@ val update_stored_rewards_at_cycle_end : (** [init_ema ctxt] adds into the context an adaptive inflation vote EMA at 0 *) val init_ema : Raw_context.t -> Raw_context.t tzresult Lwt.t +(** [update_ema ctxt ~vote] returns the new context with the new EMA *) +val update_ema : + Raw_context.t -> + vote:Toggle_votes_repr.toggle_vote -> + (Raw_context.t * Toggle_votes_repr.Adaptive_inflation_launch_EMA.t) tzresult + Lwt.t + (** [activate ctxt ~cycle] adds into the context the cycle at which the adaptive inflation feature gets activated. If this function is never called, then the context does not contain the cycle for the diff --git a/src/proto_alpha/lib_protocol/alpha_context.ml b/src/proto_alpha/lib_protocol/alpha_context.ml index f6fd7e0e4275..4651916dc507 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.ml +++ b/src/proto_alpha/lib_protocol/alpha_context.ml @@ -615,6 +615,10 @@ module Liquidity_baking = struct include Liquidity_baking_storage end +module Adaptive_inflation = struct + include Adaptive_inflation_storage +end + module Ticket_hash = struct include Ticket_hash_repr include Ticket_hash_builder diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index 45be4b372bd5..7e3390098e29 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -4783,6 +4783,14 @@ module Liquidity_baking : sig Lwt.t end +(** This module re-exports definitions from {!Adaptive_inflation_storage}. *) +module Adaptive_inflation : sig + val update_ema : + context -> + vote:Toggle_votes.toggle_vote -> + (context * Toggle_votes.Adaptive_inflation_launch_EMA.t) tzresult Lwt.t +end + (** This module re-exports definitions from {!Ticket_storage}. *) module Ticket_balance : sig type error += diff --git a/src/proto_alpha/lib_protocol/apply.ml b/src/proto_alpha/lib_protocol/apply.ml index aad827114703..4d2775b0b379 100644 --- a/src/proto_alpha/lib_protocol/apply.ml +++ b/src/proto_alpha/lib_protocol/apply.ml @@ -2506,6 +2506,13 @@ let begin_application ctxt chain_id ~migration_balance_updates let* ctxt, liquidity_baking_operations_results, liquidity_baking_toggle_ema = apply_liquidity_baking_subsidy ctxt ~toggle_vote in + let* ctxt, adaptive_inflation_toggle_ema = + let adaptive_inflation_vote = + block_header.Block_header.protocol_data.contents.toggle_votes + .adaptive_inflation_vote + in + Adaptive_inflation.update_ema ctxt ~vote:adaptive_inflation_vote + in let* ctxt = Sc_rollup.Inbox.add_level_info ~predecessor:block_header.shell.predecessor @@ -2530,8 +2537,7 @@ let begin_application ctxt chain_id ~migration_balance_updates op_count = 0; migration_balance_updates; liquidity_baking_toggle_ema; - adaptive_inflation_toggle_ema = - Toggle_votes.Adaptive_inflation_launch_EMA.zero; + adaptive_inflation_toggle_ema; implicit_operations_results = Apply_results.pack_migration_operation_results migration_operation_results @@ -2567,6 +2573,12 @@ let begin_full_construction ctxt chain_id ~migration_balance_updates let* ctxt, liquidity_baking_operations_results, liquidity_baking_toggle_ema = apply_liquidity_baking_subsidy ctxt ~toggle_vote in + let* ctxt, adaptive_inflation_toggle_ema = + let adaptive_inflation_vote = + block_data_contents.toggle_votes.adaptive_inflation_vote + in + Adaptive_inflation.update_ema ctxt ~vote:adaptive_inflation_vote + in let* ctxt = Sc_rollup.Inbox.add_level_info ~predecessor:predecessor_hash ctxt in @@ -2590,8 +2602,7 @@ let begin_full_construction ctxt chain_id ~migration_balance_updates op_count = 0; migration_balance_updates; liquidity_baking_toggle_ema; - adaptive_inflation_toggle_ema = - Toggle_votes.Adaptive_inflation_launch_EMA.zero; + adaptive_inflation_toggle_ema; implicit_operations_results = Apply_results.pack_migration_operation_results migration_operation_results @@ -2606,6 +2617,10 @@ let begin_partial_construction ctxt chain_id ~migration_balance_updates let* ctxt, liquidity_baking_operations_results, liquidity_baking_toggle_ema = apply_liquidity_baking_subsidy ctxt ~toggle_vote in + let* ctxt, adaptive_inflation_toggle_ema = + let adaptive_inflation_vote = Toggle_votes.Toggle_vote_pass in + Adaptive_inflation.update_ema ctxt ~vote:adaptive_inflation_vote + in let* ctxt = (* The mode [Partial_construction] is used in simulation. We try to put a realistic value of the block's timestamp. Even though, it should @@ -2624,8 +2639,7 @@ let begin_partial_construction ctxt chain_id ~migration_balance_updates op_count = 0; migration_balance_updates; liquidity_baking_toggle_ema; - adaptive_inflation_toggle_ema = - Toggle_votes.Adaptive_inflation_launch_EMA.zero; + adaptive_inflation_toggle_ema; implicit_operations_results = Apply_results.pack_migration_operation_results migration_operation_results -- GitLab