In Uniswap v4, a hook that does not intend to modify swap fees must return 0 as the fee override value, allowing the pool to apply its configured default LP fee.
The root cause of this issue is the incorrect use of LPFeeLibrary.OVERRIDE_FEE_FLAG. The hook applies the override flag even when no fee value is provided. When the override flag is set without any fee bits, Uniswap v4 interprets this as an explicit override to an LP fee of 0, rather than preserving the pool’s default fee.
Likelihood:
In Phase 3, it becomes systematic: the hook returns LPFeeLibrary.OVERRIDE_FEE_FLAG with no fee bits, so every swap applies an LP fee of 0. Occurs on all swaps where the penalty logic is not triggered, which represents the common execution path.
No special conditions, privileges, or sophistication are required—anyone swapping (or any router) can “exploit” it simply by routing trades through the pool.
Impact:
Direct and sustained financial harm: LPs receive zero LP fees on affected swaps, causing continuous revenue loss.
Amplification risk: routers/aggregators are economically incentivized to route volume through a zero-fee pool, increasing affected volume and compounding LP losses.
The Proof of Concept demonstrates that the hook returns only LPFeeLibrary.OVERRIDE_FEE_FLAG when no penalty is applied. In Uniswap v4, the presence of the override flag instructs the PoolManager to ignore the pool’s default LP fee and instead use the fee encoded in the lower bits of the return value. Since no fee bits are set, the resulting LP fee is interpreted as zero.
The mitigation ensures that the override flag is applied exclusivelywhen a non-zero penalty fee must be enforced. When no penalty applies, the hook returns 0, allowing the PoolManager to preserve the pool’s default LP fee. This prevents unintended fee overrides and restores the intended fee semantics across all phases.
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.