The k=2 bonus interval is artificially widened by the owner before any staker commits, inflating future depositors' bonus shares at the expense of bonus contributors. Self-limiting: the first stake permanently locks the expiry.
expiry is owner-mutable until the first stake, after which expiryLocked engages and the deadline is permanently frozen. This protects stakers who committed to a specific term. The k=2 bonus interval is (T - riskWindowStart)².
Between _markRiskWindowStart (which caps at expiry) and the first stake, the owner can extend expiry. This widens the k=2 bonus interval for future depositors, since T (the terminal observation) is also capped at expiry. A staker depositing after the extension earns a larger bonus share than the original pool parameters specified. Self-limiting: the first stake() call locks expiry.
Likelihood:
Impact:
Runnable Proof of Concept
Forge output:
Lock expiry when the risk window opens, not just on the first stake. This prevents the owner from extending the deadline after riskWindowStart has been sealed, keeping the k=2 bonus interval consistent with the pool parameters that were visible when the risk window was first observed.
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.