ArenaHook on Avalanche
Uniswap v4 Hook Contract 0xe32a5d788c568fc5a671255d17b618e70552e044 on Avalanche · Fee sharing · Verified contract
- Volume (24h)
- $78
- Value locked (TVL)
- $32.72K
- All-time volume
- $727.01K
- Pools using this hook
- 103
- Swaps (24h)
- 26 (18 traders)
- Total swaps
- 140,690
What it does
ArenaHook takes a fee on the output side of swaps, computed by an external fee helper contract per pool, and routes that fee to one or more recipients, while restricting which addresses may initialize new pools.
How it works step by step
- After each swap, it reads the unspecified-side amount and calculates a total fee from the external arenaFeeHelper contract for that pool.
- It settles the fee amount to itself as ERC-6909 claims on the PoolManager, then splits and takes it to each recipient listed by the fee helper.
- Any rounding remainder is sent to the last fee recipient in the list, which the code describes as the protocol.
- The fee helper address is set by the owner and can be replaced at any time.
- Pool initialization is gated: only addresses flagged in the isDeployer mapping may initialize a pool that uses this hook.
- A reentrancy guard wraps the afterSwap logic.
- Swap behaviour
- After every swap, the hook takes a fee denominated in the unspecified currency, settles it to itself as claims and distributes it to the recipients returned by arenaFeeHelper.
- Liquidity behaviour
- No liquidity callbacks.
- Fee behaviour
- The hook fee is read from arenaFeeHelper.getTotalFeePpm for the pool and charged after the swap via afterSwapReturnDelta; the split among recipients comes from arenaFeeHelper.getFeesForPool. The pool's static fee is separate from this.
- Owner & admin controls
- The owner (Ownable2Step, so ownership transfers need acceptance) can replace the fee helper via setArenaFeeHelper, add or remove pool deployers via setDeployer, and renounce or transfer ownership. The owner cannot directly set the fee percentage in this hook, but controls which helper computes it. No pause function or proxy upgrade pattern is visible.
Enabled Uniswap v4 callbacks
beforeInitialize, afterSwap, afterSwapReturnDelta
beforeInitialize restricts pool creation to approved deployers. afterSwap runs the fee collection and distribution logic. afterSwapReturnDelta lets the hook's returned fee amount alter the swap's accounting so the fee is taken from the trader's output.
Security & trust assessment
Risk level: medium (verified source, high confidence).
Who controls it: The owner controls the fee helper and the deployer allowlist. Through the helper, the owner can effectively control fee size and beneficiaries for every pool using this hook, which means a privileged key could redirect trader outputs.
Risk to user funds: The hook does not hold user principal directly but takes a fee on each swap's output, settling it as claims and paying recipients. Fee size and destination depend on the mutable external helper, so the owner-controlled helper is the main exposure. It has no visible pause that could block swaps.
Security findings
- [high] Owner can swap the fee helper: setArenaFeeHelper lets the owner point the hook at any contract, which then determines the fee rate, the recipients and the split. A malicious or buggy helper could set the fee to a very large value or redirect it, and the hook has no on-chain cap visible in this source other than the MAX_HOOK_FEE bound in BaseHookFee.
- [medium] Fee helper is trusted and external: getTotalFeePpm and getFeesForPool results are used directly without validation against each other beyond the remainder logic. If the helper returns a total that disagrees with the sum of recipient fees, the remainder goes to the last recipient, which could be unexpected for LPs or traders.
- [medium] Hook takes value on every swap via return delta: afterSwapReturnDelta means the hook alters trader output amounts and claims tokens on the PoolManager, so the hook holds pool-level claims that must be distributed correctly on each swap.
- [low] Deployer gate on pool initialization: Only addresses marked in isDeployer can initialize pools with this hook, so pool creation is permissioned by the owner.
- [info] handleHookFees is disabled: handleHookFees reverts with 'Not implemented', so no alternate fee withdrawal path exists in this contract.
Contract details
- Verified source
- Yes (ArenaHook)
- Compiler
- solc 0.8.30+commit.73712a01
- Bytecode size
- 7,524 bytes
- Upgradeable proxy
- No
- Detected patterns
- erc6909-claims, moves-currency, ownable, return-delta
Pools using ArenaHook
- AVAXCAT / WAVAX (0.30% fee) — 24h volume $78, TVL $1.92K, 2 swaps today
- ARENA / TOPIA (0.30% fee) — 24h volume $0, TVL $0, 6 swaps today
- EVA / ARENA (0.30% fee) — 24h volume $0, TVL $0, 3 swaps today
- ARENA / SWAMP (0.30% fee) — 24h volume $0, TVL $0, 3 swaps today
- JUNE / ARENA (0.30% fee) — 24h volume $0, TVL $0, 3 swaps today
- BANDS / ARENA (0.30% fee) — 24h volume $0, TVL $0, 2 swaps today
- AVLO / ARENA (0.30% fee) — 24h volume $0, TVL $0, 2 swaps today
- ARENA / SPT (0.30% fee) — 24h volume $0, TVL $0, 1 swaps today
- ARENA / WHEREMALEK (0.30% fee) — 24h volume $0, TVL $0, 1 swaps today
- RD / ARENA (0.30% fee) — 24h volume $0, TVL $0, 1 swaps today
- DISCLOSER / ARENA (0.30% fee) — 24h volume $0, TVL $0, 1 swaps today
- ARENA / PHOTOBOOTH (0.30% fee) — 24h volume $0, TVL $0, 1 swaps today
- WAVAX / PAPI (0.30% fee) — 24h volume $0, TVL $1.41K, 0 swaps today
- PAPI / ARENA (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today
- BATTLE / WAVAX (0.30% fee) — 24h volume $0, TVL $1.48K, 0 swaps today
- LOGIQ / ARENA (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today
- ARENA / BRRR (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today
- WAVAX / R3KT (0.30% fee) — 24h volume $0, TVL $1.65K, 0 swaps today
- SOON / ARENA (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today
- PTOP700 / ARENA (0.30% fee) — 24h volume $0, TVL $0, 0 swaps today