GenieHook on Robinhood Chain

Uniswap v4 Hook Contract 0xbffde2c00a6a1957a5d7c6425ecac8a8780e20cc on Robinhood Chain · Utility · Verified contract

Volume (24h)
$551.95K
Value locked (TVL)
$179.31K
All-time volume
$14.81M
Pools using this hook
1
Swaps (24h)
2,311 (311 traders)
Total swaps
76,134

What it does

GenieHook is a launch-tax hook that charges a time-decaying swap tax, starting at 40% and falling to 1% over three minutes, with the proceeds sent to a fixed treasury.

How it works step by step

  • Blocks all swaps until the owner calls enableTrading, which records the start timestamp
  • Applies a launch tax starting at 4000 bps (40%) that decays linearly to 100 bps (1%) over 3 minutes
  • Takes the tax in the paired currency via beforeSwap or afterSwap depending on which side the tax falls on
  • Sends collected tax to a fixed immutable treasury address through poolManager.take
  • Restricts pool initialization to the hook's own configured pool key
Swap behaviour
Swaps revert until the owner calls enableTrading. Once trading is live, a tax of currentTaxBps is taken on the paired-currency side of each swap and sent to the treasury, with the amount calculated differently for exact-input and exact-output swaps.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
The hook takes a time-decaying tax, not a pool fee change: 40% at launch (before enableTrading the tax reads START_TAX_BPS) decaying linearly to 1% over 3 minutes after tradingStart. The tax is taken in the paired currency and sent to the immutable treasury via poolManager.take; the pool's own LP fee is the static fee passed at construction.
Owner & admin controls
Owner (Ownable) can call initializePool once and enableTrading once (which starts the tax decay clock); owner can renounceOwnership or transferOwnership. Tax parameters (START_TAX_BPS 4000, END_TAX_BPS 100, DECAY_DURATION 3 minutes) and treasury are immutable constants/immutables; no pause and no upgrade mechanism found.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize restricts initialization to the hook itself for the configured poolKey. beforeSwap reverts until trading is enabled and, when the tax is on the specified side, takes the tax up front via a positive return delta. afterSwap handles the unspecified-side tax, takes it, and returns it as a delta; it reverts with PartialFill if the swap was not fully filled as expected. beforeSwapReturnDelta and afterSwapReturnDelta are enabled to let the hook take these deltas.

Security & trust assessment

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

Who controls it: The owner controls when trading opens (enableTrading) and which pool is initialized, but cannot change the tax rate, treasury, or the pool key after deployment. The owner cannot pause swaps or seize funds based on the code shown.

Risk to user funds: The hook can take a tax from swap flows (in the paired currency) and transfer it to the treasury, reducing the amount received by traders during the launch window. It holds no user balances itself and cannot block trading after enableTrading except via partial-fill reverts.

Security findings

  • [info] Trading gated by owner call: Before enableTrading is called, every swap reverts with TradingNotEnabled, so the pool is untradeable until the owner acts.
  • [info] Launch tax routed to treasury: The tax is taken via poolManager.take to a fixed treasury, so each swap sends a 40% to 1% share of the taxed side to the treasury during the launch window.
  • [low] Partial fills revert: afterSwap reverts with PartialFill if the realized delta does not equal amountSpecified plus the pre-computed tax, which can cause swaps that are partially filled to fail.
  • [info] Immutable tax schedule: enableTrading can only be called once and the tax curve is fixed, so the decay schedule cannot be adjusted if the owner key is lost or misconfigured.

Contract details

Verified source
Yes (GenieHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
6,547 bytes
Upgradeable proxy
No
Detected patterns
ownable, return-delta, tax

Pools using GenieHook