HookereumHook on Ethereum
Uniswap v4 Hook Contract 0xa7474986d66e58e2da30de9c43aba922196d60cc on Ethereum · Fee sharing · Verified contract
- Volume (24h)
- $8.96
- Value locked (TVL)
- $3.00
- All-time volume
- $8.96
- Pools using this hook
- 1
- Swaps (24h)
- 4 (1 traders)
- Total swaps
- 4
What it does
Takes a fixed 1% ETH fee on every swap of a Hookereum coin and splits the banked fees in code between the Hookereum revenue wallet, the coin's creator and the coin's treasury.
How it works step by step
- Registers each coin pool with its treasury and creator, accepting registrations only from the factory
- Takes a flat 1% fee in ETH on every swap, on whichever side ETH is specified, and mints it as ERC-6909 claims
- Banks fees per pool and rounds payouts to multiples of 10 wei so splits are exact
- settle() pays out banked fees: 50% to the revenue wallet, 20% to the creator and 30% to the coin's treasury via deposit()
- Queues any failed revenue or creator payout for later pushing so one failing recipient cannot block settlement
- Exposes openPrice() so treasuries can refuse to buy above a small margin over the first price of the block
- Swap behaviour
- On each swap a 1% fee is taken in ETH and banked as ERC-6909 claims on the PoolManager; swaps are never blocked or repriced beyond that fee. At the first swap of each block the pool price is recorded so treasuries can check for same-block price spikes.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- A flat 1% fee on every swap, taken in ETH on the specified side (exact-in buys, exact-out sells) via beforeSwap specified delta, or on the unspecified ETH side in afterSwap; fees are minted as ERC-6909 claims on the PoolManager and banked per pool. settle() pays banked fees out 50% to the Hookereum revenue wallet, 20% to the coin's creator and 30% to the coin's treasury, with unpushable shares queued for later pushing.
- Owner & admin controls
- No admin controls found. The hook is immutable with no owner, no pause, no upgrade path and no parameter setters; fee splits (50/20/30) and the 1% swap fee are constants. The factory is the only address allowed to register pools, and the revenue wallet is read from the factory via revenue().
Enabled Uniswap v4 callbacks
beforeInitialize, beforeSwap, afterSwap, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize restricts pool initialization to the factory for registered pools only. beforeSwap records the pool price at the first swap of each block and takes the 1% fee on the ETH-specified side. afterSwap takes the 1% fee on the unspecified side, mints the fee as ERC-6909 claims and enforces an exact fee amount. beforeSwapReturnDelta and afterSwapReturnDelta allow the hook to take the fee as a delta against the swap.
Security & trust assessment
Risk level: low (verified source, high confidence).
Who controls it: No privileged key exists in the hook itself, so no single party can change fees, block swaps or redirect funds. The only trust dependencies are the immutable PoolManager and factory addresses and the factory's revenue() getter, which determines where the 50% revenue share is sent; the factory's owner (if any) could change that destination.
Risk to user funds: The hook holds banked ETH claims on the PoolManager only, never pool liquidity itself, and cannot block buys or sells. A 1% fee is extracted from every swap as designed. Banked fees are paid out by permissionless settle() to the revenue wallet, creator and treasury, and queued amounts can be claimed by pushing; the hook has no mechanism to withdraw user funds to any other address.
Security findings
- [info] Strict fee accounting on swaps: Swaps revert if the amount actually settled differs from the expected 1% fee arithmetic, so partial fills are rejected rather than mispriced.
- [info] Payouts cannot block settlement: Revenue is sent via a low-level call with a 100000 gas cap and failures are queued in revenueDue for later pushRevenue(), so a reverting revenue wallet cannot block settlement; creator payouts similarly queue on failure.
- [low] Revenue destination depends on factory: The 50% revenue share destination is read from factory.revenue() at settlement time, so changes controlled at the factory redirect future revenue without any change to the hook.
- [low] Treasury deposit is an external call: settle() is callable by anyone and pays the coin's treasury through deposit() with a value transfer; the treasury's deposit implementation is outside this hook and determines whether that 30% share is safely received.
Contract details
- Verified source
- Yes (HookereumHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 6,711 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, return-delta, self-unlock
Pools using HookereumHook
- ETH / HKTEST (0.00% fee) — 24h volume $8.96, TVL $3.00, 4 swaps today