Hook 0xc15b…6080 on Robinhood Chain
Uniswap v4 Hook Contract 0xc15b155a3094934171a15625d1a80aba267b6080 on Robinhood Chain · Other
- Volume (24h)
- $2.02M
- Value locked (TVL)
- $2.61M
- All-time volume
- $13.04M
- Pools using this hook
- 3
- Swaps (24h)
- 11,015 (1,255 traders)
- Total swaps
- 69,813
What it does
A Uniswap v4 hook that applies a time and session-aware dynamic fee on swaps for pools it is initialized on, with owner-managed pool pausing and fee parameters.
How it works step by step
- Validates pool initialization via beforeInitialize using an initializer mapping
- Computes a dynamic fee in beforeSwap based on session, holiday and UTC offset state
- Supports fee exemptions for specific addresses
- Allows owner or operator to pause individual pools or all pools
- Stores configurable closure windows and holiday calendars that influence trading behaviour
- Uses owner-controlled fee and parameter setters to tune the fee schedule
- Swap behaviour
- beforeSwap checks pause status and computes a session- and closure-aware fee or override for the swap; fee-exempt addresses are tracked separately.
- Liquidity behaviour
- No liquidity callbacks are enabled; beforeInitialize only validates pool registration/initializer and hook address conditions.
- Fee behaviour
- Per-pool fee state is stored in mappings (slot 0x0a keyed by uint256, slot 0x0b keyed by uint8) and fee parameters are set by owner or operator functions; beforeSwap likely returns a dynamic fee override through a time-based schedule (session, holiday and UTC offset logic), but exact fee formula cannot be confirmed without source. Fee-exempt addresses are tracked in a mapping. A MAX_FEE constant and FeeTooHigh error suggest fee caps exist.
- Owner & admin controls
- Owner (Ownable with transferOwnership and two-step acceptOwnership, renounceOwnership) can set operator, pause individual pools or all pools (setPaused, setAllPaused), manage fee-exempt addresses, initializers, holidays, closures, and fee/parameter setters (setDstMode, 0x3410396d, 0x897891ba, 0xbeba1fbf, 0x39721dbe, 0xb4f2396c). An operator address is also set via setOperator and has access to some privileged functions. No upgrade proxy pattern was identified.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap
beforeInitialize: checks initialization conditions for pools (initializer mapping and pool configuration storage). beforeSwap: computes a session/closure-aware fee or override for swaps, and can pause swaps via pool pause flags.
Security & trust assessment
Risk level: medium (decoded bytecode, low confidence).
Who controls it: The owner or operator can pause any pool or all pools, which would block swaps through the PoolIsPaused check, change fees and session/closure parameters that affect swap pricing, add or remove closures and holidays, and grant initializer rights. Ownership transfer is two-step, which reduces accidental transfer risk, but a single key controls everything.
Risk to user funds: The hook does not appear to hold tokens or take return deltas, so user funds are not custodied by the hook itself; the main exposure is that the owner or operator can pause pools or change fees that users pay on swaps, which may block or reprice trades.
Security findings
- [medium] Admin pause can block swaps: Owner or operator can call setAllPaused or setPaused, causing beforeSwap to revert with PoolIsPaused and freezing trading for affected pools.
- [medium] Privileged fee and schedule parameters: Owner and operator can change fee configuration (setDstMode, fee parameter setters, closure definitions) that directly determine the fee returned in beforeSwap, so the price charged to traders can be changed by a privileged key.
- [low] Centralized key control: Ownable pattern with a separate operator role; the hook depends on a single owner key for all configuration, with no timelock observed.
- [info] Unverified source: Analysis is from decoded bytecode only; function semantics, fee formula and any hidden token or fund custody could not be fully verified, so the risk classification is provisional.
Contract details
- Verified source
- No
- Bytecode size
- 14,352 bytes
- Upgradeable proxy
- No
- Detected patterns
- ownable
Pools using Hook 0xc15b…6080
- SPCX / USDG (Dynamic fee) — 24h volume $1.57M, TVL $761.47K, 9,206 swaps today
- USDG / BABA (Dynamic fee) — 24h volume $297.87K, TVL $960.85K, 1,000 swaps today
- USDG / SKHY (Dynamic fee) — 24h volume $154.30K, TVL $892.35K, 809 swaps today