recoveryAddress is the destination of CORRUPTED settlement: under bad-faith CORRUPTED the entire pool (staker principal + bonus) is transferred to it. To protect staker reliance, expiry is latched once via expiryLocked on the first stake and cannot change afterwards.
Unlike expiry, setRecoveryAddress() has no latch, timelock, or post-settlement gate. The owner (sponsor) can change recoveryAddress to any address at any time after stakers deposit — including after the outcome is flagged CORRUPTED and before the sweep executes — redirecting the entire pool to an arbitrary address. The recovery address stakers trusted at deposit time is no longer guaranteed.
Likelihood:
The owner key is compromised, or the sponsor changes their mind / turns malicious after receiving staker funds, and calls setRecoveryAddress before the CORRUPTED sweep
The pool enters bad-faith CORRUPTED, and claimCorrupted / sweepUnclaimedCorrupted transfer the whole pool to the current recoveryAddress
Impact:
Staker principal (under bad-faith CORRUPTED) and bonus are redirected to an address the owner picks after the fact, breaking the trust premise stakers had at deposit time
Inconsistent with the one-time expiry latch: both are parameters that determine staker fund outcomes, yet one is latched and the other is freely mutable
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.