# Claimers Cannot Claim Prizes When Last Tier Liquidity is 0, Preventing Winners from Receiving Their Prizes

Claimer contract reverts when last non-canary tier prize is 0, preventing bots from claiming prizes for winners.

- Payout: Contest reward
- Severity: medium
- Program: PoolTogether
- Credited: elhaj
- Disclosed: 2024-05-10
- Write-up quality: 6/10
- Original: https://github.com/sherlock-audit/2024-05-pooltogether-judging/issues/84
- Library page: https://bugbountylibrary.com/r/sherlock%3A2024-05-pooltogether%3AM-8
- Tags: domain:web3 impact:dos kind:contest platform:sherlock sev:medium tech:solidity technique:source-review vuln:dos

**Target:** Claimer contract claimPrizes function
**Root cause:** The fee computation calls wadLn on maximumFee which is the prize size of tier (numberOfTiers - 3). If that tier has zero liquidity, maximumFee is 0 and wadLn(0) reverts.
**Steps:**
1. Deploy PoolTogether with 4 tiers and some liquidity.
2. Award draw 5; canary tiers get fully claimed, leaving tier 2 (numberOfTiers-3) with 0 liquidity.
3. Award draw 6 with no new contributions; numberOfTiers increases to 5, tier 2 still has 0 liquidity.
4. Call `claimPrizes` with winners; `_computeFeePerClaim` calls `_computeDecayConstant` which calls `getTierPrizeSize(2)` returning 0.
5. `LinearVRGDALib.getMaximumPriceDeltaScale` calls `wadLn(0)` which reverts with 'UNDEFINED'.
**How found:** Code review of the fee computation path in Claimer.sol, noticing that maximumFee is derived from a tier that can have zero liquidity, leading to a revert in wadLn.
**Exploitation:** An attacker does not need to act; the condition arises naturally when the last non-canary tier has zero liquidity. Claimers cannot claim any prizes for that draw because the transaction reverts, so winners do not receive automatic payouts.
**Insight:** When a fee or reward calculation depends on a tier's liquidity, check for zero-value edge cases that can cause reverts in math libraries like wadLn.
