Likely dynamic fee hook on Robinhood Chain
Uniswap v4 Hook Contract 0xc870936c3f12f86d31954d043b92e34cfe951080 on Robinhood Chain · Dynamic fee
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $24
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 21
What it does
Applies an owner-configurable default fee to swaps in pools that use this hook, with an owner-managed whitelist.
This read was written for the hook 0x3649…1080 on Robinhood Chain and reused here: the two run the same code.
How it works step by step
- afterInitialize runs when a pool using this hook is created.
- beforeSwap returns a fee override based on the stored defaultFee value.
- The owner sets defaultFee through setDefaultFee(uint24).
- A whitelist mapping, managed through setWhitelisted, is stored in slot 1.
- Ownership is stored in slot 0 and can be reassigned with setOwner.
- The hook references POOL_MANAGER, indicating it is designed to be called by the Uniswap v4 PoolManager.
- Swap behaviour
- beforeSwap is exposed and reads the stored default fee to set the swap fee for the pool.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- Fee is read from the stored defaultFee value (uint24 at slot 1, offset 20) and set by the owner through setDefaultFee; the hook appears to return a fee override for pools it is attached to, with the whitelist likely gating which callers or pools receive it.
- Owner & admin controls
- Owner (storage slot 0) can transfer ownership via setOwner(address), set the default fee via setDefaultFee(uint24) (slot 1, offset 20), and whitelist addresses via setWhitelisted(address) (slot 1, offset 0). No pausing or upgrade functions were found.
Enabled Uniswap v4 callbacks
afterInitialize, beforeSwap
afterInitialize is used to run setup logic when a pool is initialized, likely recording pool-specific state or validating the pool. beforeSwap is used to supply a swap-time fee override based on the stored default fee.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, medium confidence).
Who controls it: The owner can change the default fee to any uint24 value, which may include values that severely overcharge swappers, and can whitelist arbitrary addresses. The owner can also transfer ownership to any address at any time.
Risk to user funds: The hook does not appear to hold tokens or take them through return deltas. Its main exposure is the fee applied on swaps, which the owner can raise, so swappers could pay more than expected.
Security findings
- [medium] Owner-controlled fee without visible cap: setDefaultFee accepts any uint24 with no visible bound check in the decoded interface, so the owner could set the swap fee to extreme values.
- [medium] Single-key ownership: setOwner transfers control of fee and whitelist settings to a single address with no two-step or timelock visible in the selectors.
- [info] Whitelist gating unclear: The whitelist is controlled by the owner and may gate who can use the hook's fee behaviour; the exact gating logic cannot be confirmed without source.
Contract details
- Verified source
- No
- Bytecode size
- 2,604 bytes
- Upgradeable proxy
- No
- Detected patterns
- ownable
Pools using Likely dynamic fee hook
- USDG / TEST (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today