Access control hook on Robinhood Chain
Uniswap v4 Hook Contract 0x1a41c0ff55ca2a669cd16bb2f0907c00eb0b9040 on Robinhood Chain · Access control
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 0
What it does
This hook tracks initialized pools and runs watch-related bookkeeping after swaps, without changing the fee or moving funds, so trades pay the pool's normal fee.
How it works step by step
- Registers pools at initialization by storing the pool key and pool id in indexed mappings and an array (afterInitialize writes slots 0, 1, 2)
- Exposes a watch/unwatch mechanism keyed by uint256 ids, capped by a MAX_WATCH constant, with AlreadyWatched and JobClosed errors
- Runs an afterSwap callback that updates per-watch state (triggered flags and a uint64 timestamp-like value) and reads stored int24 tick arrays
- Reads an external job registry through getJob(uint256) and extsload, suggesting it coordinates work tied to watched pools or keeper jobs
- Implements liquidity and donate callbacks as view stubs that do not change state, and a CHECK_GAS helper
- Swap behaviour
- afterSwap is enabled and writes watch state (slots 3, 4, 5, 6) for watched job ids; it does not return a fee or a balance delta, so swaps are not repriced or redirected by this hook.
- Liquidity behaviour
- No liquidity callbacks mutate state; beforeAddLiquidity, beforeRemoveLiquidity, afterAddLiquidity and afterRemoveLiquidity are view functions and only gate nothing beyond the pool's normal flow.
- Fee behaviour
- Uses the pool's static fee; no fee override or fee sharing is performed by this hook.
- Owner & admin controls
- No owner, pause or upgrade functions were identified in the dispatched selectors; watch and unwatch are nonpayable and their access control cannot be confirmed from bytecode alone.
Enabled Uniswap v4 callbacks
afterInitialize, afterSwap
afterInitialize records newly initialized pools in storage; afterSwap updates watch-related state after each swap.
Security & trust assessment
Risk level: low, estimated (decoded bytecode, low confidence).
Who controls it: Limited to whatever privileged role controls watch registration, if any exists; no pause or fee-setting authority was identified.
Risk to user funds: The hook returns no deltas and takes no tokens, so it does not hold or move user or pool funds; it could only add cost to swaps via reverts in afterSwap.
Security findings
- [info] No source available: The analysis relies on decoded bytecode and selectors, so access control on watch and unwatch and the exact meaning of the stored job values cannot be verified.
- [low] Unrestricted watch registration possible: watch(uint256) and unwatch(uint256) are nonpayable and their caller checks are not visible in the decoded selectors; if unguarded, arbitrary callers could toggle watch state for ids.
- [low] External registry dependency: The hook calls getJob and extsload on an external registry, so behaviour depends on that contract and it could revert swaps if the call fails.
Contract details
- Verified source
- No
- Bytecode size
- 7,771 bytes
- Upgradeable proxy
- No
Pools using Access control hook
- ETH / USDG (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today