diff --git a/src/proto_alpha/lib_protocol/adaptive_inflation_services.ml b/src/proto_alpha/lib_protocol/adaptive_inflation_services.ml index 5e29f3d1b1abb462e6e18f9c24e993427f78a13b..c9733dc503cdf74c1c0ba183a3c4b02589b40981 100644 --- a/src/proto_alpha/lib_protocol/adaptive_inflation_services.ml +++ b/src/proto_alpha/lib_protocol/adaptive_inflation_services.ml @@ -36,12 +36,25 @@ module S = struct ~query:RPC_query.empty ~output:Tez.encoding RPC_path.(context_path / "total_supply") + + let total_frozen_stake = + RPC_service.get_service + ~description:"Returns the total stake (in mutez) frozen on the chain" + ~query:RPC_query.empty + ~output:Tez.encoding + RPC_path.(context_path / "total_frozen_stake") end let register () = let open Services_registration in register0 ~chunked:false S.total_supply (fun ctxt () () -> - Contract.get_total_supply ctxt) + Contract.get_total_supply ctxt) ; + register0 ~chunked:false S.total_frozen_stake (fun ctxt () () -> + let cycle = (Level.current ctxt).cycle in + Stake_distribution.get_total_frozen_stake ctxt cycle) let total_supply ctxt block = RPC_context.make_call0 S.total_supply ctxt block () () + +let total_frozen_stake ctxt block = + RPC_context.make_call0 S.total_frozen_stake ctxt block () () diff --git a/src/proto_alpha/lib_protocol/adaptive_inflation_services.mli b/src/proto_alpha/lib_protocol/adaptive_inflation_services.mli index 53be0d0d0b0a2977fe298b7e3d16af313ea235ed..d22b4b717032e30a8100aa38633adf6af000e239 100644 --- a/src/proto_alpha/lib_protocol/adaptive_inflation_services.mli +++ b/src/proto_alpha/lib_protocol/adaptive_inflation_services.mli @@ -27,4 +27,7 @@ open Alpha_context val total_supply : 'a #RPC_context.simple -> 'a -> Tez.t shell_tzresult Lwt.t +val total_frozen_stake : + 'a #RPC_context.simple -> 'a -> Tez.t shell_tzresult Lwt.t + val register : unit -> unit diff --git a/src/proto_alpha/lib_protocol/alpha_context.ml b/src/proto_alpha/lib_protocol/alpha_context.ml index 49952e0f606751553bbf5805cc0421aeb5b39c39..8559ab1bb052396a00d3c71266b167864bf6b034 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.ml +++ b/src/proto_alpha/lib_protocol/alpha_context.ml @@ -512,6 +512,11 @@ module Stake_distribution = struct let slot_owner = Delegate_sampler.slot_owner let load_sampler_for_cycle = Delegate_sampler.load_sampler_for_cycle + + let get_total_frozen_stake ctxt cycle = + let open Lwt_result_syntax in + let* total_stake = Stake_storage.get_total_active_stake ctxt cycle in + return (Stake_repr.get_frozen total_stake) end module Nonce = Nonce_storage diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index 7fc26862eea3635ddb88e194b5f802b3a64bb6d6..5d03e0a3f2f3e82732c28de989bcf8c2e3b0281a 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -4569,6 +4569,8 @@ module Stake_distribution : sig (** See {!Delegate_sampler.load_sampler_for_cycle}. *) val load_sampler_for_cycle : context -> Cycle.t -> context tzresult Lwt.t + + val get_total_frozen_stake : context -> Cycle.t -> Tez.t tzresult Lwt.t end (** This module re-exports definitions from {!Commitment_repr} and,