Likely fee sharing hook on Base
Uniswap v4 Hook Contract 0xa74173f9f6fc7195b5f885e94abaceea1ec20044 on Base · Fee sharing
- Volume (24h)
- $0
- Value locked (TVL)
- $13.45K
- All-time volume
- $64.32K
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 427
What it does
Takes a configurable cut of swap output after each trade and routes it to fee recipients, with liquidity callbacks that do not change positions.
How it works step by step
- Runs afterSwap on every swap in the pool.
- Computes a fee from the swap output based on stored fee configuration.
- Uses afterSwapReturnDelta to claim that fee from the pool's output currency.
- Forwards collected amounts to configured recipient addresses, possibly including a burn address.
- Exposes role-gated functions to update fee configuration.
- Liquidity and donate callbacks are present but appear to do nothing.
- Swap behaviour
- After each swap, afterSwap runs and uses afterSwapReturnDelta to take a share of the output currency, which is sent to configured recipients via take.
- Liquidity behaviour
- Liquidity add and remove callbacks (beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity) exist but appear to be stubs that do not alter liquidity; the hook does not seem to hold LP positions.
- Fee behaviour
- Fees are read from configuration storage (feeConfig) and applied in afterSwap, where the hook appears to take a portion of swap output via a return delta and forward it to one or more recipient addresses, possibly including a burn address; exact percentages and split logic could not be fully determined.
- Owner & admin controls
- An AccessControl role system (DEFAULT_ADMIN_ROLE, role-gated grantRole, revokeRole, renounceRole) controls a role mapping; the 0x9adc162f nonpayable function writes fee-config slots 1 through 7 (two uint256 values, addresses, a uint256 and an address, plus a uint8 mapping) and is likely the admin setter for fee configuration, though the caller check could not be confirmed from bytecode.
Enabled Uniswap v4 callbacks
afterSwap, afterSwapReturnDelta
afterSwap is used to compute and collect a fee from swap output after the swap executes. afterSwapReturnDelta lets the hook take a share of the output currency through a returned delta, which is how it moves funds to fee recipients.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, low confidence).
Who controls it: A role holder with the admin permission could reconfigure fee parameters and recipient addresses, redirecting a share of swap proceeds from pool participants to other addresses.
Risk to user funds: The hook can take a portion of swap output currency during afterSwap and forward it to configured addresses, so swappers receive less than the pool's pricing alone would give; it does not appear to custody LP principal.
Security findings
- [medium] Hook takes swap output via return delta: The hook uses afterSwapReturnDelta and calls take on the pool manager, so it can extract a share of each swap's output currency.
- [medium] Privileged fee and recipient configuration: Fee configuration is written by a nonpayable function guarded by an AccessControl role; if the admin key is compromised or unchecked, the fee and recipients can be changed.
- [low] No apparent emergency pause: The inferred bytecode shows uint8 mapping and selectors for role administration, but no pause or upgrade functions were decoded, so emergency controls appear absent.
- [info] Swaps can revert under certain inputs: Custom errors (SafeCastOverflow, Panic) and role-based reverts are present, suggesting the hook can revert swaps on bad inputs.
Contract details
- Verified source
- No
- Bytecode size
- 4,490 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, return-delta
Pools using Likely fee sharing hook
- ETH / COAI (0.30% fee) — 24h volume $0, TVL $13.45K, 0 swaps today