RenzoStability on Unichain

Uniswap v4 Hook Contract 0x09dea99d714a3a19378e3d80d1ad22ca46085080 on Unichain · Dynamic fee · Verified contract

Volume (24h)
$1.42
Value locked (TVL)
$5.77K
All-time volume
$86.68M
Pools using this hook
2
Swaps (24h)
1 (1 traders)
Total swaps
3,790

What it does

A peg-stability hook for the ETH/ezETH pool that charges traders a dynamic fee: near-minimum when a swap pushes price back toward the peg, and proportional to the depeg (capped at 1%) when it pushes price away.

How it works step by step

  • Reads the ezETH exchange rate from an immutable rate provider and converts it to a sqrtPriceX96 reference price.
  • Charges minFeeBps (0.01%) on swaps that move the pool toward the peg.
  • Charges a fee equal to the absolute percentage deviation from the peg on swaps moving away from it.
  • Clamps the dynamic fee between minFeeBps and maxFeeBps (1%).
  • Validates in afterInitialize that the pool uses a dynamic fee and the pair is native ETH / ezETH.
Swap behaviour
On every swap, beforeSwap computes the fee from the pool price versus the ezETH rate-provider reference price and overrides the LP fee for that swap.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Dynamic fee set per swap in beforeSwap via BaseOverrideFee. Swaps moving the pool toward the reference price (zeroForOne or pool price below reference) pay minFeeBps (100 pips = 0.01%). Otherwise the fee equals the absolute percentage deviation of pool price from the rate-provider reference price, clamped between minFeeBps and maxFeeBps (10_000 pips = 1%). The hook never takes a protocol cut, so fees accrue to LPs.
Owner & admin controls
No admin controls found. Fee bounds (minFeeBps, maxFeeBps), rateProvider and ezETH are immutable constructor parameters; there is no owner, pause or upgrade function in the verified source.

Enabled Uniswap v4 callbacks

afterInitialize, beforeSwap

afterInitialize validates the pool is dynamic-fee and that currency0 is native ETH and currency1 is ezETH. beforeSwap returns an override fee computed from the rate provider reference price. No other callbacks are enabled.

Security & trust assessment

Risk level: low (verified source, high confidence).

Who controls it: Nothing privileged. The rate provider is an immutable external dependency: whoever controls its getRate() output can steer the reference price and therefore the fees charged on every swap, but cannot directly move pool funds.

Risk to user funds: The hook holds no tokens and performs no return-delta or fee-taking actions; it only overrides the LP fee for swaps. It cannot block swaps by itself, though a reverting rate provider would cause swaps to revert.

Security findings

  • [medium] Dependency on external rate provider: The reference price is read from an immutable external rateProvider.getRate(). A manipulated or stale rate would shift the fee and the perceived peg, so the security of swaps depends on that oracle.
  • [low] Fee cap limits peg enforcement: Fee is capped at maxFeeBps (1%) and floored at minFeeBps, so a large depeg produces at most a 1% swap fee; arbitrage against a depegged pool is cheap relative to the depeg size.
  • [info] Immutable configuration: Pool and rate-provider configuration is fixed at deployment; a misconfigured rate provider or wrong ezETH address cannot be corrected without redeploying.

Contract details

Verified source
Yes (RenzoStability)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
9,396 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee

Pools using RenzoStability