Custom pricing hook on Base

Uniswap v4 Hook Contract 0x51ab3586aa9caea232d2e34fa34d10b777232840 on Base · Custom pricing

Volume (24h)
$26
Value locked (TVL)
$3.12K
All-time volume
$220
Pools using this hook
54
Swaps (24h)
456 (180 traders)
Total swaps
5,293

What it does

This hook adds custom accounting to a pool, minting and burning a receipt token alongside liquidity positions, but the exact effect on swap prices and fees cannot be confirmed from the unverified bytecode.

How it works step by step

  • Hook permissions are beforeInitialize, beforeAddLiquidity and afterSwap, so it runs logic when a pool is created, when liquidity is added and after each swap.
  • The implementation exposes a deploy(address,address,bytes32) function, a poolId() getter and a hook() getter, indicating it deploys and tracks a dedicated per-pool contract or position token.
  • The implementation carries ERC20 metadata and mint/burn/permit selectors, so it issues and redeems a transferable receipt or share token tied to the pool.
  • Because beforeAddLiquidity is enabled, the hook can gate or redirect liquidity additions, and the OnlyHook error selector shows certain entry points are restricted to the hook address.
  • Upgradeability is indicated by the proxy, so the logic behind the hook can be replaced by whoever controls the proxy admin.
Swap behaviour
afterSwap is enabled, so the hook runs after each swap; the decoded bytecode does not reveal whether it modifies amounts, fees or balances on that path.
Liquidity behaviour
beforeAddLiquidity is enabled, so the hook runs before liquidity is added; the mint and burn selectors suggest receipt tokens are minted and burned in connection with liquidity positions.
Fee behaviour
Uses the pool's static fee as far as the decoded bytecode shows; no fee-setting or fee-sharing selectors were identified.
Owner & admin controls
The contract is an upgradeable proxy, so the proxy admin can replace the implementation; no owner, pause or parameter-setting selectors were identified in the decoded functions.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeAddLiquidity, afterSwap

beforeInitialize is used to set up state when a pool is initialized; beforeAddLiquidity is used to gate or account for liquidity additions; afterSwap is used to run post-trade bookkeeping or logic.

Security & trust assessment

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

Who controls it: A proxy admin key could upgrade the implementation and alter swap, liquidity or accounting behaviour for all pools using this hook, including withdrawing or redirecting value if the new code allows it.

Risk to user funds: The hook is attached to pool operations and mints and burns receipt tokens on liquidity activity, so it can influence user positions; without source, whether it can hold or move pool funds directly cannot be confirmed.

Security findings

  • [medium] Upgradeable proxy: The hook delegates all calls to implementation 0x8b4f60d3364160bf17985fc72f5a84f625ee8f1a, so whoever controls the proxy admin can change the code that runs on every pool using this hook.
  • [medium] Unverified source: No verified source is available, so the behaviour was inferred from decoded selectors and bytecode and the exact logic cannot be confirmed.
  • [info] Hook-gated entry points: The presence of an OnlyHook error selector indicates some functions are restricted to the hook address, which limits direct external calls to them.
  • [info] Token-issuing functions: Mint, burn and permit selectors show the system issues an ERC20-style token; the minting conditions could not be determined from the bytecode alone.

Contract details

Verified source
No
Bytecode size
22,432 bytes
Upgradeable proxy
Yes
Detected patterns
erc20, upgradeable

Pools using Custom pricing hook