From 2b2078edf7444deb67bca6b1972237d02ef12e73 Mon Sep 17 00:00:00 2001 From: Lucas Randazzo Date: Mon, 15 May 2023 10:22:05 +0200 Subject: [PATCH 1/3] Proto: Add total supply to storage --- src/proto_alpha/lib_protocol/storage.ml | 7 +++++++ src/proto_alpha/lib_protocol/storage.mli | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/src/proto_alpha/lib_protocol/storage.ml b/src/proto_alpha/lib_protocol/storage.ml index 86e52b2cf407..2a2850b7f2ce 100644 --- a/src/proto_alpha/lib_protocol/storage.ml +++ b/src/proto_alpha/lib_protocol/storage.ml @@ -407,6 +407,13 @@ module Contract = struct let name = ["total_frozen_bonds"] end) (Tez_repr) + + module Total_supply = + Make_single_data_storage (Registered) (Raw_context) + (struct + let name = ["total_supply"] + end) + (Tez_repr) end module type NEXT = sig diff --git a/src/proto_alpha/lib_protocol/storage.mli b/src/proto_alpha/lib_protocol/storage.mli index a82d10ee85a5..b1280cff1f98 100644 --- a/src/proto_alpha/lib_protocol/storage.mli +++ b/src/proto_alpha/lib_protocol/storage.mli @@ -229,6 +229,10 @@ module Contract : sig with type key = Contract_repr.t and type value = Tez_repr.t and type t := Raw_context.t + + (** Stores the amount of tokens currently present on chain *) + module Total_supply : + Single_data_storage with type value = Tez_repr.t and type t := Raw_context.t end module Big_map : sig -- GitLab From d2022fa15dd1889640a5ffa1cc87ce114e6c4620 Mon Sep 17 00:00:00 2001 From: Lucas Randazzo Date: Mon, 15 May 2023 11:08:55 +0200 Subject: [PATCH 2/3] Proto: init total supply for O --- src/proto_alpha/lib_protocol/init_storage.ml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/proto_alpha/lib_protocol/init_storage.ml b/src/proto_alpha/lib_protocol/init_storage.ml index e6e33340adaf..363141d18d49 100644 --- a/src/proto_alpha/lib_protocol/init_storage.ml +++ b/src/proto_alpha/lib_protocol/init_storage.ml @@ -145,6 +145,17 @@ let migrate_stake_distribution_for_o ctxt = let distr = List.map (fun (pkh, stake) -> (pkh, convert stake)) distr in Storage.Stake.Selected_distribution_for_cycle.update ctxt cycle distr) +(** Initializes the total supply at the beginning of O + Uses an estimation of the total supply at the activation of O. + This value can be refined at the beginning of P to have a + perfectly accurate ammount. + + Remove me in P. *) +let initialize_total_supply_for_o ctxt = + Storage.Contract.Total_supply.add + ctxt + (Tez_repr.of_mutez_exn 940_000_000_000_000L) + let prepare_first_block _chain_id ctxt ~typecheck ~level ~timestamp ~predecessor = Raw_context.prepare_first_block ~level ~timestamp ctxt @@ -212,7 +223,8 @@ let prepare_first_block _chain_id ctxt ~typecheck ~level ~timestamp ~predecessor Raw_level_repr.of_int32 level >>?= fun level -> Storage.Tenderbake.First_level_of_protocol.update ctxt level >>=? fun ctxt -> - migrate_stake_distribution_for_o ctxt >>=? fun ctxt -> return (ctxt, [])) + migrate_stake_distribution_for_o ctxt >>=? fun ctxt -> + initialize_total_supply_for_o ctxt >>= fun ctxt -> return (ctxt, [])) >>=? fun (ctxt, balance_updates) -> List.fold_left_es patch_script ctxt Legacy_script_patches.addresses_to_patch >>=? fun ctxt -> -- GitLab From a7c408fcbd5183709cf862ca4a8c2814bf1ca58e Mon Sep 17 00:00:00 2001 From: Lucas Randazzo Date: Tue, 16 May 2023 14:26:44 +0200 Subject: [PATCH 3/3] Proto: init total supply for Genesis/Testnet --- src/proto_alpha/lib_protocol/init_storage.ml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/proto_alpha/lib_protocol/init_storage.ml b/src/proto_alpha/lib_protocol/init_storage.ml index 363141d18d49..5ccc921fe58f 100644 --- a/src/proto_alpha/lib_protocol/init_storage.ml +++ b/src/proto_alpha/lib_protocol/init_storage.ml @@ -172,6 +172,7 @@ let prepare_first_block _chain_id ctxt ~typecheck ~level ~timestamp ~predecessor Raw_level_repr.of_int32 level >>?= fun level -> Storage.Tenderbake.First_level_of_protocol.init ctxt level >>=? fun ctxt -> + Storage.Contract.Total_supply.add ctxt Tez_repr.zero >>= fun ctxt -> Storage.Block_round.init ctxt Round_repr.zero >>=? fun ctxt -> let init_commitment (ctxt, balance_updates) Commitment_repr.{blinded_public_key_hash; amount} = -- GitLab