BoardHook on Base

Uniswap v4 Hook Contract 0x3aa3f28ae7c829a98359f31f3ddc5dae0a57afdc on Base · Launchpad · Verified contract

Volume (24h)
$0
Value locked (TVL)
$0
All-time volume
$0
Pools using this hook
16,683
Swaps (24h)
0 (0 traders)
Total swaps
46,321

What it does

A Uniswap v4 launchpad hook that runs a 30 minute fair launch window where buys are allowed at a fixed tick, sells and LP changes are blocked, and swap fees are split among protocol, creator, inspirers and referrers.

How it works step by step

  • Creates a token pool in publiphi with the hook as the only hook and blocks direct initialization.
  • Runs a 30 minute fair launch where buys fill from an internal single-sided position and sells revert.
  • Optionally enforces a Merkle whitelist and per-address max allocation during fair launch.
  • Charges a configurable swap fee via a fee calculator and splits fees among swapper, inspirer, protocol and creator with referrer payouts.
  • Closes the fair launch position into two immutable positions around the launch tick and burns unsold supply.
  • Emits detailed swap, fee and liquidity events and notifies subscribers of pool state.
Swap behaviour
During the fair launch window, buys are filled from the hook's single-sided position via return deltas and sells revert; whitelist and max allocation checks may apply. After the window, swaps pass through normally, and afterSwap captures a fee in the unspecified currency that is then distributed or deposited for later distribution.
Liquidity behaviour
Adding or removing liquidity is blocked during the fair launch window unless called by the FairLaunch contract. After the window, liquidity events are only logged and state updates are emitted. The FairLaunch contract creates a single-sided position at launch and, when the window closes, two immutable positions around the initial tick; unsold supply is burned.
Fee behaviour
Swap fee is determined by the fee calculator (or base swap fee from fee distribution), optionally overridden by a per-user flat fee exemption if lower. Fees are taken via PoolManager.take as the unspecified currency and split between swapper, inspirer, protocol and creator; referrers receive a share at swap time. During the fair launch window, fee revenue is recorded against the fair launch position.
Owner & admin controls
Owner (Ownable2Step) can set premineZap, initialPrice, museManager, minDistributeThreshold, feeCalculator, fairLaunchFeeCalculator, feeDistribution, per-pool fee distribution, protocolFeeRecipient, referralEscrow; ownership transfer is two-step. The owner cannot pause swaps or directly move pool funds in the visible code, but can redirect fee shares and swap fee rates through the calculator contracts.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity, beforeSwap, afterSwap, afterDonate, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize: reverts direct initialization so pools can only be created via publiphi. beforeAddLiquidity and beforeRemoveLiquidity: block LP changes during fair launch. afterAddLiquidity, afterRemoveLiquidity, afterDonate: emit tracking events and notify subscribers. beforeSwap: enforces fair launch rules (no selling, whitelist, max allocation), handles premine and fills swaps from the fair launch position via return delta. afterSwap: captures swap fees, distributes accumulated fees and emits swap events. beforeSwapReturnDelta and afterSwapReturnDelta: let the hook fill swaps from its own inventory and take a fee in the unspecified currency.

Security & trust assessment

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

Who controls it: The owner can change the fee calculator, global and per-pool fee distribution (including setting the protocol or creator share), the protocol fee recipient, the initial price module and the premine zap. A malicious owner could route user-paid fees to itself or set the swap fee via a calculator, but cannot directly seize the pool's principal liquidity.

Risk to user funds: The hook holds fee balances and fair launch token inventory and settles tokens against the PoolManager during swaps and position creation. It can take fees in the unspecified currency and move tokens to the protocol, creator and recipients. It cannot block swaps by a pause, but the owner can alter fee rates and recipients.

Security findings

  • [info] Sell and liquidity restrictions during fair launch: During the 30 minute fair launch window only buys are allowed and LPs cannot add or remove liquidity; sellers are blocked by revert, which is an intended design but restricts exits for users.
  • [medium] Owner-controlled swap fees and fee routing: Swap fees and the fee split are controlled by owner-set calculators and FeeDistribution parameters with no timelock visible, so fee changes take effect immediately for all pools.
  • [medium] Hook holds and moves pool funds via return deltas: The fair launch fill path uses return deltas to supply tokens from hook-held inventory and to settle fee amounts, so the hook holds and moves token balances; any bug in accounting could affect pooled funds.
  • [low] Balance-based position sizing at close: Unsold fair launch supply is sent to a burn address and pool positions are settled from balances held by the hook, so correctness of the balance arithmetic in closePosition matters for solvency.
  • [low] External fee routing dependencies: Unused referral and swapper fees are routed through external zap and escrow contracts that are owner-configurable, adding a trust dependency.

Contract details

Verified source
Yes (BoardHook)
Compiler
solc 0.8.30+commit.73712a01
Bytecode size
24,565 bytes
Upgradeable proxy
No
Detected patterns
access-control, dynamic-fee, erc6909-claims, launchpad, moves-currency, ownable, return-delta, tax

Pools using BoardHook