FireHook on Robinhood Chain

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

Volume (24h)
$637
Value locked (TVL)
$18.25K
All-time volume
$9.82M
Pools using this hook
1
Swaps (24h)
20 (14 traders)
Total swaps
48,511

What it does

FireHook charges a 1% fee on buys and a 3% fee on sells in ETH, then credits sellers a claimable ETH rebate that lowers their effective sell fee toward 1% as their tokens age, with the remaining fees split between dividends and buyback-and-burn.

How it works step by step

  • Charges a 1% fee on the ETH leg of buys and a flat 3% fee on the ETH leg of sells via return deltas.
  • Reserves the maximum possible rebate portion of each sell fee in a segregated rebateReserve, read live from the token's sellFeeMinBps.
  • Matches sells to the token's seller attribution in the same transaction (or defers and expires unmatched pending sells) to credit ETH rebates to rebateOwed.
  • Splits routed fees 80% to a dividend ETH pool and 20% to a burn ETH pool, with the owner or keeper sweeping dividends and running buybackBurn to buy and burn FIRE.
  • Allows sellers to claim rebates with claimRebate, or the keeper to push them in batches with pushRebates.
  • Retains owner rescue and LP injection powers over hook-held assets.
Swap behaviour
On every swap the hook takes an ETH fee: buys pay 1% and sells pay 3% of the ETH leg, taken either in beforeSwap or afterSwap depending on which side is ETH. For sells, the hook records the attribution and may credit a rebate to the seller. Fees are routed to the dividend and burn balances.
Liquidity behaviour
No liquidity callbacks. Liquidity is only added or removed through owner-triggered injectLP and rescueLiquidity, which use hook-owned full-range positions.
Fee behaviour
Buy fee is 1% of the ETH leg (buyFeeBps=100). Sell fee is a flat 3% of the ETH leg taken at swap time (sellFeeFlatBps=300), after which the FIRE token attributes the seller's tranche-weighted rate and the difference (down to a 1% floor) is credited as a claimable ETH rebate. Fees are always taken in ETH via beforeSwap or afterSwap return deltas and then routed 80% to a dividend ETH pool (dividendShareBps=8000) and 20% to a buyback-burn pool; the reserved portion covering possible rebates is held in a segregated reserve.
Owner & admin controls
Owner (immutable, set at deployment) can call setFees to change buyFeeBps (max 1000), sellFeeFlatBps (max 1000) and dividendShareBps (max 10000) at any time; sweepDividends to send accumulated dividend ETH to any address; buybackBurn to swap the burn ETH to FIRE and send it to 0xdEaD with owner-chosen minFireOut; injectLP; rescueERC20, rescueETH, rescueERC6909 and rescueLiquidity to move any hook-held token, ETH or hook-owned pool position to the owner. Ownership is not transferable and there is no pause, proxy or upgrade mechanism found in the code.

Enabled Uniswap v4 callbacks

afterInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

afterInitialize records the pool key once. beforeSwap takes the fee in the specified currency when ETH is the specified side and records swap nonces. afterSwap takes the fee when ETH is the unspecified side, registers pending sell attributions and settles rebates. beforeSwapReturnDelta and afterSwapReturnDelta let the hook keep the fee amount out of the swap delta.

Security & trust assessment

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

Who controls it: The owner key controls fee rates (up to 10% buy and sell, and up to 100% dividend share), can sweep all accumulated dividend ETH and burn-pool ETH via buybackBurn, can rescue any ETH or token balance held by the hook including reserved rebate ETH, and can remove any hook-owned liquidity. The owner can therefore unilaterally drain funds that are owed to rebate holders and change fees instantly, with no timelock or multisig visible in the code.

Risk to user funds: The hook holds ETH from fees and reserved rebate funds, plus any FIRE tokens and hook-owned pool liquidity. The owner can withdraw all of it through rescue functions, sweepDividends and buybackBurn, so users with claimable rebates or pending dividend shares are exposed to owner action. Swap execution itself is not blocked by the owner.

Security findings

  • [high] Owner can drain rebate-backing funds: rescueETH and rescueERC20 transfer any hook balance to the owner with no reserve check, so accumulated rebateOwed and rebateReserve ETH held by the contract can be withdrawn by the owner, leaving claimable rebates unbacked.
  • [medium] Owner can change fees instantly: setFees allows sellFeeFlatBps and dividendShareBps to be changed at any time, and the owner can raise the buy and sell fees to 10% or redirect 100% of fees to the dividend pool, altering economics for holders without notice.
  • [medium] Owner-controlled sweep and buyback: sweepDividends and buybackBurn let the owner send dividend and burn ETH to arbitrary addresses or set minFireOut to zero, enabling extraction or sandwich-style value loss on the buyback.
  • [low] Owner can remove hook-owned liquidity: rescueLiquidity can remove any hook-owned position, and the owner receives the withdrawn tokens directly, so any seeded liquidity can be pulled at will.
  • [info] Dependence on companion token contract: The hook relies on the token contract for sellFeeMinBps and pullAttribution, and on pending sell matching in same-transaction handshakes; failures are caught with try/catch and fall back to a flat fee, so a faulty token could silently change rebates.

Contract details

Verified source
Yes (FireHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
13,840 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, moves-currency, return-delta, self-unlock

Pools using FireHook