Auction hook on Base
Uniswap v4 Hook Contract 0x9a5822954eb890c9f30ce3097fae9b1befb838e0 on Base · Auction
- Volume (24h)
- $0
- Value locked (TVL)
- $0
- All-time volume
- $117.66K
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 141
What it does
A Uniswap v4 hook that runs a time-bounded, tick-scheduled sale mechanism: it sets a dynamic LP fee on swaps, enforces start and end times and proceeds thresholds, and blocks outside liquidity additions and donations.
How it works step by step
- Records pool key, initial LP fee and starting and ending ticks on initialization
- Blocks external liquidity additions and donations by reverting in beforeAddLiquidity and beforeDonate
- Enforces a start time and reverts swaps that occur before it
- Dynamically updates the LP fee during swaps using a gamma parameter
- Tracks proceeds against minimum and maximum thresholds and reverts when insufficient or when the maximum is reached
- Uses the pool manager unlock and take flow to move currency during settlement
- Swap behaviour
- beforeSwap enforces the start time and tick-based schedule and dynamically sets the LP fee; afterSwap records outcomes against proceeds thresholds and can settle currency through the pool manager.
- Liquidity behaviour
- beforeAddLiquidity reverts with CannotAddLiquidity, so liquidity can only be provided through the hook's own unlock flow; beforeDonate is also blocked (CannotDonate); removal paths are present (beforeRemoveLiquidity, afterRemoveLiquidity) and the hook tracks positions by bytes32 key.
- Fee behaviour
- Sets the pool fee dynamically via updateDynamicLPFee during swaps, using an initial LP fee and a gamma parameter; the exact fee schedule cannot be confirmed from bytecode alone.
- Owner & admin controls
- No owner or pause function found in the dispatch table; the hook has a one-time initializer (initializer(), SenderNotInitializer error) and a migrate(address) entry point that is callable externally and may be restricted; exact access checks cannot be confirmed without source.
Enabled Uniswap v4 callbacks
beforeInitialize, afterInitialize, beforeAddLiquidity, beforeSwap, afterSwap, beforeDonate
beforeInitialize and afterInitialize validate and record pool configuration (poolKey, initialLpFee, tick range); beforeAddLiquidity and beforeDonate restrict liquidity and donations; beforeSwap enforces start time and tick-based schedule and dynamically sets the LP fee; afterSwap records swap outcomes and proceeds against minimum and maximum thresholds and can take or settle currency through the pool manager.
Security & trust assessment
Risk level: medium, estimated (decoded bytecode, low confidence).
Who controls it: The hook appears to be designed around an initializer and a migrate call; a privileged initializer or migrator could redirect the migration path, but the scope of that power cannot be confirmed without source.
Risk to user funds: The hook can take and settle currency through the pool manager during swaps and afterSwap, and it can block swaps through proceeds-based reverts, so user funds in the pool are exposed to the hook's logic; no direct owner withdrawal function was identified.
Security findings
- [medium] Hook moves pool currency: The hook calls take and unlock on the pool manager and holds an unlockCallback, so it moves currency between the pool and itself during swaps and settlement.
- [medium] Swap gating by proceeds thresholds: Swaps revert after the start time when proceeds are insufficient, and maximum proceeds trigger a dedicated error, so trading can be halted by the proceeds logic.
- [medium] Externally callable migrate function: migrate(address) is externally callable; if it lacks access control it could move state, but this cannot be verified from bytecode.
- [info] Dynamic fee controlled by hook: The hook uses a dynamic LP fee set via updateDynamicLPFee, so the fee rate is controlled by hook logic rather than fixed at pool creation.
- [info] Liquidity and donations blocked: Liquidity addition and donations are disabled, which limits external participation in the pool.
Contract details
- Verified source
- No
- Bytecode size
- 22,113 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee, moves-currency, self-unlock
Pools using Auction hook
- ETH / VIBE (Dynamic fee) — 24h volume $0, TVL $0, 0 swaps today