FlowHook on Robinhood Chain
Uniswap v4 Hook Contract 0x1ac428894f861a4f3257f679c638b77ea78e20cc on Robinhood Chain · Fee sharing · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $0
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 0
What it does
FlowHook takes a flat 2% fee on the ETH side of every swap in its launchpad pools, paid into the coin creator's basin, with buys and sells charged the same rate.
How it works step by step
- Takes a flat 2% fee on the ETH side of every swap in the launchpad home pools (ETH/coin, fee 0, tick spacing 1)
- Books each fee into a per-coin basin reserved for that coin's creator, and mints a matching ERC-6909 ETH claim inside the PoolManager to back it
- Lets only the coin's creator withdraw from their basin, by burning the ETH claim and taking ETH to the creator
- Only accepts pools opened by the Launchpad, once per coin, with the canonical key (ETH currency0, fee 0, tick spacing 1)
- Keeps a read-only tally of ETH bought in and sold out per coin (bought, sold, net) that nothing else acts on
- Swap behaviour
- On every swap in a home pool, a 2% fee on the ETH side is taken: for ETH-named legs the fee is applied in beforeSwap (exact-in buys take it off the ETH sent in; exact-out sells gross up the ETH output), and for coin-named legs it is applied in afterSwap from the ETH that moved (exact-out buys gross up the ETH paid; exact-in sells take a slice of ETH produced). Fees are taken equally from buys and sells, so no direction pays more or less. Swaps in pools not opened by the Launchpad revert.
- Liquidity behaviour
- No liquidity callbacks. Liquidity hooks revert with NotWired; the launchpad's LP position is an ordinary v4 position whose NFT is held by the keeper.
- Fee behaviour
- A fixed 2% (200 bps) of every swap's ETH side, computed with ceiling rounding and booked entirely to the coin creator's basin. The pool's own static fee is 0; the hook's fee is the only swap fee charged.
- Owner & admin controls
- No owner, no setter, no pause, no upgrade path and no privileged address. The only stored addresses are the immutable PoolManager and Launchpad set in the constructor. Creators can withdraw only their own coin's basin.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize restricts pool creation to the Launchpad and the canonical key. beforeSwap takes the fee for ETH-named legs and returns a before-swap delta to withhold it. afterSwap takes the fee for coin-named legs, returns an after-swap delta, and updates the bought/sold tally. beforeSwapReturnDelta and afterSwapReturnDelta are enabled so the hook can take a cut of the swap currency.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: No privileged key exists in the hook. Creators control only withdrawals from their own basin; the launchpad and LP NFT holder operate outside this contract.
Risk to user funds: The hook holds ETH claims in the PoolManager on behalf of coin creators (the basins) and can take up to 2% of each swap's ETH side. It cannot move LP liquidity or other users' funds, and it cannot block swaps except through the revert conditions noted above.
Security findings
- [info] Hook takes currency via return deltas: beforeSwap and afterSwap return non-zero deltas and mint an ERC-6909 claim, so the hook takes a 2% cut of every swap's ETH side from traders. This is the intended fee, but it applies to all swaps in the pool.
- [low] Swaps revert on unexpected fill amounts: afterSwap reverts with Unfilled if an ETH-named leg does not fill exactly as expected, and beforeSwap reverts with OddAmount on edge-case amounts, so some swap shapes can fail rather than partially fill.
- [info] No admin or pause; fee is hard-coded: FEE_BPS is a constant and there is no setter, owner or pausing function, so no privileged key can change fees or block swaps. The launchpad address is immutable.
- [low] Basin accounting depends on PoolManager claims: Fees are represented as ERC-6909 ETH claims minted to the hook; creators can only redeem them through drawdown with the reentrancy-style _drawingFor guard, so correctness relies on PoolManager unlock semantics.
Contract details
- Verified source
- Yes (FlowHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 6,849 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc6909-claims, launchpad, moves-currency, return-delta, self-unlock
Pools using FlowHook
- ETH / TFGT (0.00% fee) — 24h volume $0, TVL $0, 0 swaps today