Likely oracle hook on Monad
Uniswap v4 Hook Contract 0x839f713817ebe9b4a9986f4d111be07d1450c040 on Monad · Oracle
- Volume (24h)
- $0
- Value locked (TVL)
- <$0.01
- All-time volume
- <$0.01
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 30
What it does
A Uniswap v4 hook that runs after each swap to update internal state, with a random seed and generation pool id exposed as view functions.
How it works step by step
- Executes an afterSwap callback that only the PoolManager can invoke
- Writes a per-address uint256 mapping in storage on each swap
- Exposes randomSeed() as a view getter
- Exposes generationPoolId() as a view getter
- Exposes poolManager() to reference the Uniswap v4 PoolManager
- Swap behaviour
- afterSwap runs after each swap and updates storage keyed by address; it does not appear to alter swap amounts from the decoded selectors.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- Uses the pool's static fee; no fee logic is visible in the decoded selectors.
- Owner & admin controls
- No admin controls found.
Enabled Uniswap v4 callbacks
afterSwap
afterSwap: runs after each swap, updates a per-address storage mapping (slot 0) and possibly derives a random seed and generation pool id; the hook is gated to the PoolManager via an OnlyPoolManager error.
Security & trust assessment
Risk level: low, estimated (decoded bytecode, low confidence).
Who controls it: No owner or privileged role is visible in the decoded selectors, so no admin key was identified; the decoded surface is too small to rule out hidden privileged paths.
Risk to user funds: The afterSwap callback has no visible token transfer or return-delta selectors, so the decoded code does not show the hook holding or moving user funds; this is not confirmed without source.
Security findings
- [info] Callbacks restricted to PoolManager: The hook only exposes an afterSwap callback and view getters, and the bytecode contains an OnlyPoolManager error, indicating callbacks are restricted to the PoolManager.
- [info] State written on every swap: afterSwap writes to a mapping(address => uint256) at slot 0 on every swap, which suggests per-address accounting or state updates during swaps.
- [low] Possibly predictable randomness: randomSeed() and generationPoolId() suggest a pseudo-random or generation-based component, which may be predictable on-chain if derived from block data.
Contract details
- Verified source
- No
- Bytecode size
- 1,431 bytes
- Upgradeable proxy
- No
Pools using Likely oracle hook
- MON / WHOOKS (0.30% fee) — 24h volume $0, TVL <$0.01, 0 swaps today