Alpha: added rpc 'proto/delegate/<id>/frozen_balances'
This commit is contained in:
parent
3ad1ea073e
commit
a491083586
@ -550,6 +550,15 @@ module Delegate : sig
|
||||
val frozen_balance:
|
||||
context -> public_key_hash -> Tez.t tzresult Lwt.t
|
||||
|
||||
type frozen_balances = {
|
||||
deposit : Tez.t ;
|
||||
fees : Tez.t ;
|
||||
rewards : Tez.t ;
|
||||
}
|
||||
|
||||
val frozen_balances:
|
||||
context -> public_key_hash -> frozen_balances tzresult Lwt.t
|
||||
|
||||
val full_balance:
|
||||
context -> public_key_hash -> Tez.t tzresult Lwt.t
|
||||
|
||||
|
@ -322,5 +322,37 @@ module Endorser = struct
|
||||
|
||||
end
|
||||
|
||||
module S = struct
|
||||
let frozen_balances_encoding =
|
||||
let open Delegate in
|
||||
Data_encoding.(
|
||||
conv
|
||||
(fun { deposit ; fees ; rewards } ->
|
||||
(deposit, fees, rewards))
|
||||
(fun (deposit, fees, rewards) ->
|
||||
{ deposit ; fees ; rewards }
|
||||
)
|
||||
(obj3
|
||||
(req "deposit" Tez.encoding)
|
||||
(req "fees" Tez.encoding)
|
||||
(req "rewards" Tez.encoding)))
|
||||
|
||||
let frozen_balances =
|
||||
RPC_service.post_service
|
||||
~description: "Returns the amount of frozen tokens associated to a given key."
|
||||
~query: RPC_query.empty
|
||||
~input: Data_encoding.empty
|
||||
~output: frozen_balances_encoding
|
||||
RPC_path.(open_root / "delegate" /: Ed25519.Public_key_hash.rpc_arg / "frozen_balances")
|
||||
end
|
||||
let () =
|
||||
let open Services_registration in
|
||||
register1 S.frozen_balances begin fun ctxt pkh () () ->
|
||||
Delegate.frozen_balances ctxt pkh
|
||||
end
|
||||
|
||||
let frozen_balances ctxt block pkh =
|
||||
RPC_context.make_call1 S.frozen_balances ctxt block pkh () ()
|
||||
|
||||
let baking_rights = Baker.I.baking_rights
|
||||
let endorsement_rights = Endorser.I.endorsement_rights
|
||||
|
@ -9,6 +9,9 @@
|
||||
|
||||
open Alpha_context
|
||||
|
||||
val frozen_balances : 'a #RPC_context.simple -> 'a -> Ed25519.Public_key_hash.t ->
|
||||
Delegate.frozen_balances shell_tzresult Lwt.t
|
||||
|
||||
module Baker : sig
|
||||
|
||||
val rights:
|
||||
|
@ -359,25 +359,38 @@ let has_frozen_balance ctxt delegate cycle =
|
||||
get_frozen_rewards ctxt contract cycle >>=? fun rewards ->
|
||||
return Tez_repr.(rewards <> zero)
|
||||
|
||||
let frozen_balance ctxt delegate =
|
||||
type frozen_balances = {
|
||||
deposit : Tez_repr.t ;
|
||||
fees : Tez_repr.t ;
|
||||
rewards : Tez_repr.t ;
|
||||
}
|
||||
|
||||
let frozen_balances ctxt delegate =
|
||||
let contract = Contract_repr.implicit_contract delegate in
|
||||
let balance = Ok Tez_repr.zero in
|
||||
Storage.Contract.Frozen_deposits.fold
|
||||
(ctxt, contract) ~init:balance
|
||||
~f:(fun _cycle amount acc ->
|
||||
Lwt.return acc >>=? fun acc ->
|
||||
Lwt.return (Tez_repr.(acc +? amount))) >>= fun balance ->
|
||||
Lwt.return (Tez_repr.(acc +? amount))) >>=? fun deposit ->
|
||||
Storage.Contract.Frozen_fees.fold
|
||||
(ctxt, contract) ~init:balance
|
||||
~f:(fun _cycle amount acc ->
|
||||
Lwt.return acc >>=? fun acc ->
|
||||
Lwt.return (Tez_repr.(acc +? amount))) >>= fun balance ->
|
||||
Lwt.return (Tez_repr.(acc +? amount))) >>=? fun fees ->
|
||||
Storage.Contract.Frozen_rewards.fold
|
||||
(ctxt, contract) ~init:balance
|
||||
~f:(fun _cycle amount acc ->
|
||||
Lwt.return acc >>=? fun acc ->
|
||||
Lwt.return (Tez_repr.(acc +? amount))) >>= fun balance ->
|
||||
Lwt.return balance
|
||||
Lwt.return (Tez_repr.(acc +? amount))) >>=? fun rewards ->
|
||||
return { deposit ; fees ; rewards }
|
||||
|
||||
let frozen_balance ctxt delegate =
|
||||
frozen_balances ctxt delegate >>=? fun { deposit ; fees ; rewards } ->
|
||||
Error_monad.fold_left_s (fun amount sum -> Lwt.return Tez_repr.(amount +? sum))
|
||||
Tez_repr.zero
|
||||
[deposit; fees; rewards] >>=
|
||||
Lwt.return
|
||||
|
||||
let full_balance ctxt delegate =
|
||||
let contract = Contract_repr.implicit_contract delegate in
|
||||
|
@ -90,6 +90,17 @@ val frozen_balance:
|
||||
Raw_context.t -> Signature.Public_key_hash.t ->
|
||||
Tez_repr.t tzresult Lwt.t
|
||||
|
||||
type frozen_balances = {
|
||||
deposit : Tez_repr.t ;
|
||||
fees : Tez_repr.t ;
|
||||
rewards : Tez_repr.t ;
|
||||
}
|
||||
|
||||
(** Returns the amount of frozen deposit, fees and rewards associated to a given key. *)
|
||||
val frozen_balances:
|
||||
Raw_context.t -> Ed25519.Public_key_hash.t ->
|
||||
frozen_balances tzresult Lwt.t
|
||||
|
||||
(** Returns the full 'balance' of the implicit contract associated to
|
||||
a given key, i.e. the sum of the spendable balance and of the
|
||||
frozen balance. *)
|
||||
|
Loading…
Reference in New Issue
Block a user