Launchpad hook on Ink

Uniswap v4 Hook Contract 0xea090ca08f99813d7acb621266ce51253630aacc on Ink · Launchpad

Volume (24h)
$0
Value locked (TVL)
$0
All-time volume
$19
Pools using this hook
3
Swaps (24h)
0 (0 traders)
Total swaps
4

What it does

A Uniswap v4 hook that appears to take a share of swap flow, accumulate it per pool, and distribute it as creator fees, rewards and buybacks, likely for a token launch pool.

This read was written for the hook 0x813b…eacc on Ink and reused here: the two share a code shape, so constants such as fees, owners and addresses can differ.

How it works step by step

  • Registers and tracks pools in beforeInitialize and afterInitialize, with pool metadata stored in mappings.
  • Takes a share of swap input or output via beforeSwapReturnDelta and afterSwapReturnDelta.
  • Records per-pool balances in storage that accumulate collected value.
  • Exposes claimCreatorFees and payRewards to pay out accumulated balances.
  • Exposes buyback to use accumulated value for buying back tokens.
  • Uses tax-exempt mappings to exempt certain addresses from the tax path.
Swap behaviour
beforeSwap and afterSwap run custom logic, and the hook can take a share of swap amounts through before and after swap return deltas.
Liquidity behaviour
beforeAddLiquidity and beforeRemoveLiquidity are exposed but their logic cannot be confirmed; afterAddLiquidity and afterRemoveLiquidity are present as stubs or minimal handlers.
Fee behaviour
Appears to collect fees via return deltas on swaps and track per-pool balances in storage (slot 2), then distribute them through payRewards, claimCreatorFees and buyback. Exact fee rates cannot be determined without source.
Owner & admin controls
No verified source, so admin roles cannot be confirmed. Selectors suggest privileged functions: buyback(address), claimCreatorFees(address), payRewards(address,uint256), an unnamed nonpayable 0xdfaa6761(address) and 0xdba38931(address) that write to slot 2 balances, and 0x3d1bb7b3 which writes pool registration and tax-exempt state. Access checks cannot be verified from bytecode alone.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize and afterInitialize register pools; beforeAddLiquidity and beforeRemoveLiquidity gate liquidity changes; beforeSwap and afterSwap run custom logic; beforeSwapReturnDelta and afterSwapReturnDelta let the hook take a share of swap amounts; beforeAddLiquidity and beforeRemoveLiquidity only perform checks.

Security & trust assessment

Risk level: medium, estimated (decoded bytecode, low confidence).

Who controls it: Privileged callers could trigger buyback, claimCreatorFees and payRewards, and may be able to change tax-exempt status and pool configuration. Without access control verification, a privileged key could redirect accumulated fees.

Risk to user funds: The hook can take value from swaps through return deltas and holds accumulated fee balances; it can also move currency through the pool manager. Whether it can block trades cannot be determined without source.

Security findings

  • [medium] Hook takes swap value via return deltas: Hook permissions include beforeSwapReturnDelta and afterSwapReturnDelta, so the hook can take a portion of every swap's input or output.
  • [medium] Hook moves currency through the pool manager: The bytecode contains a moves-currency path (take and unlock calls), so the hook can move pool or user funds during callbacks.
  • [medium] Privileged fund-moving functions with unverified access control: Several state-changing functions (buyback, claimCreatorFees, payRewards, tax-exempt setters) exist; whether they are restricted to an owner or role is unverified.
  • [low] Accumulated fee balances held by the hook: Unnamed nonpayable selectors write to fee balances in storage slot 2; the hook holds accumulated balances that could be misused if access control is weak.
  • [info] Self-unlock callback pattern: Bytecode shows a self-unlock pattern, meaning the hook calls back into the pool manager during its own execution.

Contract details

Verified source
No
Bytecode size
14,227 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, return-delta, self-unlock

Pools using Launchpad hook