Access control hook on Robinhood Chain

Uniswap v4 Hook Contract 0x867eaf5954e2a23510879fff218058fe048ae0cc on Robinhood Chain · Access control

Volume (24h)
$203
Value locked (TVL)
$0.23
All-time volume
$203
Pools using this hook
1
Swaps (24h)
9 (4 traders)
Total swaps
9

What it does

This hook runs custom accounting on swaps and can take or return currency through deltas, but from the decoded bytecode alone the direction of fee or price impact cannot be determined.

How it works step by step

  • Hook exposes a custom ERC20 and ERC6909-style claim system with name, symbol, decimals, balanceOf, transfer, approve and transferFrom functions
  • Implements a 'tin' and 'draw' mechanism: draw(uint8,uint256) mints or burns claims per tin index while the hook writes internal tin state
  • beforeSwap and afterSwap read and write per-tin accounting slots and can return a delta to the pool manager, so the hook can take or give currency during swaps
  • beforeInitialize writes a pool-level state record (slots 7 and 8) and the unlockCallback path uses the pool manager to settle currency
  • Owner-controlled via Ownable with renounceOwnership and transferOwnership selectors present
  • Only the pool manager can call the callback entry points (OnlyPoolManager error selector present); bearer-gated tin access uses NotBearer checks
Swap behaviour
beforeSwap and afterSwap both run and can return a non-zero delta (return-delta permissions enabled), letting the hook absorb or supply currency alongside the pool. Exact pricing direction and which trades pay more cannot be determined from the decoded bytecode alone.
Liquidity behaviour
No liquidity callbacks are enabled in the hook permissions, though the decoded selectors for beforeAddLiquidity and beforeRemoveLiquidity exist as pure stubs; liquidity is not gated or modified by the hook.
Fee behaviour
Uses the pool's static fee; no dynamic fee override is evident from the permissions. The hook may take a share through return deltas, which cannot be quantified from the bytecode.
Owner & admin controls
Ownable: owner can transfer or renounce ownership. Parameter setters were not clearly identified; draw() and tin-related writes are not obviously owner-gated from bytecode alone.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize sets initial pool state; beforeSwap can gate or adjust swaps and return a delta; afterSwap can return a delta after execution; beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to take or give currency beyond the pool's own accounting.

Security & trust assessment

Risk level: high, estimated (decoded bytecode, low confidence).

Who controls it: The owner can transfer or renounce ownership; if other privileged logic exists, the key holder could influence swap deltas or tin state.

Risk to user funds: The hook holds and moves currency through return deltas and take/settle calls during swaps and draws, so user and pool funds are exposed to its logic.

Security findings

  • [high] Return-delta currency movement: beforeSwapReturnDelta and afterSwapReturnDelta are enabled and the bytecode uses the pool manager take and settle paths, so the hook can move user or pool currency during swaps.
  • [medium] Owner privileges: Ownable selectors (transferOwnership, renounceOwnership) are present; the owner key controls hook administration, and whether it can alter fee or delta logic cannot be confirmed without source.
  • [medium] Self-unlock path: Heuristic tags indicate a self-unlock pattern via unlockCallback, which lets the hook initiate pool manager unlocks; misuse of this path could affect accounting.
  • [info] Unverified source: No verified source is available, so the exact conditions for delta returns and draw() access cannot be confirmed.

Contract details

Verified source
No
Bytecode size
9,361 bytes
Upgradeable proxy
No
Detected patterns
erc20, erc6909-claims, moves-currency, ownable, return-delta, self-unlock

Pools using Access control hook