Alpha: use recursive removal when possible
This commit is contained in:
parent
450d0dba4e
commit
3fcc6df975
@ -47,10 +47,11 @@ let pay_rewards_for_cycle c cycle =
|
|||||||
match c with
|
match c with
|
||||||
| Error _ -> Lwt.return c
|
| Error _ -> Lwt.return c
|
||||||
| Ok c ->
|
| Ok c ->
|
||||||
Storage.Rewards.Amount.remove (c, cycle) delegate >>= fun c ->
|
|
||||||
Contract_storage.credit c
|
Contract_storage.credit c
|
||||||
(Contract_repr.default_contract delegate)
|
(Contract_repr.default_contract delegate)
|
||||||
amount)
|
amount) >>=? fun c ->
|
||||||
|
Storage.Rewards.Amount.clear (c, cycle) >>= fun c ->
|
||||||
|
return c
|
||||||
|
|
||||||
let pay_due_rewards c =
|
let pay_due_rewards c =
|
||||||
let timestamp = Raw_context.current_timestamp c in
|
let timestamp = Raw_context.current_timestamp c in
|
||||||
|
@ -18,15 +18,9 @@ let get_contract_delegate c contract =
|
|||||||
| None -> Storage.Contract.Delegate.get_option c contract
|
| None -> Storage.Contract.Delegate.get_option c contract
|
||||||
|
|
||||||
let clear_cycle c cycle =
|
let clear_cycle c cycle =
|
||||||
Storage.Roll.Last_for_cycle.get c cycle >>=? fun last ->
|
|
||||||
Storage.Roll.Last_for_cycle.delete c cycle >>=? fun c ->
|
Storage.Roll.Last_for_cycle.delete c cycle >>=? fun c ->
|
||||||
let rec loop c roll =
|
Storage.Roll.Owner_for_cycle.clear (c, cycle) >>= fun c ->
|
||||||
if Roll_repr.(roll = last) then
|
return c
|
||||||
return c
|
|
||||||
else
|
|
||||||
Storage.Roll.Owner_for_cycle.delete (c, cycle) roll >>=? fun c ->
|
|
||||||
loop c (Roll_repr.succ roll) in
|
|
||||||
loop c Roll_repr.first
|
|
||||||
|
|
||||||
let fold ctxt ~f init =
|
let fold ctxt ~f init =
|
||||||
Storage.Roll.Next.get ctxt >>=? fun last ->
|
Storage.Roll.Next.get ctxt >>=? fun last ->
|
||||||
|
Loading…
Reference in New Issue
Block a user