ZiaFeeHook on Robinhood Chain

Uniswap v4 Hook Contract 0x64e9ae1066c47ac4a3cc0a5bd7b135908590e088 on Robinhood Chain · Dynamic fee · Verified contract

Volume (24h)
$211.48K
Value locked (TVL)
$502.92K
All-time volume
$19.32M
Pools using this hook
22
Swaps (24h)
5,324 (1,375 traders)
Total swaps
274,939

What it does

Applies a keeper-adjustable LP fee (default 0.25%, max 1%) on swaps in dynamic-fee pools and skims a small bounded hook fee (default 0.05%, max 0.25%) from each swap, which accrues to an immutable treasury.

How it works step by step

  • Requires pools to use the dynamic-fee flag at initialization and records default config per pool.
  • Returns a keeper-set LP fee override (capped at 1.00%) on every swap.
  • Charges a hook fee (capped at 0.25%) on the specified amount of each swap via a beforeSwap return delta.
  • Holds the hook fee as ERC-6909 claims that anyone can redeem to the immutable treasury through collectFees.
  • Exposes keeper-only setters for per-pool LP and hook fees with hard caps and events.
Swap behaviour
beforeSwap sets the per-swap LP fee override and, when the hook fee is nonzero, takes a fee of the specified amount in the specified currency as ERC-6909 claims, returning it as a positive specified delta.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Each pool carries a keeper-settable LP fee override (default 0.25%, capped at 1.00%) returned from beforeSwap with the override flag. A hook fee (default 0.05% of the specified swap amount, capped at 0.25%) is taken in the specified currency as an ERC-6909 claim owned by the hook; anyone can redeem those claims to the immutable treasury via collectFees.
Owner & admin controls
No owner, proxy, upgrade path or pause. Immutable keeper can call setLpFee (max 1.00%, bounded) and setHookFee (max 0.25%, bounded) per initialized pool. Treasury is immutable and is the only redemption destination for accrued fees. collectFees is permissionless but fixed to treasury.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, beforeSwapReturnDelta

beforeInitialize: requires dynamic-fee pools and registers per-pool config. beforeSwap: applies the LP fee override and takes the hook fee through a positive beforeSwap specified delta. beforeSwapReturnDelta: enables the hook to take a portion of the swap's specified amount.

Security & trust assessment

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

Who controls it: The keeper can raise LP fees on any pool up to 1.00% and the hook fee up to 0.25% instantly, affecting swap pricing for all users in those pools, but cannot redirect funds, pause swaps, or change the treasury. Keeper key compromise would limit damage to these fee caps.

Risk to user funds: The hook does not custody LP principal; it holds only ERC-6909 claims accrued from its own hook fee. It cannot block swaps or liquidity actions (it has no liquidity callbacks and no pause). Users pay the bounded LP and hook fees on swaps.

Security findings

  • [info] Swap-level fee extraction via return delta: The hook takes a fee on the specified side of every swap via a beforeSwap return delta, so it can divert up to 0.25% of swap amounts to its claim balance.
  • [low] Keeper can change fees instantly within caps: setLpFee and setHookFee are instantly effective with no timelock, so the keeper can change swap costs for live pools, capped at 1.00% LP and 0.25% hook fee.
  • [info] Permissionless claim redemption to fixed treasury: collectFees is permissionless but its destination is fixed to the immutable treasury, and it reverts on reentrancy via the _collecting flag.
  • [info] No owner, proxy or pause: Pool fee configuration is set at initialization and no owner or upgrade path exists; the contract holds no user principal beyond transient claims.

Contract details

Verified source
Yes (ZiaFeeHook)
Compiler
solc 0.8.30+commit.73712a01
Bytecode size
7,853 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, erc6909-claims, moves-currency, return-delta, self-unlock

Pools using ZiaFeeHook