RiggleFeeHookV2 on Robinhood Chain
Uniswap v4 Hook Contract 0xfc996f10bce5100cef599efb5c8d4de6eb8120cc on Robinhood Chain · Launchpad · Verified contract
- Volume (24h)
- $89
- Value locked (TVL)
- $12.90K
- All-time volume
- $52.23K
- Pools using this hook
- 1
- Swaps (24h)
- 3 (3 traders)
- Total swaps
- 492
What it does
A launch hook for a native-ETH/token pool that taxes early buys (snipe tax, 99% decaying over 2m22s), taxes sells on a decaying game clock that buys shorten and large sells extend, and sends all accrued ETH to a fee recipient.
How it works step by step
- Restricts pool initialization to one bound LaunchDeployer and only for pools whose currency0 is native ETH.
- Charges a snipe tax on buys starting at 99% of the ETH leg and decaying linearly to the carve over the first 142 seconds.
- Charges a sell tax starting at 50% that decays along a game clock starting at 15 hours.
- Buys of at least 2.22 ETH shorten the sell clock by 60 minutes; sells of at least 0.5 ETH extend it by 30 minutes.
- Pins the sell rate at hour 22 and linearly reduces it to the carve at hour 30, after which sell tax is zero permanently.
- Accrues all carve and tax ETH in the hook and lets anyone call sweep() to forward it to the owner-settable feeRecipient.
- Swap behaviour
- Buys: ETH-leg fee equal to max(carve, snipe tax), taken in beforeSwap or afterSwap depending on swap type. Sells: ETH-leg fee equal to max(carve, sell tax), taken in beforeSwap or afterSwap. Buys >=2.22 ETH shorten the sell clock by 60 minutes; sells >=0.5 ETH extend it by 30 minutes. The clock is pinned at hour 22 and reaches zero tax at hour 30 after pool creation.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- Effective fee on a swap is max(carve, applicable tax line). Carve is feeBips (owner-adjustable, capped at 5%) charged on the ETH leg in both directions. Buys pay a snipe tax decaying linearly from 99% to the carve over 142 seconds after pool creation. Sells pay a sell tax starting at 50% that decays along a game clock (15h start), is shortened by qualifying buys (>=2.22 ETH, -60 min) and extended by qualifying sells (>=0.5 ETH, +30 min), pinned at hour 22 and walking linearly to the carve at hour 30, then zero forever. All taxed ETH is accrued in the hook and sent to feeRecipient via permissionless sweep().
- Owner & admin controls
- Owner (Solady Ownable, two-step handover) can set feeBips up to MAX_FEE_BIPS (<=500 bps) and can seal feeBips forever via sealFeeBips; can set feeRecipient at any time; can call setLaunchDeployer once to bind the sole allowed pool initializer. Owner cannot change any tax parameter (snipe/sell rates, thresholds, windows, pin, wall), which are immutable constructor values.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize: gates pool creation to the bound LaunchDeployer on native-ETH currency0 and starts the tax clocks. beforeSwap: charges the ETH-leg carve/snipe tax when ETH is the specified currency and returns a specified-side delta. afterSwap: charges the ETH-leg carve/sell tax when ETH is the unspecified currency and returns an unspecified-side delta. beforeSwapReturnDelta and afterSwapReturnDelta: allow those hook deltas, which let the hook take a portion of swap value.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: The owner cannot alter tax rates or the tax schedule, but can raise the carve up to 5% of every swap until sealed, redirect all accrued fees by changing feeRecipient, and choose the pool launcher once. Owner also controls ownership handover, so ownership transfer is a key risk if the owner key is compromised.
Risk to user funds: The hook holds the carve and all taxes in ETH (and any currency it sweeps) until sweep() is called; it takes these via poolManager.take and return deltas during swaps. Users buying or selling in the first hours pay large taxes that are retained by the hook. The swap path never calls out to feeRecipient, so a reverting recipient cannot block trading. The hook does not touch the pool's principal liquidity.
Security findings
- [medium] Owner-adjustable carve up to 5%: feeBips can be raised by the owner up to 500 bps (5%) on every swap until sealFeeBips is called, and can be lowered or raised again at any time before sealing.
- [medium] Settable fee recipient controls all accrued fees: Owner can point feeRecipient at any address, so all accrued carve and tax ETH and tokens swept by the permissionless sweep() can be redirected by a single owner transaction.
- [medium] Very high taxes charged through hook return deltas: Swap-time taxes reach up to 99% on early buys and 50% on early sells, implemented via return deltas that take ETH from the swapper inside the swap. This is intentional by design but is a large value transfer to traders.
- [info] Pool-init griefing mitigated: beforeInitialize was gated to onlyPoolManager and launchDeployer to prevent a third party from poisoning poolCreatedAt, which would otherwise permanently block the launch.
- [info] Tax schedule is immutable: Tax parameters are immutable and sell tax is hard-zero after the wall, so the taxation schedule cannot be extended by the owner.
Contract details
- Verified source
- Yes (RiggleFeeHookV2)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 10,768 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee, launchpad, moves-currency, ownable, return-delta, tax
Pools using RiggleFeeHookV2
- ETH / RIGGLED (1.00% fee) — 24h volume $89, TVL $12.90K, 3 swaps today