BallastHook on Robinhood Chain

Uniswap v4 Hook Contract 0x4eb2dd759f4d6524e66057d1adc10c26e40142cc on Robinhood Chain · Fee sharing · Verified contract

Volume (24h)
$46.04K
Value locked (TVL)
$8.63K
All-time volume
$1.07M
Pools using this hook
8
Swaps (24h)
543 (221 traders)
Total swaps
10,961

What it does

Takes a 1% fee on the quote-asset (WETH) side of every swap in Ballast pools and splits it between the token creator, the platform, and optional allowlisted referrers.

How it works step by step

  • Resolves each pool's token and quote-asset sides by checking which side answers creator(), caching the result per pool
  • Takes feeBps (1% default) of the quote-asset leg in beforeSwap (exact-in buys) or afterSwap (exact-out buys and exact-in sells)
  • Reverts sell-exact-out swaps to avoid over-collecting on partial fills
  • Accrues the fee to creator, platform vault and referrer ledgers (owed for WETH, owedIn for other currencies) for pull-based claiming
  • Blocks removal of the BallastSeeder's one-sided liquidity position while leaving third-party LP removal open
Swap behaviour
beforeSwap and afterSwap skim the fee on whichever swap leg is the quote asset (depending on direction and exact-in/out). Sell-exact-out swaps revert. Traders pay the fee on the quote side only.
Liquidity behaviour
beforeRemoveLiquidity reverts only when the sender is the BallastSeeder contract, locking its one-sided launch position. Any other LP can add and remove liquidity freely.
Fee behaviour
Charges feeBps (default 1%, owner-adjustable up to 10%) of the quote-asset leg of each swap. Fee is split creator/platform/referrer by live FeeConfig bps; referrer share rolls to platform unless the hookData referrer is allowlisted. Fees accrue in owed (WETH) or owedIn (other currencies) and are pulled via claim/claimIn.
Owner & admin controls
FeeConfig is Ownable2Step (owner set at deploy, two-step transfer). Owner can change feeBps (capped at 10%), the creator/platform/referrer split, platformVault, and the referrer allowlist; all read live by the hook. The hook itself has no owner: setSeeder is one-time, callable only by the deployer (tx.origin) and only once. No pause, no upgrade proxy, no token mint authority.

Enabled Uniswap v4 callbacks

beforeRemoveLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeSwap: takes the quote-asset fee when it is the specified currency (exact-in buys) and reverts on sell-exact-out. afterSwap: takes the fee when the quote asset is the unspecified currency (buy exact-out, sell exact-in). beforeSwapReturnDelta and afterSwapReturnDelta: let the hook claim the fee amount from the swap delta. beforeRemoveLiquidity: blocks removal of the Seeder's position.

Security & trust assessment

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

Who controls it: FeeConfig owner can raise the fee to 10%, redirect platformVault to any address, change the split (including sending all of it to the platform), and allowlist referrers. Owner cannot touch pool funds directly or block swaps; changes take effect immediately for all pools.

Risk to user funds: The hook can move quote-asset tokens from the pool into its own accrual ledger on every swap (the fee), and holds them until the recipient claims. It cannot block swaps for ordinary traders, cannot seize LP principal, and the only blocked removal is the Seeder's own position.

Security findings

  • [medium] Owner-adjustable fee and split with no timelock: Owner can set feeBps up to 10% and the split arbitrarily, instantly affecting every pool with no timelock.
  • [low] Hook custodies accrued fee balances: The hook takes tokens via poolManager.take and return deltas, so it holds accrued fees until claimed, and an unclaimed balance sits in the hook's custody.
  • [info] Sell-exact-out is intentionally unsupported: Sell-exact-out swaps revert, so some router flows will fail rather than silently overcharge.
  • [info] tx.origin used for one-time deployer check: setSeeder uses tx.origin to authorize the one-time wiring; acceptable for a one-shot bootstrap but not a general pattern.

Contract details

Verified source
Yes (BallastHook)
Compiler
solc 0.8.28+commit.7893614a
Bytecode size
5,043 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, return-delta

Pools using BallastHook