Confidence Pools intentionally allow deposits during UNDER_ATTACK because late entrants are expected to have very little economic upside. The design rationale is that the k=2 time-weighted bonus formula should crush late entrants to a near-zero bonus share, so allowing UNDER_ATTACK deposits should not create a meaningful late-join advantage.
The issue is that this property fails when the registry has already entered UNDER_ATTACK but the pool has not locally observed it yet. A late staker can be the first caller to touch the pool. Their stake() call seals riskWindowStart at their own entry time.
The pool resets already-staked capital to that timestamp, then records the late staker in the same block. This makes the earlier staker and the late entrant effectively share the same bonus start time, even though the earlier staker was the only one exposed during the unobserved active-risk period.
As a result, the late staker receives a large bonus share from earlier risk-bearers. In the PoC, Bob joins 5 days late and receives about 50% of the bonus instead of less than 5%.
This contradicts the stated design reason for allowing UNDER_ATTACK deposits: late entrants are not always crushed to near-zero reward and can get a real late-join advantage.
Likelihood: Medium
This occurs when the registry enters UNDER_ATTACK and no pool function or pokeRiskWindow() is called immediately to seal riskWindowStart.
The attacker only needs normal staker permissions and can monitor the public registry for the UNDER_ATTACK transition.
Impact: Low
Earlier honest stakers lose sponsor-funded bonus that should accrue to them for bearing the unobserved active-risk period alone.
The intended economic property for UNDER_ATTACK deposits fails, because a late entrant can receive a material bonus share instead of a near-zero reward.
Add this test file:
test/poc/LateFirstObserverBonusTheft.t.sol
Run:
Observed result:
Attack pool: Bob receives about 50% of the bonus.
Control pool: Bob receives less than 5% of the bonus.
The difference comes from Alice, who bore the first 5 days of active risk alone.
The first deposit that observes active risk should not be allowed to join the pre-seal cohort.
If deposits during UNDER_ATTACK must remain allowed, the first deposit that observes active risk should be treated as post-seal capital for bonus weighting instead of being grouped with earlier stakers.
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.