diff --git a/src/proto_alpha/lib_protocol/unstake_requests_storage.ml b/src/proto_alpha/lib_protocol/unstake_requests_storage.ml index 7f2a1e41e2e630c25ee3ae37d51bd02970a5247d..0cc73b3c19bb22d29b5bd703ebea45297c88ac5a 100644 --- a/src/proto_alpha/lib_protocol/unstake_requests_storage.ml +++ b/src/proto_alpha/lib_protocol/unstake_requests_storage.ml @@ -97,15 +97,14 @@ let prepare_finalize_unstake ctxt contract = let max_slashing_period = Constants_storage.max_slashing_period ctxt in let preserved_plus_slashing = preserved_cycles + max_slashing_period in let current_cycle = (Raw_context.current_level ctxt).cycle in - match Cycle_repr.sub current_cycle preserved_plus_slashing with - | None (* no finalizable cycle *) -> return None - | Some greatest_finalizable_cycle -> ( - let* requests_opt = - Storage.Contract.Unstake_requests.find ctxt contract - in - match requests_opt with - | None | Some {delegate = _; requests = []} -> return None - | Some {delegate; requests} -> + let* requests_opt = Storage.Contract.Unstake_requests.find ctxt contract in + match requests_opt with + | None | Some {delegate = _; requests = []} -> return_none + | Some {delegate; requests} -> ( + match Cycle_repr.sub current_cycle preserved_plus_slashing with + | None (* no finalizable cycle *) -> + return_some {finalizable = []; unfinalizable = {delegate; requests}} + | Some greatest_finalizable_cycle -> let* slashing_history_opt = Storage.Contract.Slashed_deposits.find ctxt diff --git a/src/proto_alpha/lib_protocol/unstake_requests_storage.mli b/src/proto_alpha/lib_protocol/unstake_requests_storage.mli index 5d75ee4a97f4b9faf95d04b0e271c01f9d3ecf64..3f6317b942a640d2efd59b7e03a42f1686fd61d8 100644 --- a/src/proto_alpha/lib_protocol/unstake_requests_storage.mli +++ b/src/proto_alpha/lib_protocol/unstake_requests_storage.mli @@ -50,8 +50,7 @@ val prepared_finalize_unstake_encoding : the [finalizable_field] as well as the remaining unfinalizable requests that should be kept in the storage in [unfinalizable]. - It returns [None] if there are no finalizable unstake requests (regardless - of whether there are unstake requests at all). *) + It returns [None] if there are no unstake requests. *) val prepare_finalize_unstake : Raw_context.t -> Contract_repr.t ->