STRMOGHook on Ethereum

Uniswap v4 Hook Contract 0x269044c34e5c6c41d5908d88924f544de38cc0cc on Ethereum · Fee sharing · Verified contract

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

What it does

Charges a fixed 10% fee on swaps in one ETH/STRMOG pool and routes the accrued fees to a treasury.

How it works step by step

  • Binds to exactly one pool via setManagedPool, requiring currency0 to be native ETH and currency1 to be STRMOG
  • Takes a fixed 10% fee on swaps by returning a before-swap or after-swap delta
  • Mints ERC-6909 claim balances in the pool manager to represent accrued ETH or STRMOG fees
  • Lets anyone call sweepETH or sweepToken to burn claims and send 99.75% to the treasury and 0.25% to the caller as a bounty
  • Pokes the treasury's pokeV2 after each sweep, ignoring failures
Swap behaviour
beforeSwap takes a 10% fee on ETH-in exact-in swaps; afterSwap takes a 10% fee on the remaining swap directions, taking the fee in ETH or STRMOG depending on direction and exact-in or exact-out.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Charges a fixed 10% fee (FEE_BPS 1000) on swap amounts, taken as claim tokens via poolManager.mint and accounted in owedEth or owedToken; the fee is taken in ETH for ETH-in exact-in swaps (beforeSwap), and in ETH or STRMOG on afterSwap depending on direction and exact-in/exact-out; accrued fees are swept to the immutable treasury with a 0.30% caller bounty.
Owner & admin controls
Owner (Ownable) can call setManagedPool once to bind the pool (only settable if unset, currency0 must be ETH) and can transfer or renounce ownership; no pause, upgrade, or fee-parameter setters are present since FEE_BPS and SWEEP_BOUNTY_BPS are constants and treasury is immutable.

Enabled Uniswap v4 callbacks

beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

beforeSwap: charges the 10% fee on ETH-in exact-in swaps by returning a specified-amount delta and minting ETH claims. afterSwap: charges the 10% fee on the other swap directions by returning an unspecified-amount delta and minting ETH or STRMOG claims. beforeSwapReturnDelta and afterSwapReturnDelta: allow the hook to take its fee through returned deltas.

Security & trust assessment

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

Who controls it: The owner can only bind the managed pool once and transfer or renounce ownership; the owner cannot change fees, pause swaps, or withdraw funds, so a privileged key cannot directly harm users' balances, though a mis-bound pool would permanently route fees for that pool only.

Risk to user funds: The hook holds only ERC-6909 claim balances it mints for fees; it does not hold pool liquidity or user principal. Swaps take a 10% fee on the affected leg, and the hook cannot block swaps except through the revert paths in unlockCallback or the managed-pool check, which only rejects non-managed pools.

Security findings

  • [info] Fixed 10% swap fee via return deltas: beforeSwap and afterSwap take a fixed 10% fee on every managed-pool swap via return deltas; the fee rate is a constant and cannot be changed by any admin.
  • [low] One-time pool binding by owner: setManagedPool can be called by the owner exactly once, and only if currency0 is native ETH, binding the hook to a single pool that cannot be changed afterwards.
  • [info] Permissionless fee sweeping with caller bounty: sweepETH and sweepToken are permissionless; they burn accrued claims and pay a 0.30% bounty to the caller and the remainder to the treasury, with an external poke to the treasury after the unlock.
  • [low] Treasury is a fixed immutable recipient: The treasury address is immutable and set at deployment; if the treasury contract is unable to accept payments the try/catch on pokeV2 protects sweeps, but the treasury receives funds through poolManager.take which could revert if the recipient rejects transfers.

Contract details

Verified source
Yes (STRMOGHook)
Compiler
solc 0.8.28+commit.7893614a
Bytecode size
7,819 bytes
Upgradeable proxy
No
Detected patterns
erc6909-claims, moves-currency, ownable, return-delta, self-unlock

Pools using STRMOGHook