Dynamic fee hook on BNB Chain
Uniswap v4 Hook Contract 0x3ed14aa03a8cabc16448e3e2db75942949f680c4 on BNB Chain · Dynamic fee
- Volume (24h)
- $0
- Value locked (TVL)
- <$0.01
- All-time volume
- $6.85M
- Pools using this hook
- 2
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 12,149
What it does
A dynamic-fee hook that adjusts swap fees by tier and can take a share of swap proceeds, with an owner who can change fee settings and pause the hook.
How it works step by step
- Applies a dynamic fee to swaps in beforeSwap based on stored fee tiers and a default fee
- Takes a portion of swap proceeds through afterSwap and the return delta mechanism
- Uses a take call to transfer the hook's share of the currency out of the pool
- Stores a per-address or per-pool fee mapping that can override the default fee
- Supports an owner-controlled pause that can stop hook actions
- Exposes getters for fee configuration, tier fees, owner and hook permissions
- Swap behaviour
- beforeSwap sets the swap fee from the stored fee configuration and afterSwap performs post-swap accounting, with afterSwapReturnDelta allowing the hook to keep part of the output currency.
- Liquidity behaviour
- No liquidity callbacks are enabled; the hook does not use beforeAddLiquidity or beforeRemoveLiquidity permissions.
- Fee behaviour
- Fees are read from a stored configuration (tier one, two and three fees, a default fee and a fee config getter) and the hook can override the swap fee in beforeSwap; the exact tier selection logic and fee units could not be fully decoded without source.
- Owner & admin controls
- Owner-gated configuration: an owner address (slot 3) can call setters that change fee tiers (tierOneFee, tierTwoFee, tierThreeFee, defaultFee) and a per-pool/address fee mapping, and a pause flag (slot 5, paused()) with ACTION_SET_PAUSED indicates the owner can pause hook operation. Ownership appears to be managed with an owner() getter, and an eip712Domain() suggests permit or signed-message support; upgradeability was not confirmed from the bytecode.
Enabled Uniswap v4 callbacks
beforeSwap, afterSwap, afterSwapReturnDelta
beforeSwap is used to compute and apply a dynamic fee for each swap; afterSwap runs post-swap accounting and fee handling; afterSwapReturnDelta lets the hook take a share of the swap output as a return delta, meaning it can keep part of the swapped currency.
Security & trust assessment
Risk level: medium (decoded bytecode, low confidence).
Who controls it: The owner can likely change fee tiers and the default fee, and can pause the hook, which could halt swaps on pools that depend on it or raise fees sharply; the exact maximum fee bounds were not verified.
Risk to user funds: The hook can take currency from swaps via the take call and afterSwapReturnDelta, so it can hold a portion of trader proceeds, and it can block swaps when paused; it does not appear to hold LP principal directly.
Security findings
- [medium] Hook takes a share of swap proceeds: The hook is enabled for afterSwapReturnDelta and the bytecode contains a take(address,address,uint256) call, so it can extract tokens from pool swaps.
- [medium] Owner-controlled pause: A paused() getter and an ACTION_SET_PAUSED selector show the owner can pause hook actions, which can block or alter swaps while paused.
- [medium] Adjustable fee levels: Owner-settable fee tiers and a default fee exist with no decoded upper bound check visible in this analysis, so an owner could raise fees materially.
- [info] Unverified source: No verified source is available, so function purposes and access checks are inferred from selectors and storage only.
Contract details
- Verified source
- No
- Bytecode size
- 12,293 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, pausable, return-delta
Pools using Dynamic fee hook
- BNB / USDT (Dynamic fee) — 24h volume $0, TVL <$0.01, 0 swaps today
- USDT / SPYB (Dynamic fee) — 24h volume $0, TVL <$0.01, 0 swaps today