UniHooks

Every Uniswap v4 hook, live

Every hook attached to at least one Uniswap v4 pool, graded and explained in plain English, with the pools that use it.

AgeHookChainPermissionsPools
15mo 0x7ac0…8080Runs code on every swap · Sets its own swap fee Arbitrum beforeSwap 1 15mo 0x5d51…c080Runs code on every swap · Sets its own swap fee Arbitrum beforeSwap 1 15mo 0x5df3…8080Runs code on every swap · Sets its own swap fee Arbitrum beforeSwap 1 15mo 0x902e…6540Runs code on every swap · Runs at pool creation Arbitrum beforeInitafterAddLiqafterRemoveLiqafterSwap 1 15mo 0x86be…6888Runs code on every swap · Can take tokens from swaps · Gates who can add liquidity · Runs at pool creation Arbitrum beforeInitbeforeAddLiqbeforeSwapswapDelta 1 15mo 0x43b1…2540Runs code on every swap · Runs at pool creation Arbitrum beforeInitafterAddLiqafterRemoveLiqafterSwap 1 15mo 0xb0b9…e888Runs code on every swap · Can take tokens from swaps · Gates who can add liquidity · Runs at pool creation Arbitrum beforeInitbeforeAddLiqbeforeSwapswapDelta 1 16mo TestHookA minimal test hook that increments an on-chain counter and emits events on beforeInitialize and beforeAddLiquidity calls. Has no swap hooks and does not modify swap execution. Arbitrum beforeInitbeforeAddLiq 1 16mo 0xeec2…4840Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqafterSwap 1 16mo 0x260f…8840Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqafterSwap 1 16mo 0x4f43…8840Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqafterSwap 1 16mo LimitOrderHookUniswap v4 hook that records the pre-swap tick in transient storage and triggers limit order execution via an external LimitOrderManager after each swap, filling orders whose price range was crossed. Supports role-gated dynamic LP fee updates via updateDynamicLPFee(). Arbitrum beforeSwapafterSwap 1 16mo LimitOrderHookA Uniswap v4 hook that enables on-chain limit orders by recording the current tick before each swap (via transient storage) and triggering execution of crossed limit orders through an external LimitOrderManager after each swap. A privileged fee manager role can update the pool's dynamic LP fee via poolManager.updateDynamicLPFee(). Arbitrum beforeSwapafterSwap 1 16mo LimitOrderHookA Uniswap v4 hook that records the current tick before each swap via transient storage, then triggers limit order execution in afterSwap based on tick movement. Includes a privileged role that can update the pool's dynamic LP fee via poolManager.updateDynamicLPFee(). Arbitrum beforeSwapafterSwap 1 16mo 0x8581…0ac0Runs code on every swap · Can block LP withdrawals · Gates who can add liquidity Arbitrum beforeAddLiqbeforeRemoveLiqbeforeSwapafterSwap 1 16mo 0x6d43…0ac0Runs code on every swap · Can block LP withdrawals · Gates who can add liquidity Arbitrum beforeAddLiqbeforeRemoveLiqbeforeSwapafterSwap 1 17mo 0xfb79…00c0Runs code on every swap · Sets its own swap fee Arbitrum beforeSwapafterSwap 1 17mo BaseHookMockA minimal BaseHook mock implementation for Uniswap v4 that stubs beforeAddLiquidity, beforeRemoveLiquidity, beforeSwap, and afterSwap as no-ops. The beforeSwap returns a hardcoded fee value (4000) without the OVERRIDE_FEE_FLAG set, so it has no effect on swap execution. Arbitrum beforeAddLiqbeforeRemoveLiqbeforeSwapafterSwap 1 18mo 0x3c5d…4044Runs code on every swap · Can take tokens from swaps Arbitrum afterSwapafterSwapDelta 1 18mo 0xccc7…48c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo 0xee0e…c8c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo 0x3fba…c8c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo 0xf30e…88c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo 0x7e19…c8c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo 0xfb33…08c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo 0x808a…08c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo 0x80ff…88c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo 0x776c…c8c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo 0xbf11…88c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo 0xac8b…88c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo 0x3337…88c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo 0x767f…88c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo 0xd7be…88c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo WETHHookA Uniswap v4 hook that enables seamless wrapping and unwrapping of ETH and WETH in a dedicated zero-fee pool, intercepting swaps to perform 1:1 ETH↔WETH conversion while blocking direct liquidity operations. Arbitrum beforeInitbeforeAddLiqbeforeSwapswapDelta 1 18mo 0x1fac…c8c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo 0xd423…c8c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 18mo 0x037b…00ccRuns code on every swap · Can take tokens from swaps Arbitrum beforeSwapafterSwapswapDeltaafterSwapDelta 1 18mo 0x3589…88c0Runs code on every swap · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapafterSwap 1 19mo 0xac63…00ccRuns code on every swap · Can take tokens from swaps Arbitrum beforeSwapafterSwapswapDeltaafterSwapDelta 1 19mo Slippage Fee Hook (Arbitrum)Dynamically computes LP fees before each swap based on the simulated price impact (tick difference between current and post-swap price), charging higher fees for larger swaps to reduce impermanent loss for liquidity providers. Requires pools to use dynamic fees and reverts any swap that would cause slippage exceeding 5%. Arbitrum afterInitbeforeSwap 1 19mo 0xa9db…c540Runs code on every swap Arbitrum afterAddLiqafterRemoveLiqafterSwap 1 19mo YieldSwapHookA custom AMM hook for Uniswap v4 that implements a time-decaying yield pricing curve for SY (Standardized Yield) and PT (Principal Token) pairs. Swap amounts are computed via a logarithmic formula whose rate scalar and anchor decay linearly from epoch start to zero at epoch end, with reserves managed internally by the hook. Arbitrum beforeInitbeforeAddLiqbeforeRemoveLiqbeforeSwap+1 1 19mo 0xb974…c440Runs code on every swap Arbitrum afterAddLiqafterSwap 1 19mo YieldSwapHookA custom AMM hook for yield products (SY and PT tokens) that implements a time-weighted pricing formula using a logarithmic curve. Supports only unidirectional (SY→PT), exact-input swaps; price decays linearly from epoch start to end. Liquidity is managed via ERC-20 shares using a Uniswap V2-style formula. Arbitrum beforeInitbeforeAddLiqbeforeRemoveLiqbeforeSwap+1 1 19mo YieldSwapHookCustom AMM hook for yield token pairs (SY and PT), implementing a time-weighted pricing formula with a decaying rate anchor (Pendle-style curve). Supports only exact-input SY-to-PT swaps; LP shares are issued as ERC20 tokens managed by the hook itself. Arbitrum beforeInitbeforeAddLiqbeforeRemoveLiqbeforeSwap+1 1 19mo 0x9c53…4888Runs code on every swap · Can take tokens from swaps · Gates who can add liquidity Arbitrum beforeAddLiqbeforeSwapswapDelta 1 19mo BlackListHookA beforeSwap hook that blocks blacklisted addresses from swapping on a per-pool basis. The swapper's address must be ABI-encoded in hookData; the pool owner manages the blacklist via setBlackListStatusForAddress. Swaps from unlisted addresses proceed normally. Arbitrum beforeSwap 1 19mo 0x4b01…00c0Runs code on every swap Arbitrum beforeSwapafterSwap 1 19mo 0xc13c…c0c0Runs code on every swap Arbitrum beforeSwapafterSwap 1 19mo 0xfbb2…00c0Runs code on every swap Arbitrum beforeSwapafterSwap 1