Oracle hook on Robinhood Chain
Uniswap v4 Hook Contract 0x553a2d30afe60d6df0badfa77f09ecb2c750a0cc on Robinhood Chain · Oracle
- Volume (24h)
- $0
- Value locked (TVL)
- $6.38K
- All-time volume
- $3.79M
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 22,644
What it does
An oracle-style hook that records price observations on each swap so that tick-based time-weighted data can be read by other contracts, with swap-time return deltas that let it take a share of swap flows.
How it works step by step
- Initializes an observation ring buffer for the pool on beforeInitialize
- Writes a new tick observation on swaps (beforeSwap and afterSwap)
- Exposes observe(uint32[]) and observationCardinality for time-weighted reads
- Uses return deltas to take or adjust currency flows during swaps
- Provides flush() to move accumulated balances out of the hook
- Tracks a pinned pool flag and hedge state
- Swap behaviour
- beforeSwap and afterSwap write observations to a ring buffer and may adjust deltas through return-delta permissions, with the hook able to take currency from the swap.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- Uses the pool's static fee; no fee-setting selector found in the decoded functions.
- Owner & admin controls
- No admin controls found in decoded selectors; a team() getter and upgradePool() selector appear only as external call targets, suggesting an external team or upgrade path may exist but cannot be confirmed without source.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize records the pool and initializes observation state; beforeSwap and afterSwap update and read the observation ring buffer; beforeSwapReturnDelta and afterSwapReturnDelta are enabled, so the hook can adjust swap deltas and take or settle currency via the manager.
Security & trust assessment
Risk level: medium (decoded bytecode, medium confidence).
Who controls it: Not determinable from bytecode alone; the presence of a team() getter and upgradePool() selector suggests a privileged party could alter the pool or hook logic if those selectors are functional.
Risk to user funds: The hook can take and transfer currency during swaps via return deltas and can flush balances, so it can hold or move trader and pool funds; the exact conditions are not verifiable without source.
Security findings
- [medium] Hook takes currency through return deltas: The hook enables beforeSwapReturnDelta and afterSwapReturnDelta and calls take(address,address,uint256) and transfer(address,uint256), so it can take currency from swaps and move tokens.
- [medium] Possible upgrade or privileged path: Selectors upgradePool() and team() appear in the bytecode without a verified source, which may indicate an upgrade or privileged path.
- [low] Access restriction on pool state: A NotCallable() error and a poolPinned() view exist, suggesting access restrictions on the hook's state transitions.
- [low] Tokens may accumulate in the hook: The hook holds balances and uses SafeERC20, with flush() and a balanceOf call, so tokens may accumulate in the hook contract.
Contract details
- Verified source
- No
- Bytecode size
- 8,409 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, oracle, return-delta
Pools using Oracle hook
- ETH / HEDGE (0.30% fee) — 24h volume $0, TVL $6.38K, 0 swaps today