ArkHook on Ethereum
Uniswap v4 Hook Contract 0x30ca6f7b31b65b7977bd3991c532ce255bff0044 on Ethereum · Fee sharing · Verified contract
- Volume (24h)
- $0
- Value locked (TVL)
- $34.37K
- All-time volume
- $1.09M
- Pools using this hook
- 1
- Swaps (24h)
- 0 (0 traders)
- Total swaps
- 1,828
What it does
Charges a fixed fee on every swap of the official ARK/WETH pool and routes it to a fee router, with owner-adjustable buy fee overrides for designated senders.
How it works step by step
- Restricts itself to one official ARK/WETH pool key, reverting on any other pool
- Charges an immutable sell fee when ARK is sold into the pool
- Charges a buy fee when ARK is bought, with owner-configurable override senders
- Takes the fee via manager.take and forwards it to an immutable fee router
- Emits SwapObserved with volume, fee and tick data for each swap
- Optionally calls owner-configured buyback and harbor maintenance targets after each swap
- Swap behaviour
- On each swap of the official pool, afterSwap computes a fee on the unspecified currency: sells of ARK pay the immutable sellFeeBps and buys of ARK pay buyFeeBps or an owner-set override. The fee is taken via manager.take, sent to the fee router, and returned as an afterSwap delta.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- Takes a fee on every swap of the official ARK/WETH pool, as a percentage of the unspecified-currency amount: sells of the ARK token pay sellFeeBps (immutable). Buys of the ARK token pay buyFeeBps by default, but the owner-set override senders (board, lock and quote senders, the latter keyed by hookData markers) can use board or lock buy fee bps instead, which are owner-configurable up to 100%. The fee is taken via manager.take and forwarded to a fee router under the HOOK_FEE_ROUTE label.
- Owner & admin controls
- Owner (Ownable2Step, two-step transfer) can set buy fee override senders and bps via setBuyFeeOverrides until freezeBuyFeeOverrides is called (permanent); can set buyback and harbor maintenance targets and gas limits via setMaintenanceTargets until freezeMaintenanceConfig is called (permanent). Renounce is disabled. Fixed buyFeeBps, sellFeeBps, poolFee and tickSpacing are immutable. No pause or upgrade mechanism found; contract is not a proxy.
Enabled Uniswap v4 callbacks
afterSwap, afterSwapReturnDelta
afterSwap: records swap accounting, collects the fee, routes it to the fee router and triggers the soft maintenance calls. afterSwapReturnDelta: returns the fee amount as a hook delta so the fee is taken from the swap output.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: The owner can set any buy fee override to up to 10,000 bps (100%) for designated sender addresses, which would confiscate the entire unspecified-currency output of those senders' buys until the overrides are frozen. The owner can also point the buyback and harbor maintenance targets at arbitrary contracts with a gas limit, and those contracts are called from within afterSwap while maintenanceActive is set. The owner can freeze all of these settings permanently.
Risk to user funds: The hook takes a percentage of swap output from every official-pool swap via afterSwapReturnDelta, and its owner can raise the buy fee for override senders to 100% until frozen. It holds fees only transiently, forwarding them to the fee router in the same transaction. It does not hold pool liquidity or block swaps beyond the fee itself.
Security findings
- [medium] Owner-adjustable buy fee up to 100% for override senders: setBuyFeeOverrides lets the owner set board and lock buy fee bps up to BPS (100%) for designated senders. Until freezeBuyFeeOverrides is called, those senders' buys can be taxed at full output.
- [medium] Owner-set external maintenance calls run inside swaps: afterSwap calls arbitrary owner-configured targets (executeBuybackFromHook and reinforceFromHook) with a bounded gas limit and ignores failures, so the owner controls external code that runs during every swap of the pool.
- [low] Fees depend on an external fee router: Hook takes tokens with manager.take and forwards them to feeRouter, which is an immutable but external contract whose behaviour is not part of the verified source here.
- [info] Single owner key with two-step transfer: Ownable2Step ownership with renounce disabled; the owner key is a single point of control for the fee and maintenance settings until those are frozen.
- [info] Core fee parameters are immutable and pool-restricted: Fixed sell and default buy fees are immutable and bounded by BPS; all swaps are restricted to the single official pool id, and other hook callbacks revert as unused.
Contract details
- Verified source
- Yes (ArkHook)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 10,887 bytes
- Upgradeable proxy
- No
- Detected patterns
- moves-currency, oracle, ownable, return-delta
Pools using ArkHook
- ARK / WETH (0.00% fee) — 24h volume $0, TVL $34.37K, 0 swaps today