Auction hook on Base

Uniswap v4 Hook Contract 0x6fa57d27307010729d2465ec56f8e423906c38e0 on Base · Auction

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

What it does

This appears to be a Dutch-style or price-discovery auction hook that gates swaps and liquidity over a fixed time window and settles proceeds, but the exact mechanics could not be fully confirmed from bytecode alone.

This read was written for the hook 0x1b15…f8e0 on BNB Chain 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

  • Stores a starting and ending tick and time window for the auction
  • Blocks swaps before the start time and after maturity based on proceeds thresholds
  • Blocks external liquidity additions and donations
  • Sets the pool's dynamic LP fee via the pool manager
  • Pulls and settles tokens through take and unlock callbacks
  • Tracks maximum and minimum proceeds targets
Swap behaviour
beforeSwap and afterSwap enforce a start time and an ending/maturity condition, reverting with CannotSwapBeforeStartTime and InvalidSwapAfterMaturity variants depending on whether minimum proceeds were reached, and track proceeds during the swap.
Liquidity behaviour
beforeAddLiquidity reverts with CannotAddLiquidity (external liquidity is blocked); beforeRemoveLiquidity and afterRemoveLiquidity are present and afterAddLiquidity is decoded but restricted by the same logic.
Fee behaviour
Uses dynamic fee via updateDynamicLPFee on the pool manager; initialLpFee is read in initialization. Fee changes depend on the auction/PD-slug logic in the bytecode.
Owner & admin controls
Not stated.

Enabled Uniswap v4 callbacks

beforeInitialize, afterInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeDonate

beforeInitialize and afterInitialize set up pool state and the starting/ending tick and time; beforeSwap and afterSwap gate swaps by start time and maturity and track proceeds; beforeAddLiquidity blocks outside liquidity; beforeDonate reverts with CannotDonate.

Security & trust assessment

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

Who controls it: Initialization is gated to a single initializer address (SenderNotInitializer), and migrate is callable to move the hook to a new state, so the initializer key can influence pool lifecycle.

Risk to user funds: The hook takes and settles pool currency through the pool manager during auction flows; user swap and LP exposure depends on the initializer and the settlement logic, which could not be fully verified without source.

Security findings

  • [medium] Privileged initializer and migrate path: Bytecode contains migrate(address) and a SenderNotInitializer guard, so a privileged initializer controls lifecycle transitions.
  • [medium] Hook moves currency via pool manager: The hook calls take and unlock on the pool manager and an unlockCallback exists, so it moves pool currency during auction settlement.
  • [low] Swaps can revert based on time and proceeds: Swaps revert before start time and after maturity depending on proceeds thresholds, so trading can be blocked by design.

Contract details

Verified source
No
Bytecode size
21,830 bytes
Upgradeable proxy
No
Detected patterns
dynamic-fee, erc20, moves-currency, self-unlock

Pools using Auction hook