# Pool’s gulped emissions could be lost if a reserve has no supply

Blend pool gulp_emissions distributes emissions to reserves with zero supply, where they can never be claimed, permanently losing rewards.

- Payout: Contest reward
- Severity: medium
- Program: Blend
- Credited: 0xAlix2
- Disclosed: 2025-08-13
- Write-up quality: 6/10
- Original: https://code4rena.com/reports/2025-02-blend-v2-audit-certora-formal-verification#m-07
- Library page: https://bugbountylibrary.com/r/c4%3A2025-02-blend-v2-audit-certora-formal-verification%3AM-07
- Tags: domain:web3 impact:funds-loss kind:contest platform:code4rena sev:medium tech:solidity technique:source-review vuln:accounting-error vuln:reward-distribution

**Target:** Soroban lending pool emissions manager (do_gulp_emissions)
**Root cause:** do_gulp_emissions distributes emissions to reserves without checking supply>0, while update_emission_data/update_user_emissions skip accrual when supply/balance is 0, so the reserve's index never advances and its share is unclaimable.
**Steps:**
1. Configure pool_emissions to include a reserve token id (e.g. d_supply reserve) with eps share.
2. Call `do_gulp_emissions(e, new_emissions)` while that reserve has supply>0 so index/eps initialize.
3. Advance time; set reserve d_supply=0 via repay/withdraw.
4. Call `do_gulp_emissions` again: eps and last_time update but index stays 0 for the zero-supply reserve.
5. Later depositors get user_data.index set to current index, so delta_index=0 and the lost emissions are never claimable.
**How found:** Code review of do_gulp_emissions vs update_emission_data/update_user_emissions, noticing the supply>0 guard exists only in the claim path, not the distribution path; confirmed with a unit test asserting index stays 0 while eps updates.
**Exploitation:** No attacker profit; protocol-level accounting flaw where emissions allocated to a zero-supply reserve are permanently stranded and cannot be claimed by any user.
**Insight:** When auditing reward/emission accounting, compare the guard conditions in the distribution path against the accrual path: a supply>0 check on claim but not on distribution strands rewards in zero-balance buckets.
