No party suffers a fund loss. The exiting staker forfeits all bonus, and remaining stakers' shares increase proportionally. Abstract coverage quality is reduced but no material harm occurs.
withdraw() is permitted while the registry is in pre-attack states and blocks once active-risk materializes (UNDER_ATTACK onward), enforced by the one-way riskWindowStart latch (I-9).
The withdraw gate at line 297 allows exit when state == ATTACK_REQUESTED. An informed staker who detects an attack has been requested can withdraw their full principal before the registry escalates to UNDER_ATTACK — forfeiting bonus but escaping with principal. Remaining stakers' bonus shares increase proportionally. No party suffers fund loss.
Likelihood:
Impact:
Forge output:
This is a documented design trade-off (DESIGN.md §9). Removing ATTACK_REQUESTED from the allowed withdraw states would close the exit window earlier, preventing stakers from escaping with principal once an attack is requested. The cost is reduced flexibility for stakers during the pre-UNDER_ATTACK phase.
Remove ATTACK_REQUESTED from the allowed set.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.