ManumissionHook on Ethereum

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

Volume (24h)
$166
Value locked (TVL)
$7.98K
All-time volume
$547.28K
Pools using this hook
1
Swaps (24h)
2 (2 traders)
Total swaps
1,640

What it does

A launch-pool hook that charges a fixed 2% fee on every ETH pool swap, accumulates it until it reaches 2.8 ETH, pays that to a fixed creator address, then uses the remaining fees to buy IMD and send it to a dead address.

How it works step by step

  • Records the first native-ETH pool initialized through afterInitialize as the launch pool.
  • Takes a fixed 2% fee on buys and sells in the launch pool, via before- and after-swap return deltas.
  • Accumulates fees as ERC-6909 claims and tracks them in totalFees.
  • manumit() transfers Identity.MD seat #1376 to DEAD and pays 2.8 ETH to a fixed CREATOR address once fees reach the cap.
  • burnIMD() spends the remaining fees to buy IMD in a pool and sends the output to DEAD, bounded by a price reference and slippage check.
  • Stores a fixed manifesto string and emits events for status and burns.
Swap behaviour
On swaps in the launch native-ETH pool, beforeSwap or afterSwap takes a 2% fee on the ETH side of the trade and mints it as ERC-6909 claims to the hook. Swaps in other pools are untouched.
Liquidity behaviour
No liquidity callbacks.
Fee behaviour
Charges a 2% fee on every buy and sell of the launch native pool (BUY_FEE_BPS and SELL_FEE_BPS are both 200). Fees are minted to the hook as ERC-6909 claims and tracked in totalFees. Fees accumulate until 2.8 ETH (CREATOR_CAP) is reached; creatorEntitlement then pays CREATOR via manumit, and the remainder (burnable) funds IMD buybacks sent to DEAD.
Owner & admin controls
No admin controls found. There is no owner, pause, upgrade path or parameter setter; fees, ransom amount, burn batch sizes and the seat/IMD addresses are all public constants. The manumit and burnIMD functions can be called by anyone, and the CREATOR address receives the ransom but has no configurable authority.

Enabled Uniswap v4 callbacks

afterInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta

afterInitialize records the first native-ETH pool as the launch pool. beforeSwap takes the 2% fee on exact-input-ETH swaps via a specified-amount delta (beforeSwapReturnDelta). afterSwap takes the 2% fee on the unspecified side for other swaps (afterSwapReturnDelta) and validates partial-fill accounting on ETH-specified swaps.

Security & trust assessment

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

Who controls it: No privileged key exists in the source, so no single party can change rules, pause the hook or redirect fees. The only fixed-address actors are CREATOR (receives the 2.8 ETH ransom once) and the IDENTITY_MD seat transfer, which is executed by the hook itself.

Risk to user funds: The hook holds ERC-6909 fee claims on the pool manager and can transfer ETH to CREATOR (up to 2.8 ETH total) and IMD to DEAD through unlock callbacks. Swappers in the launch pool pay a fixed 2% fee. There is no mechanism for the hook to block swaps or seize LP principal, but the burn and ransom flows depend on external contracts whose behaviour is outside the hook's control.

Security findings

  • [medium] Dependence on external Identity.MD contract: manumit() calls transferFrom on the external IDENTITY_MD contract to move seat #1376 to DEAD, then verifies ownership. The hook relies on that external contract's behaviour; a malicious or unexpected ERC-721 would change the outcome, though the addresses are hard-coded.
  • [medium] External price reference dependency: burnIMD and pokeAnchor read a POOL4_HOOK external contract (marketOpen, refTick) to set price references. A malicious or upgraded POOL4 hook could feed a false reference tick, but burns are bounded by slippage checks against the reference and a deviation limit.
  • [info] Swap fee via return deltas: The hook takes its 2% fee through return deltas on every launch-pool swap, so it can reduce the output or increase the input of swappers by that amount. This is a fixed, disclosed, non-configurable fee rather than a hidden drain.
  • [info] Hook moves currency and holds ERC-6909 claims: The hook mints ERC-6909 claims and calls poolManager.take to send ETH to CREATOR and IMD to DEAD. Funds moved are capped by the fee accounting, and reentrancy is guarded with transient storage.

Contract details

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

Pools using ManumissionHook