The withdraw() function checks whether the registry is in an active-risk state or if riskWindowStart != 0. However, when active-risk staging is entered, riskWindowStart is permanently set to a non-zero value, which permanently locks and disables all future withdrawals.
Likelihood:
An active-risk state (UNDER_ATTACK or PROMOTION_REQUESTED) is observed on the registry during the pool's lifecycle.
The riskWindowStart variable is permanently flipped to a non-zero timestamp, permanently restricting the ability of stakers to withdraw their funds.
Impact:
Stakers' principal tokens become permanently locked in the contract once any active-risk state is reached, preventing them from exiting even if the pool ultimately survives or expires.
Funds can only be recovered through specific resolution outcomes rather than normal user-initiated withdrawals.
allow manual override riskWindowStart or adjust the riskWindowStart check to allow withdrawals under proper conditions
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
View preliminary resultsAppeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.