diff --git a/src/proto_alpha/lib_protocol/alpha_context.ml b/src/proto_alpha/lib_protocol/alpha_context.ml index 035e94c78e8d8726023b90fb279807bd27a171ba..14ca813b7c46a1dd1bc5dc739b712d58cb6aa99d 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.ml +++ b/src/proto_alpha/lib_protocol/alpha_context.ml @@ -636,7 +636,18 @@ end module Token = Token module Cache = Cache_repr -module Unstake_requests = Unstake_requests_storage + +module Unstake_requests = struct + include Unstake_requests_storage + + module For_RPC = struct + let apply_slash_to_unstaked_unfinalizable ctxt ~delegate ~requests = + Unstake_requests_storage.For_RPC.apply_slash_to_unstaked_unfinalizable + ctxt + {delegate; requests} + end +end + module Unstaked_frozen_deposits = Unstaked_frozen_deposits_storage module Staking_pseudotokens = struct diff --git a/src/proto_alpha/lib_protocol/alpha_context.mli b/src/proto_alpha/lib_protocol/alpha_context.mli index 8eb5fea3da8ff0ec21dc98694e85477a23235bb9..3ee73cfd2d6928e18d7d79543f9eb879dab017d8 100644 --- a/src/proto_alpha/lib_protocol/alpha_context.mli +++ b/src/proto_alpha/lib_protocol/alpha_context.mli @@ -4921,6 +4921,14 @@ module Unstake_requests : sig Cycle.t -> Tez.t -> context tzresult Lwt.t + + module For_RPC : sig + val apply_slash_to_unstaked_unfinalizable : + context -> + delegate:public_key_hash -> + requests:(Cycle.t * Tez.t) list -> + (Cycle.t * Tez.t) list tzresult Lwt.t + end end module Unstaked_frozen_deposits : sig diff --git a/src/proto_alpha/lib_protocol/delegate_services.ml b/src/proto_alpha/lib_protocol/delegate_services.ml index 2613434a8e8e6e33dce8dce5bc5a30122a04028c..fb6372197967c6dfff71a26146ed9af1dd82d67e 100644 --- a/src/proto_alpha/lib_protocol/delegate_services.ml +++ b/src/proto_alpha/lib_protocol/delegate_services.ml @@ -543,8 +543,15 @@ let register () = List.map_es (fun cycle -> Unstaked_frozen_deposits.balance ctxt pkh cycle >>=? fun deposit -> - return {cycle; deposit}) - cycles) ; + return (cycle, deposit)) + cycles + >>=? fun requests -> + Alpha_context.Unstake_requests.For_RPC + .apply_slash_to_unstaked_unfinalizable + ctxt + ~delegate:pkh + ~requests + >>=? List.map_es (fun (cycle, deposit) -> return {cycle; deposit})) ; register1 ~chunked:false S.staking_balance (fun ctxt pkh () () -> check_delegate_registered ctxt pkh >>=? fun () -> Delegate.staking_balance ctxt pkh) ;