FlockStockPairHook on Robinhood Chain
Uniswap v4 Hook Contract 0x33e924fb8663871bab61d6844e79cdea159c60c0 on Robinhood Chain · Dynamic fee · Verified contract
- Volume (24h)
- $67.69K
- Value locked (TVL)
- $97.37K
- All-time volume
- $924.74K
- Pools using this hook
- 1
- Swaps (24h)
- 394 (69 traders)
- Total swaps
- 4,872
What it does
A FLOCK and tokenised-stock pool hook that sets a dynamic swap fee (launch decay, higher fee while US markets are closed) and blocks direct pool creation, with all fees going to LPs.
How it works step by step
- Requires pools to be pre-registered by the owner and created only through the hook's initializePool, blocking look-alike or front-run pool creation.
- Starts new pools paused; the first unpause starts the launch-fee decay clock.
- Applies a dynamic per-swap LP fee: linear launch-fee decay, a closed-market fee during weekend US market hours, clamped to a floor, cap and 10% hard maximum.
- Rejects zero-delta swaps so the price cannot be moved through empty liquidity without real trades.
- Records per-trader net FLOCK, first-trade time, gross volumes, swap count and unique traders for dashboards, and emits StockPairSwap.
- Swap behaviour
- beforeSwap reverts if the pool is not initialised or is paused, computes the dynamic fee and applies it via the override flag. afterSwap reverts if the swap exchanged nothing, then records trader stats and emits StockPairSwap.
- Liquidity behaviour
- No liquidity callbacks. Liquidity can always be added and removed because the hook has no add or remove liquidity callbacks, so pausing never locks LP funds.
- Fee behaviour
- Dynamic LP fee set per swap via the override-fee flag. Base fee is the steady state; during the launch window after first unpause the fee decays linearly from launchFee to baseFee over launchSeconds; while US equity markets are closed (Fri 20:00 UTC to Mon 14:30 UTC) the fee is raised to closedMarketFee if that is higher. Result is clamped to [minFee, maxFee], with an absolute cap of 10%. The fee does not depend on pool tick. The hook takes no share of fees; all fee income stays with LPs.
- Owner & admin controls
- Owner (FLock governance, Ownable2Step) can register pools, initialise pools at a chosen sqrtPriceX96 via initializePool, change the fee schedule per pool via setFeeConfig (bounded by validation: maxFee <= 10%, minFee <= baseFee <= maxFee, launch and closed-market fees <= maxFee), and pause or unpause swaps per pool with setPaused. Pausing blocks swaps but never liquidity removal. renounceOwnership is disabled. Ownership transfer is two-step. The contract is not upgradeable.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap
beforeInitialize rejects any direct PoolManager initialisation not performed by the hook itself. beforeSwap enforces pool initialised and not paused, computes and applies the dynamic fee. afterSwap rejects zero-delta swaps, updates per-trader net FLOCK, first-trade timestamp, volumes and counters, syncs the stored LP fee, and emits StockPairSwap.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: The owner can pause any pool's swaps indefinitely, set any fee between minFee and maxFee (up to 10%) instantly, and reprice a pool at initialisation. It cannot seize funds, change the pool's assets, or alter liquidity. Ownership is held by an EOA or multisig controlled by FLock governance; centralisation depends on that key's security.
Risk to user funds: The hook takes no return delta and holds no funds, so it cannot custody or move pool tokens. User funds are exposed only through the owner's ability to pause swaps, to set swap fees up to 10%, and to set the initial price. Liquidity withdrawal is never blocked.
Security findings
- [medium] Owner can halt swaps: Owner can call setPaused to block all swaps in a pool indefinitely. Liquidity removal still works, so funds are not locked, but trading can be halted.
- [medium] Owner can set swap fees up to 10%: Owner can raise the fee up to maxFee (cap 10%) at any time via setFeeConfig, so traders can be charged up to 10% per swap with no timelock.
- [low] Owner controls initial price: Pool initialisation price is set by the owner. A mispriced initialisation could be arbitraged against the owner's seed liquidity, though the pool starts paused until seeding.
- [info] Trader attribution uses tx.origin: Trader identity is tx.origin, so smart-contract wallets are attributed to their relayer. Counters and netFlock are informational only and are not used for any payout in this contract.
- [info] Anti-griefing design: Swaps that exchange nothing revert, and the fee is not driven by pool tick, which limits price-walk griefing of the fee schedule.
Contract details
- Verified source
- Yes (FlockStockPairHook)
- Compiler
- solc 0.8.30+commit.73712a01
- Bytecode size
- 11,740 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee, launchpad, ownable
Pools using FlockStockPairHook
- GOOGL / FLOCK (Dynamic fee) — 24h volume $67.69K, TVL $97.37K, 394 swaps today