FeeHook on Robinhood Chain

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

Volume (24h)
$0
Value locked (TVL)
$76
All-time volume
$429.63K
Pools using this hook
1
Swaps (24h)
0 (0 traders)
Total swaps
3,766

What it does

Every swap on this pool pays a fixed total tax in the quote currency (creator share plus holder share plus 0.5% to the platform), charged as a skim on exact-input trades and as a surcharge on exact-output trades so the advertised rate holds in both directions.

How it works step by step

  • Taxes every swap on a single launch pool, always in the launch's quote currency, at a fixed total rate (creator share + dividend share + 0.5% platform share).
  • Routes the tax through beforeSwap when the quote is the specified currency, and through afterSwap via unspecified delta when it is not, normalising the surcharge on exact-output swaps so the advertised rate is what is charged.
  • Takes fees as ERC-6909 claims minted to the hook, then settles them on the next swap: creator and platform shares are held by the hook for later claiming, and the holder share is taken to the dividend sink.
  • Pushes dividends to a small batch of holders inside the swap via an external call to the sink, with batch size read from the launchpad and hard-clamped to 200.
  • Reverts a swap that fills partially in the beforeSwap route, to avoid charging a fee on quote that never moved.
Swap behaviour
Every swap where the quote is involved pays the launch tax, rounded down; exact-input trades have the fee skimmed from the input, exact-output trades pay a surcharge on top of the requested output so that the effective rate on the quote moved is the same. Trades in the non-quote direction where the quote is the unspecified currency pay the fee measured from the actual filled delta. Swaps that only partially fill in the beforeSwap route revert.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Total fee is dividendBps + creatorBps + 50 bps (PLATFORM_BPS), with the sum bounded between 0 and 1000 bps at construction. Fees are not charged as LP fees; they are taken as hook deltas on the quote currency. Creator and platform portions are accrued as claimable balances; holder portion is routed to the dividend sink.
Owner & admin controls
No owner, no pausing and no upgrade path are visible in the ABI or source. Immutable parameters (tax split, sink, creator, launchpad, pool id) are fixed at construction. The launchpad address is read live for the platform recipient and the holders-per-swap batch size; the launchpad's own owner can change the platform recipient and the batch size, which takes effect across every pool it opened. Claim functions are permissionless but only pay out to the fixed creator or to the platform recipient read from the launchpad.

Enabled Uniswap v4 callbacks

beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeSwap: takes the tax on swaps where the quote is the specified currency, mints ERC-6909 claims, and settles prior accrued claims to the sink before any new fee is minted. afterSwap: takes the tax on swaps where the quote is the unspecified currency, measured from the actual filled delta, and reverts partial fills in the beforeSwap route. beforeSwapReturnDelta and afterSwapReturnDelta: enable the hook to take quote currency from swappers through returned deltas.

Security & trust assessment

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

Who controls it: The launchpad owner (not visible from this hook) can change the platform recipient and holdersPerSwap, affecting where 0.5% of every swap goes and how much gas holders' distribution uses. The hook itself has no owner, so no one can change the tax rate, pause swaps, or upgrade the hook.

Risk to user funds: The hook holds ERC-6909 claims on the quote currency inside the pool manager and holds creator and platform fee balances as real quote tokens until claimed. A bug or malicious quote token could block settlement, and a changed launchpad recipient would redirect the platform share, but no path lets the hook transfer user liquidity or the launch token.

Security findings

  • [info] Hook takes tokens via return deltas on every swap: The hook mints ERC-6909 claims and returns positive deltas in both beforeSwap and afterSwap, so a fee is taken from every swap on the pool in the quote currency. This is the intended mechanism, but traders should understand the tax applies to all swaps on this pool.
  • [medium] Launchpad controls distribution size and platform recipient: holdersPerSwap and platformRecipient are read from the launchpad at swap or claim time, so the launchpad owner can change how many holders are paid per swap (clamped to 200 by the hook) and where the platform 0.5% share goes. The platform recipient is not capped by the hook.
  • [medium] Quote token failure can block the pool: The distribution call into the sink is not wrapped and has no gas ceiling; a quote token that consumes gas or reverts during transfer to holders can cause swaps to fail. The source notes the quote is chosen by the launcher, limiting blast radius to that pool.
  • [low] Partial-fill revert in beforeSwap route: When the quote is the specified currency, swaps that cannot fill fully revert with PartialFillWouldOvercharge to prevent overcharging. Traders can be unable to execute large or price-limited swaps on this route.
  • [info] Fee is one-swap lagged for settlement: Claims minted on swap N are only burned and sent to the sink at the start of swap N+1, so the holder dividend is delayed. Funds are held by the pool manager in the meantime.

Contract details

Verified source
Yes (FeeHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
11,050 bytes
Upgradeable proxy
No
Detected patterns
launchpad, return-delta, tax

Pools using FeeHook