AnchorHook on Robinhood Chain

Uniswap v4 Hook Contract 0xf40e58b64b0982571ab67976e731d71bacca90c0 on Robinhood Chain · Dynamic fee · Verified contract

Volume (24h)
$373.76K
Value locked (TVL)
$504.88K
All-time volume
$638.64K
Pools using this hook
1
Swaps (24h)
3,670 (240 traders)
Total swaps
5,200

What it does

A roleless hook for the USDG anchor pool that charges a linearly decaying launch fee on swaps, settles to a fixed resting fee, and records a time-weighted tick oracle.

How it works step by step

  • Pins the pool at initialization to four constructor-committed fields and requires a dynamic-fee pool
  • Charges a linearly interpolated launch fee on every swap from a fixed table
  • Falls back permanently to the table's last point (0.30%) once the taper window ends
  • Permissionlessly sets the pool's resting fee via settleResting once, after the window closes
  • Records a time-weighted tick history per swap and exposes consult(secondsAgo) as a TWAP
  • Holds no funds, takes no fee and has no liquidity callbacks, so exits are never blocked
Swap behaviour
beforeSwap returns the current taper fee with the override flag (decaying during the window, then the 0.30% resting fee), takes no fee and returns zero delta. afterSwap records tick observations for the TWAP and never reverts.
Liquidity behaviour
No liquidity callbacks. The address carries no before/after remove or add liquidity flags, so the PoolManager never calls the hook on liquidity changes and withdrawals cannot be blocked by it.
Fee behaviour
The pool is dynamic-fee. beforeSwap returns currentTaperFee() with the override flag on every swap, so the fee linearly interpolates down a constructor-fixed table during the window and then rests at the table's last point (0.30%, never zero). The hook takes no fee and returns zero delta; LP fees accrue to positions.
Owner & admin controls
No owner, pauser, setter or role exists after deployment. Constructor immutables fix the pool (currencies, tick spacing), treasury, PoolManager, launch start and taper table. The only state changer is settleResting, which is permissionless, one-shot, callable only after the taper window, and writes the fixed restingFee to the pool. Contract is not upgradeable.

Enabled Uniswap v4 callbacks

afterInitialize, beforeSwap, afterSwap

afterInitialize: pins the pool (currencies, tick spacing, DYNAMIC fee flag) to the constructor commitment and seeds the oracle observation; beforeSwap: returns the taper fee override (view function); afterSwap: appends time-weighted tick observations for the consult() TWAP and never reverts.

Security & trust assessment

Risk level: low (verified source, high confidence).

Who controls it: No privileged key exists. Nothing can pause swaps, change fees, redirect funds or upgrade the hook. Parameters are fixed at deployment, so any mistake requires deploying a new pool and hook.

Risk to user funds: The hook holds no funds and returns zero BeforeSwapDelta, so it cannot hold, move or block user or pool funds. It cannot withdraw liquidity or block exits because it has no liquidity callbacks.

Security findings

  • [info] Taper parameters fixed at deployment: The fee table and launch start are constructor immutables. Launch start is bounded to a 5 minute backdate and 7 day lead, but a launch dated within the window in a wrong way still permanently sets the taper shape.
  • [info] Swap path cannot be blocked by the hook: beforeSwap is view and only reads taper state and the current time, so it cannot revert or block swaps. afterSwap is written never to revert, reducing the chance a swap is bricked.
  • [low] Oracle relies on PoolManager storage layout: The oracle reads the current tick from PoolManager storage via extsload at a fixed slot layout. This depends on v4-core storage layout, which is verified in source comments but is an external dependency.
  • [info] TWAP unavailable at launch: consult() returns WindowNotAvailable until enough history exists, so the TWAP is unusable during the earliest period. Consumers must handle the revert rather than read a default value.

Contract details

Verified source
Yes (AnchorHook)
Compiler
solc 0.8.28+commit.7893614a
Bytecode size
5,163 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, launchpad

Pools using AnchorHook