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
- ETH / ezETH (Dynamic fee) — 24h volume $1.42, TVL $5.77K, 1 swaps today
- ETH / ezETH (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today