Likely dynamic fee hook on Monad
Uniswap v4 Hook Contract 0x17593dcae13639684fd6c3e2351e5e0568174080 on Monad · Dynamic fee
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $153.29K
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 2,799
What it does
A Uniswap v4 hook that sets a dynamic swap fee per pool in beforeSwap, with owner-managed pool configuration.
How it works step by step
- Enables the beforeSwap callback to set a fee for each swap
- Stores per-pool configuration in a mapping keyed by pool id
- Tracks the last fee applied to each pool and exposes it through a view function
- Restricts pool configuration changes to the owner
- Exposes standard hook interface functions for initialize and liquidity callbacks, which appear to pass through
- Swap behaviour
- beforeSwap runs on every swap and returns a fee determined from stored per-pool configuration and last fee; afterSwap is exposed but not enabled by the hook permissions.
- Liquidity behaviour
- Liquidity add and remove callbacks (beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity) are exposed but appear to be pass-through with no state changes identified.
- Fee behaviour
- beforeSwap computes and writes a per-pool fee (storage mapping keyed by pool id, read by lastFee) that is returned to the pool manager; the exact fee formula cannot be determined without source, so fee is likely dynamic and based on stored pool configuration and last fee.
- Owner & admin controls
- Ownable with two-step ownership: owner can transferOwnership and pendingOwner must call acceptOwnership. Owner-only pool configuration appears to be set via the 0x1681f46b function (writes slots 0 and 2 and pool config). No pause or upgrade mechanism identified.
Enabled Uniswap v4 callbacks
beforeSwap
beforeSwap is enabled and used to set the dynamic swap fee and track the last fee per pool; other callbacks are present in the interface but only beforeSwap is enabled by the hook address permissions.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, low confidence).
Who controls it: The owner appears to control per-pool configuration, which can change swap fees for all traders on configured pools; a malicious or compromised owner could raise fees substantially.
Risk to user funds: The hook does not appear to hold user tokens directly; it influences swap fees via beforeSwap and the pool manager settles funds, so exposure is indirect through fee changes rather than custody.
Security findings
- [medium] Owner can change pool parameters: Owner-controlled pool configuration (selector 0x1681f46b writes storage) can alter pool parameters and therefore fees paid by swappers.
- [low] Single privileged owner: The contract is Ownable with a two-step transfer; the owner key controls configuration, so key compromise would affect all configured pools.
- [info] Fee bounds unverified: Fee logic is not verified; the exact fee bounds and formula are unknown from bytecode alone, so the maximum fee a swapper could face is undetermined.
Contract details
- Verified source
- No
- Bytecode size
- 9,870 bytes
- Upgradeable proxy
- No
- Detected patterns
- ownable
Pools using Likely dynamic fee hook
- MON / USDC (0.01% fee) — 24h volume $0, TVL $0, 0 swaps today