Token hook on Robinhood Chain

Uniswap v4 Hook Contract 0xc5648b8250f2b3cb3581b19936ee783e238b78cc on Robinhood Chain · Token

Volume (24h)
$25.31K
Value locked (TVL)
$3.45K
All-time volume
$25.31K
Pools using this hook
1
Swaps (24h)
255 (111 traders)
Total swaps
255

What it does

This hook charges a controller-adjustable swap tax (capped by an unverified maximum) on trades in its token pool and routes the collected ETH to a vault and recipients, while LPs can always withdraw freely.

How it works step by step

  • Charges a tax on swaps in a single registered token/ETH pool, with a hard-coded maximum tax rate (MAX_TAX_BPS) whose exact value cannot be read from bytecode alone.
  • Tracks buy flow, sell flow, last buy time and price ticks over a rolling time window to adjust its behaviour (labelled 'levers').
  • Collects taxed ETH and forwards it to a vault and controller-managed addresses through flush and recycle functions.
  • Checks liquidity additions in its pool. It is never called on withdrawals, so LPs can always remove liquidity.
Swap behaviour
On each swap the hook can take a tax from the swap amounts through return deltas and record buy and sell flow and tick data. Tax rates come from two stored rate settings ('levers') bounded by a maximum constant whose value is not visible in the decoded data.
Liquidity behaviour
A beforeAddLiquidity check runs on deposits and may restrict who can add liquidity. Remove-liquidity callbacks are disabled, so LPs can always withdraw freely.
Fee behaviour
A swap tax in basis points is taken by the hook, capped by MAX_TAX_BPS (exact cap unknown). It accumulates as taxed ETH and is sent to a vault, controller-managed recipients, or recycled.
Owner & admin controls
The owner binds the token, registers the pool and sets a controller. The controller can set the two tax rates (apparently bounded by MAX_TAX_BPS), manage a recipient address list, and trigger flush/recycle of collected tax. The exact cap is unverified.

Enabled Uniswap v4 callbacks

beforeInitialize, afterInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize/afterInitialize: restrict and set up the single registered pool and record the starting tick; beforeAddLiquidity: validates or gates LP deposits; beforeSwap/afterSwap: compute and apply the tax and track flow; beforeSwapReturnDelta/afterSwapReturnDelta: deduct the tax from swap amounts.

Security & trust assessment

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

Who controls it: The owner and a controller address manage tax rates, recipients and fund routing. At worst they can raise the tax up to the unverified MAX_TAX_BPS cap and direct the collected tax.

Risk to user funds: The hook can deduct a tax from swap amounts up to an unverified maximum and holds the collected ETH until it is flushed to the vault or recipients. LP principal cannot be locked or taken.

Security findings

  • [medium] Adjustable swap tax: The controller can change two tax rate values. A MAX_TAX_BPS constant exists, but its value cannot be confirmed from unverified bytecode.
  • [low] Deposit gating: beforeAddLiquidity may restrict who can add liquidity. Withdrawals are never touched by the hook.
  • [info] LP withdrawals unrestricted: Remove-liquidity callbacks are disabled and the contract is not a proxy.

Contract details

Verified source
No
Bytecode size
13,215 bytes
Upgradeable proxy
No
Detected patterns
erc20, liquidity-management, moves-currency, ownable, return-delta, self-unlock, tax

Pools using Token hook