Likely custom pricing hook on Tempo

Uniswap v4 Hook Contract 0x2929d242c6c475f78ea7ce8837c9078bcd9ca088 on Tempo · Custom pricing

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

What it does

Appears to be a custom-accounting hook that adjusts swap deltas and moves currency through PoolManager on pools it initializes, based only on decoded bytecode.

How it works step by step

  • Records per-pool data in a mapping keyed by pool id during beforeInitialize
  • Returns a delta from beforeSwap so the hook can take or settle currency
  • Calls PoolManager take, settle and sync to move tokens during swaps
  • Reads a token jar address and protocol fee controller, suggesting fee routing
  • Exposes pseudoTotalValueLocked and quote helpers for off-chain reads
Swap behaviour
beforeSwap is nonpayable and, with beforeSwapReturnDelta enabled, returns a delta that settles or takes currency through PoolManager calls such as take, settle and sync.
Liquidity behaviour
beforeAddLiquidity and beforeRemoveLiquidity are declared as view functions and the hook exposes pseudoTotalValueLocked(bytes32); liquidity callbacks appear to be permissioned to read state only, with no evidence of liquidity moves.
Fee behaviour
Not determinable from decoded bytecode; beforeSwap uses return deltas and reads a per-pool mapping keyed by pool id, and the hook calls protocolFeeController() and TOKEN_JAR(), suggesting protocol fees may be routed to a token jar, but exact fee math cannot be confirmed.
Owner & admin controls
Storage slot 0 holds an address that is written by selector 0x4401bb3f (nonpayable, takes an address argument), which appears to be an owner or tokenJar setter; no caller check could be confirmed from decoded bytecode, so it is unknown whether it is access-controlled. Slot 0 is also read by 0x490c98f5 (tokenJar getter) and 0x575e24b4 (beforeSwap).

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, beforeSwapReturnDelta

beforeInitialize records pool-specific data into a mapping keyed by pool id; beforeSwap is the main logic and returns a delta, and beforeSwapReturnDelta lets the hook settle or take currency on swaps, which is the mechanism the heuristic tags flag as moves-currency and return-delta; afterwards the hook calls PoolManager functions such as take, settle and sync.

Security & trust assessment

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

Who controls it: A privileged key controlling the setter in slot 0 could potentially redirect the tokenJar or other external dependencies, affecting where fees or currency deltas are sent; the scope cannot be verified without source.

Risk to user funds: The hook can take and settle currency during swaps through beforeSwapReturnDelta and transfer tokens via PoolManager calls, so swap funds pass through its accounting; whether it can block swaps or withdraw pool funds beyond fee deltas is not confirmed by the decoded bytecode.

Security findings

  • [medium] Hook takes currency during swaps via return delta: Selector 0x575e24b4 is nonpayable and the beforeSwapReturnDelta permission is enabled, so the hook can alter swap accounting by returning a delta and settling currency through PoolManager calls.
  • [high] Possible unprotected address setter in slot 0: Selector 0x4401bb3f writes an address into storage slot 0, which is read by the tokenJar getter and by beforeSwap; if this is an unrestricted setter, a caller could redirect value flows.
  • [medium] Hook moves tokens between itself and PoolManager: Decoded bytecode shows calls to take, settle, sync and balanceOf, so the hook moves tokens; this is expected for return-delta hooks but means user and pool funds pass through hook logic.
  • [info] Source not verified: No verified source is available, so behaviour is inferred from selectors and storage access patterns only and may be incomplete.

Contract details

Verified source
No
Bytecode size
13,185 bytes
Upgradeable proxy
No
Detected patterns
moves-currency, return-delta

Pools using Likely custom pricing hook