SemiHook on Robinhood Chain

Uniswap v4 Hook Contract 0x7b89c56da91425f35d07290ecfecf4e58dc13088 on Robinhood Chain · Launchpad · Verified contract

Volume (24h)
$0
Value locked (TVL)
$231.42K
All-time volume
$0
Pools using this hook
1
Swaps (24h)
1 (1 traders)
Total swaps
19,046

What it does

A Uniswap v4 hook for the SEMI/MU pool that skims a decaying fee from swaps, compounds harvested fees into permanently locked liquidity, and gates the ratchet and bond modules through a reserve oracle.

How it works step by step

  • Takes a 50% launch fee that decays quadratically to 5% over the first 60 seconds after pool initialization
  • Records the running minimum of MU reserves derived from protocol-owned liquidity to feed the Ratchet backing oracle
  • Enforces a per-swap cap of 10% of reserve during the launch window
  • Harvests accrued SEMI fees, swaps them to MU, then splits MU 40% into locked LP, 40% to treasury, 20% to the GIWA burner
  • Exposes donateFloor so anyone can route MU into locked full-range liquidity without a treasury cut
  • Restricts pool initialization to the launcher address
Swap behaviour
On each external swap, the hook takes a fee on the specified-amount side via a beforeSwap return delta, starting at 50% and decaying to 5% over 60 seconds, plus a 10% per-swap reserve cap during that window. Calls from the hook itself or during harvest bypass the fee.
Liquidity behaviour
No liquidity callbacks are registered, but the hook itself owns a full-range position that is compounded via harvest and donateFloor. The launcher's seed position is locked with no removal function. Hook reads protocol-owned liquidity only for its reserve oracle.
Fee behaviour
Fee taken on the specified-amount side of each external swap: starts at 50% (LAUNCH_FEE_BPS) at startTime and decays quadratically to a 5% steady state (FEE_BPS) over 60 seconds. Collected via poolManager.take and returned as a beforeSwap return delta. Harvested fees are liquidated to MU then split 40% compounded into locked full-range LP, 40% to treasury, 20% to the GIWA burner (if set).
Owner & admin controls
No owner or admin. setLauncher, setRatchet and setBurner are one-shot setters callable only by the deployer and freeze after first set. Parameters are immutable constants. No pause, no upgrade proxy, no parameter changes after deployment.

Enabled Uniswap v4 callbacks

beforeInitialize, afterInitialize, beforeSwap, beforeSwapReturnDelta

beforeInitialize restricts pool creation to the launcher address. afterInitialize records startTime for the fee decay. beforeSwap skims fees with a return delta, enforces a 10% per-swap reserve cap during the launch window, and records reserve minimums for the oracle. beforeSwapReturnDelta lets the hook take a portion of swap amounts.

Security & trust assessment

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

Who controls it: No privileged key after deployment. The deployer can only set the one-shot launcher, ratchet and burner addresses and cannot pause, change fees or withdraw funds. The fee, split and cap constants are fixed in bytecode.

Risk to user funds: The hook can take a portion of every external swap through the return delta, and holds accrued SEMI and MU fee balances until harvest. It cannot freeze or withdraw LP principal, and no admin path can change these terms.

Security findings

  • [info] Return-delta fee skim on every external swap: Hook takes 5% to 50% of swap amounts via beforeSwapReturnDelta, with the launch window fee starting at 50% and decaying over 60 seconds.
  • [info] Per-swap cap in launch window: During the first 60 seconds of trading, a single swap can specify at most 10% of the liquidity-derived reserve, which blocks large early swaps by design.
  • [low] Permissionless harvest swaps are sandwichable within a price band: Harvest and donateFloor swap via the pool with a price limit of roughly 0.5x to 2x of current price, and harvest is permissionless, so a sandwich can extract value from the compounding swap but the impact is bounded.
  • [low] Oracle depends on protocol-owned position math: The ratchet and bond modules depend on reserves derived from protocol-owned liquidity; if the launcher or hook positions are affected the oracle reading changes, though no privileged path exists to alter those positions.
  • [info] Hook custodies accrued fee balances: The contract holds collected fee tokens transiently and during harvest; fees not yet harvested sit in the hook balance until anyone calls harvest or donateFloor.

Contract details

Verified source
Yes (SemiHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
10,553 bytes
Upgradeable proxy
No
Detected patterns
launchpad, liquidity-management, moves-currency, return-delta, self-unlock

Pools using SemiHook