Token hook on Robinhood Chain

Uniswap v4 Hook Contract 0x1e19eb6655688763500504271612a2bf208020cc on Robinhood Chain · Token

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 combines an ERC20 token with a toll that is taken on swaps through return deltas, with the toll rate bounded by owner-set limits, though which trades pay more or less could not be confirmed from the decoded bytecode.

How it works step by step

  • Implements an ERC20 token (name, symbol, decimals, totalSupply, transfer, approve, transferFrom) that is also a Uniswap v4 hook
  • Uses beforeSwap and afterSwap with return deltas, so it can take a toll (tax) on swaps and credit amounts back to the pool or a keeper
  • Tracks a toll rate bounded by TOLL_MIN_BPS and TOLL_MAX_BPS and accumulates tollCollected
  • Uses an unlockCallback and take() on the PoolManager to move currency out of the pool when fees or credits are settled
  • Has an empty(uint8,uint256) function and keeperOf(uint8) mapping, suggesting role-based keepers that receive a share of the toll
  • Initializes its own pool configuration (tick spacing, fee, currencies) in beforeInitialize
Swap behaviour
beforeSwap and afterSwap are both enabled with return deltas, so the hook can adjust the swap's delta and take a toll on some swaps; the exact direction and which trades pay more or less cannot be determined from decoded bytecode alone.
Liquidity behaviour
beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity and afterRemoveLiquidity selectors exist as view functions in the dispatch table, but the hook permissions do not enable these callbacks, so no liquidity callbacks are expected to run.
Fee behaviour
Toll rate is set via tollBps within TOLL_MIN_BPS to TOLL_MAX_BPS and credits via creditsBps; the hook appears to take a fee through return deltas rather than the pool's static fee, but the precise computation cannot be confirmed without source.
Owner & admin controls
Ownable: owner can transferOwnership and renounceOwnership; owner-related functions and keeper configuration (keeperOf, empty) suggest the owner or keepers can influence parameters, but exact permissions cannot be confirmed from bytecode.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize sets the pool's stored configuration; beforeSwap applies the toll through a before-swap return delta; afterSwap settles credits and tracks collected toll through an after-swap return delta.

Security & trust assessment

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

Who controls it: The owner controls ownership transfer and likely the toll rate and keeper configuration; a compromised owner key could raise tolls up to the maximum bound or redirect collected toll.

Risk to user funds: The hook can take a share of swap value through return deltas and withdraw currency from the pool via take(), so traders and LPs pay toll on affected swaps and collected amounts are controlled by the hook logic.

Security findings

  • [high] Return-delta fee skimming: beforeSwapReturnDelta and afterSwapReturnDelta are enabled, so the hook can take a share of every swap through the delta, which directly changes what traders receive.
  • [medium] Owner-adjustable toll rate: Ownable plus tollBps and TOLL_MIN/MAX bounds indicate an owner can change the toll within a range; the bounds limit but do not remove the owner's ability to raise the tax on users.
  • [medium] Currency movement via take(): The hook calls take() on the PoolManager to move tokens, so it can withdraw pool currency to itself or keepers.
  • [medium] Unverified source: No verified source is available, so exact fee math, keeper payouts and admin powers cannot be fully audited.

Contract details

Verified source
No
Bytecode size
8,100 bytes
Upgradeable proxy
No
Detected patterns
erc20, moves-currency, ownable, return-delta, self-unlock, tax

Pools using Token hook