TemoHook on Ethereum

Uniswap v4 Hook Contract 0x530f27fc312db92b4f47a4cf3c5305e6110b20cc on Ethereum · Dynamic fee · Verified contract

Volume (24h)
$9.79K
Value locked (TVL)
$8.15K
All-time volume
$2.91M
Pools using this hook
1
Swaps (24h)
160 (74 traders)
Total swaps
10,516

What it does

A permanent, ownerless hook for the TEMO/ETH pool that charges a dynamic ETH fee on every swap, with a model-driven capsule share, and records each trade for scoring.

How it works step by step

  • Charges each swap a dynamic fee in ETH: 0.30% platform, 0.90% dev, 0.10% mole, plus 0.20% to 1.00% capsule share set by the model score
  • Asks an external model for a 0 to 10000 dump score using a gas-capped STATICCALL, defaulting to 5000 if the call fails
  • Writes each trade as a packed record and labels sell positions by hold time (bot, flipper, trader, strategist, holder)
  • Credits platform and dev fees as PoolManager claims payable via collect, sends the mole share directly while its balance is low, and takes the capsule share to the burrow
  • Enforces a launch guard that reverts buys above 2% of supply during the first 20 swaps after the launch buy
  • Allows a capsule to be buried in the same transaction through hookData, forwarding it to the burrow
Swap behaviour
beforeSwap asks the external model for a score, computes the total fee in pips, and when ETH is the specified side returns a fee delta. afterSwap records the trade, applies the launch buy guard, updates the burrow with season metrics, optionally buries a capsule from hookData, and settles the fee on the ETH leg.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Every swap pays a dynamic fee in ETH: 0.30% platform, 0.90% dev, 0.10% mole, plus a capsule share of 0.20% to 1.00% set per trade by the external model's score (0.2% + 0.8% times score). Fees are taken by the hook through beforeSwap/afterSwap return deltas, and the platform and dev shares are minted as PoolManager claims owed to the fixed recipients. The mole share is sent directly while the mole balance is under 0.1 ETH, otherwise it is added to the dev share; the capsule share is taken to the burrow.
Owner & admin controls
No admin controls found. The hook has no owner, no pause, no upgrade path; recipients, model, burrow, token and pool manager are immutable constructor arguments. Only the fixed platform and dev recipients can be paid out via collect (anyone may trigger it), and the burrow address can call noteCapsule.

Enabled Uniswap v4 callbacks

beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeInitialize: validates the pool (ETH/TEMO, dynamic fee, tick spacing 1) and records the pool id and launch time. beforeSwap: asks the model for a score, computes the fee and returns it as a specified-currency delta when ETH is the specified side. afterSwap: records the trade, enforces the launch buy cap, notifies the burrow, optionally buries a capsule from hookData, and settles the ETH-leg fee via a return delta. beforeSwapReturnDelta and afterSwapReturnDelta: allow the hook to take fee amounts out of swap deltas.

Security & trust assessment

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

Who controls it: There is no privileged key. Behaviour is fixed at deployment, so no operator can change fees or block swaps. The external model and burrow contracts are immutable references; their correctness and any upgradeability sit outside this contract and were not analysed.

Risk to user funds: The hook does not custody user principal; it takes a fee from each swap through return deltas and holds accrued fee claims in the PoolManager. Swaps can revert via the launch cap, gas budget, partial-fill check or a failing direct take to the mole or burrow, but no owner can seize or redirect funds.

Security findings

  • [medium] Fee depends on an external immutable model: The fee is sized from an external model STATICCALL capped at 90k gas. Any failure or non-32-byte return falls back to a neutral score of 5000, so an unreliable or malicious model can only move the capsule share between 0.2% and 1.0%.
  • [low] Platform and dev fees held as PoolManager claims: The hook keeps an ETH claim balance per recipient inside the PoolManager and pays it out via collect. Funds sit in the PoolManager under the hook's claim accounting until collected by anyone.
  • [medium] Launch guard can revert large early buys: afterSwap reverts with LaunchBuyTooLarge if a buy in the first 20 swaps after launch exceeds 20,000,000 tokens, and beforeSwap reverts when gas is below budget. Both can block specific swaps during the launch window.
  • [info] tx.origin used as wallet identity: The contract reads tx.origin as the trader identity and labels positions by hold time, so wallet profiling is based on the originating EOA and can be circumvented by using multiple wallets or contracts.
  • [low] Direct ETH transfer to mole address can revert swaps: The mole share is paid directly to an external address when its balance is below 0.1 ETH; otherwise it is folded into the dev share. The take call to the mole could be affected by its ability to accept ETH only if it reverts, which would revert the swap.

Contract details

Verified source
Yes (TemoHook)
Compiler
solc 0.8.26+commit.8a97fa7a
Bytecode size
16,273 bytes
Upgradeable proxy
No
Detected patterns
erc6909-claims, launchpad, moves-currency, return-delta, self-unlock

Pools using TemoHook