RunnerHook on Robinhood Chain
Uniswap v4 Hook Contract 0xba7bcddca454841ec6b2fe3ebc8d9d881ad4e0cc on Robinhood Chain · Dynamic fee · Verified contract
- Volume (24h)
- $355
- Value locked (TVL)
- $1.74K
- All-time volume
- $287.65K
- Pools using this hook
- 1
- Swaps (24h)
- 5 (5 traders)
- Total swaps
- 2,534
What it does
Charges a governance-adjustable fee in the quote asset on swaps of the canonical RUNNER pool, with a higher decaying anti-sniping fee on early buys, and forwards fee and prize data to the treasury and prize contracts.
How it works step by step
- Takes a project fee in the quote asset on each non-protocol swap, backed by ERC-6909 claims minted to the hook
- Applies a higher launch fee to buys that decays linearly to the base fee over a fixed period after genesis
- Lets governance change the base fee between 0 and a fixed maximum through a delayed proposal
- Accrues fees into per-epoch accrual periods that the treasury can later redeem
- Records signed executed RUNNER quantity per control window for use by the game
- Maintains a bounded TWAP accumulator used as the buyback price reference
- Swap behaviour
- beforeSwap and afterSwap take a fee on non-buyback swaps in the canonical pool, with buys during the launch window paying a decaying higher rate. Buyback swaps pay no fee. Router-originated buys with a participant also trigger a prize entry record.
- Liquidity behaviour
- No liquidity callbacks. Add and remove liquidity hooks are disabled, so the hook cannot act on LP deposits or withdrawals.
- Fee behaviour
- Charges a project fee in the quote asset on non-protocol swaps, backed by ERC-6909 claims minted to the hook. Sells and buys pay feeBps (governance-set, 0 to maxFeeBps). Buys during a launch window pay a higher launch fee that decays linearly from launchFeeBps at genesis to feeBps over launchFeeSeconds. Fees accrue into accrual periods by reward epoch and are redeemable by the treasury.
- Owner & admin controls
- Governance (treasury's governance address) can call setFeeBps to change the project fee from 0 up to maxFeeBps (ceiling fixed at deployment, at most 10%) via a delayed proposal. The deployer performs one-time wire() before pool initialization; after that wiring is immutable. Treasury alone can call redeemTo to convert accrued claims into quote tokens. No pause, upgrade proxy, or owner-withdraw function was found in the source.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize restricts pool initialization to the wired initializer and the canonical pool key. beforeSwap takes the fee as a specified-currency return delta and records the fee on quote-specified swaps. afterSwap collects fees on RUNNER-specified swaps, records control-window swap data, and forwards prize entry weight to the prizes contract for router-originated buys. beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to take a portion of swap amounts as its fee.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: A governance key controlling the treasury can raise the project fee up to the fixed ceiling (10% max), applied to every swap after a delay. The deployer key controls only the one-time wiring. The treasury can redeem all accrued fee claims to any address it chooses.
Risk to user funds: The hook can take a fee from every non-protocol swap in the canonical pool, capped by maxFeeBps. It holds ERC-6909 claims for accrued fees until the treasury redeems them. It does not custody user principal, and it cannot block swaps except through the partial-fill revert and the wiring checks.
Security findings
- [medium] Governance-adjustable swap fee: Fee charged on swaps is set by governance via setFeeBps up to maxFeeBps, which is fixed at deployment and capped at 1000 bps (10%). A governance change is announced through a delayed proposal before it takes effect.
- [info] Hook takes tokens via return deltas: The hook takes a fee on swaps through return deltas, so each non-protocol swap in the canonical pool pays the project fee plus a launch surcharge on early buys.
- [low] Partial fills unsupported: Swaps revert with PartialFillUnsupported if the quote amount does not match the expected net after fee, so partially filled swaps are rejected rather than settled.
- [info] Treasury-only redemption: Redemption of accrued fees is restricted to the treasury, and claims received by the hook from third parties are excluded from redeemable revenue.
Contract details
- Verified source
- Yes (RunnerHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 13,974 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee, launchpad, return-delta
Pools using RunnerHook
- RUNNER / USDG (0.30% fee) — 24h volume $355, TVL $1.74K, 5 swaps today