UniHooks

Explore hooks

Every hook that has been attached to at least one Uniswap v4 pool.

AgeHookChainPermissionsPools
36d 0x1110…28ccRuns code on every swap · Can take tokens from swaps · Gates who can add liquidity · Runs at pool creation Ethereum beforeInitbeforeAddLiqbeforeSwapafterSwap+2 19 13mo NFTStrategyHookRuns code on every swap · Can take tokens from swaps · Gates who can add liquidity · Runs at pool creation Ethereum beforeInitbeforeAddLiqbeforeSwapafterSwap+1 19 21mo BunniHookBunni v2 hook that implements a custom AMM in Uniswap v4, handling swaps entirely in `beforeSwap` via custom liquidity density functions (LDF), TWAP oracles, surge fees, and am-AMM for MEV recapture. Supports auto-rebalancing via FloodPlain and optional per-pool hooklet extensions. Ethereum afterInitbeforeAddLiqbeforeSwapswapDelta 19 14d 0xa176…2888Runs code on every swap · Can take tokens from swaps · Sets its own swap fee · Gates who can add liquidity · Runs at pool creation Ethereum beforeInitbeforeAddLiqbeforeSwapswapDelta 18 31d HalcyonHookRuns code on every swap · Sets its own swap fee · Gates who can add liquidity · Runs at pool creation Ethereum afterInitbeforeAddLiqbeforeSwapafterSwap 18 2mo LaunchHookSingleton hook for token launch pools created by a LaunchFactory. Takes trading fees on the stock side (currency0) on every swap and splits them 30% to a platform treasury, a creator-chosen share to the pool creator recipient, and the remainder to token holders via a pull-based FeeDistributor. Exact-output sells are not supported. Ethereum beforeInitbeforeSwapafterSwapswapDelta+1 18 5mo V4SellBlockHookBlocks all token-to-ETH swaps (sells) by reverting in beforeSwap when zeroForOne is false, while permitting ETH-to-token swaps (buys). Intended for use as a honeypot mechanism, deployed once via CREATE2 and reused across pools to prevent holders from selling their tokens. Ethereum beforeSwap 18 2mo TripoolsAntiSnipeHookAnti-snipe and dynamic-fee tax hook serving all TripoolsLaunchFactory pools. Enforces a 6-second anti-snipe window with a flat 50% tax on non-whitelisted buys (100% to protocol treasury), and a cycling tiered tax schedule on ordinary buys and sells, split 20%/80% between protocol treasury and token creator, always collected in ETH via BeforeSwapDelta and AfterSwapDelta. Ethereum beforeSwapafterSwapswapDeltaafterSwapDelta 17 18d EtherealFactoryRuns code on every swap · Can take tokens from swaps · Runs at pool creation Ethereum beforeInitbeforeSwapafterSwapswapDelta+1 16 29d HookVolveHookV4Runs code on every swap · Can take tokens from swaps · Sets its own swap fee · Can block LP withdrawals · Gates who can add liquidity · Runs at pool creation · Handles donations to LPs Ethereum beforeInitbeforeAddLiqbeforeRemoveLiqbeforeSwap+4 16 3mo LaunchpadHookA launchpad hook that collects configurable swap fees on registered token pools, splits fees between token creators and a platform treasury, distributes cuts through a three-tier referral chain, and records quote volume to a factory contract for graduation tracking. Ethereum beforeSwapafterSwapswapDeltaafterSwapDelta 16 4mo ClankerHookStaticFeeV2A Clanker platform hook that enforces per-pool static LP fees with separate buy/sell rates for the Clanker token, collects a protocol fee on each swap via beforeSwap/afterSwap return deltas, and supports an optional MEV-protection module that temporarily raises fees on newly created pools. Ethereum beforeInitbeforeAddLiqbeforeSwapafterSwap+2 16 24d ReplicaWhitelistHookA Uniswap v4 hook that restricts swaps to whitelisted addresses. It checks `tx.origin` against an external `ISwapWhitelist` contract in `beforeSwap`, reverting with `SwapperNotWhitelisted` for non-whitelisted callers. No modification to swap execution occurs beyond access control. Ethereum beforeSwap 15 56d GweiFeeHookThe shared Uniswap v4 hook for the gwei.fun token launchpad. On every swap it takes a fee in beforeSwap via BeforeSwapDelta — composed of a platform fee plus a per-pool creator tax with an optional linearly-decaying anti-snipe rate — and splits the proceeds between the pool creator and a protocol buyback vault, accumulating them as ERC-6909 claims redeemable lazily. Ethereum beforeInitbeforeSwapswapDelta 15 2mo 0x1030…4088Runs code on every swap · Can take tokens from swaps · Sets its own swap fee Ethereum beforeSwapswapDelta 15 3mo NFTXV4HookNFTX's Uniswap v4 hook for NFT collection token pools, managing pool lifecycle (register, initialize, deregister), dynamic LP fees with per-address exemptions, an additional AMM fee credited to a beneficiary, deferred LP fee donations, and a truncated price oracle. Each pool is tied to one NFT collection. Ethereum beforeInitbeforeAddLiqafterAddLiqbeforeRemoveLiq+4 15 3mo SaturnOmnichainV4HookA hook with only the afterInitialize permission bit set, where the callback itself is a no-op. The contract exposes an initializePools() function that calls an external ISaturnOmnichainLiquidityBootstrapper to obtain and store the initial tick, but this is independent of the hook callback. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA minimal hook for the Saturn Omnichain project that holds only the afterInitialize permission but performs no logic within that callback. Pool initialization is delegated to an external LiquidityBootstrapper contract via initializePools(), which records the initial tick. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Saturn Omnichain project hook that registers the afterInitialize callback (implemented as a no-op). Exposes an initializePools() function callable by anyone, which delegates to an external LiquidityBootstrapper contract to bootstrap liquidity and record the initial pool tick. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Uniswap v4 hook for the Saturn Omnichain project that registers an afterInitialize callback (no-op) and exposes an initializePools() function that delegates to an external liquidity bootstrapper contract to seed initial pool positions. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA minimal hook for the Saturn Omnichain protocol with only an afterInitialize permission. The afterInitialize callback is a no-op; actual pool setup is handled externally via initializePools(), which calls a LiquidityBootstrapper contract and records the initial tick. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA minimal hook for the Saturn Omnichain project with only afterInitialize enabled as a no-op stub. Liquidity bootstrapping is delegated to an external ISaturnOmnichainLiquidityBootstrapper contract called via initializePools(), which records the initial tick. Has no swap-related logic. Ethereum afterInit 15 3mo SaturnOmnichainV4HookMinimal hook for Saturn Omnichain that implements only afterInitialize as a no-op. Pool bootstrapping is performed via a separate ISaturnOmnichainLiquidityBootstrapper contract that sets initial tick and liquidity; the hook records initialTick and a poolInitialized flag. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Uniswap v4 hook for the Saturn Omnichain project that holds an afterInitialize permission (callback is a no-op) and exposes an initializePools() entry point that delegates liquidity bootstrapping to an external contract and records the initial tick. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Uniswap v4 hook for the Saturn Omnichain project that registers an afterInitialize permission (the callback is a no-op). Pool initialization and liquidity bootstrapping are performed via a separate `initializePools()` function that calls an external LiquidityBootstrapper contract to set the initial tick and pool positions. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Uniswap v4 hook for the Saturn Omnichain project that registers the afterInitialize permission but performs no action in that callback. Pool initialization and initial tick recording are handled externally via the initializePools() function, which delegates to an immutable LiquidityBootstrapper contract. All hook callbacks are passive no-ops. Ethereum afterInit 15 3mo SaturnOmnichainV4HookMinimal hook for the Saturn Omnichain project that only registers an afterInitialize permission. The afterInitialize callback is a no-op; pool initialization and liquidity bootstrapping are handled externally via a separate LiquidityBootstrapper contract. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA minimal Uniswap v4 hook for the Saturn Omnichain project that records pool initialization state via an external liquidity bootstrapper contract. Only afterInitialize is active; no swap or liquidity callbacks modify swap behavior. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Uniswap v4 hook for the Saturn Omnichain project that records initial tick data. Implements only afterInitialize (a no-op returning the selector), while a separate initializePools() function triggers an external bootstrapper contract to seed liquidity and store the initial tick. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA minimal hook for the Saturn Omnichain project that only implements afterInitialize. It delegates liquidity bootstrapping to an external ISaturnOmnichainLiquidityBootstrapper contract and records the initial tick. No swap, fee, or liquidity logic is active. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA minimal hook for the Saturn Omnichain project that records the pool's initial tick after initialization, delegating liquidity setup to an external bootstrapper contract. No swap, liquidity modification, or fee logic is implemented. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Uniswap v4 hook for Saturn Omnichain that registers only the afterInitialize permission but performs no action in the callback. The contract separately exposes an initializePools() function that calls an external ISaturnOmnichainLiquidityBootstrapper to coordinate initial liquidity bootstrapping. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Uniswap v4 hook for the Saturn Omnichain protocol with an afterInitialize callback that is a no-op stub. The contract exposes an initializePools() function that calls an external liquidity bootstrapper and stores the resulting initial tick and initialization status on-chain. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Uniswap v4 hook for the Saturn Omnichain project. Only `afterInitialize` is enabled (as a no-op returning the selector). Liquidity bootstrapping is delegated to an external `ISaturnOmnichainLiquidityBootstrapper` contract via the `initializePools()` function. All swap and liquidity callbacks are pure no-ops. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Uniswap v4 hook for the Saturn Omnichain project with only the afterInitialize permission enabled (implemented as a no-op stub returning the selector). Pool initialization is bootstrapped via an external ISaturnOmnichainLiquidityBootstrapper contract through a separate initializePools() call; the hook does not modify swap or liquidity behavior. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Uniswap v4 hook for the Saturn Omnichain project that records the initial tick after pool initialization via an external liquidity bootstrapper contract. Has no swap-time logic. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA minimal Uniswap v4 hook for the Saturn Omnichain project. The afterInitialize callback is a no-op. The contract separately exposes an initializePools() function that calls an external liquidity bootstrapper and stores the returned tick as initialTick. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Uniswap v4 hook for the Saturn Omnichain protocol. Registers the `afterInitialize` permission but the callback is a no-op. Pool state (initial tick, initialized flag) is recorded by the separate `initializePools()` function which delegates to a `LiquidityBootstrapper` contract. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Uniswap v4 hook for the Saturn Omnichain protocol. Only the afterInitialize flag is set; its callback is a pure no-op returning the selector. Pool initialization is delegated to an external ISaturnOmnichainLiquidityBootstrapper contract via the public initializePools() function. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA minimal Uniswap v4 hook for the Saturn Omnichain project that only implements afterInitialize. All swap, liquidity, and donate callbacks are no-ops. Provides an initializePools() function that delegates to an external ISaturnOmnichainLiquidityBootstrapper to bootstrap liquidity and record the initial tick. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Uniswap v4 hook for the Saturn Omnichain project that registers an afterInitialize permission but performs no logic in the callback. Pool initialization and initial tick recording are handled separately via the `initializePools()` function, which calls an external `ISaturnOmnichainLiquidityBootstrapper` contract. All other hook callbacks (swap, liquidity, donate) are no-ops. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Uniswap v4 hook for the Saturn Omnichain project. Only the afterInitialize permission is set, but the afterInitialize callback is a no-op (returns selector only). A separate permissionless initializePools() function calls ISaturnOmnichainLiquidityBootstrapper.bootstrap() to bootstrap liquidity and records the returned initial tick. All swap, liquidity, and donate callbacks are no-ops. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA Uniswap v4 hook for the Saturn Omnichain project. Only the afterInitialize flag is active; the callback is a no-op returning only the selector. The contract also exposes an `initializePools()` function (separate from the hook callback) that delegates to an external liquidity bootstrapper to bootstrap liquidity and record an initial tick. Ethereum afterInit 15 3mo SaturnOmnichainV4HookThe afterInitialize hook does nothing — it is a pure stub returning only the selector. The contract separately exposes an initializePools() function that calls an external LiquidityBootstrapper to record an initial tick, but this is unrelated to the hook callback. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA minimal hook for the Saturn Omnichain project that only implements afterInitialize. All swap and liquidity callbacks are pure no-ops. Pool initialization is bootstrapped via an external LiquidityBootstrapper contract that sets the initial tick. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA minimal hook for the Saturn Omnichain project that sets the afterInitialize permission bit but performs no logic in the callback. Pool initialization and tick recording are handled externally via the `initializePools()` function, which calls the liquidity bootstrapper contract. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA minimal Uniswap v4 hook for the Saturn Omnichain project with only the afterInitialize permission enabled (no-op callback). Provides an external initializePools() function that delegates to a liquidity bootstrapper contract to set the initial tick and seed liquidity. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA minimal hook for the Saturn Omnichain project with only afterInitialize enabled (as a no-op). Exposes an initializePools() function that delegates liquidity bootstrapping to a separate ISaturnOmnichainLiquidityBootstrapper contract. No swap or liquidity-modification logic is active. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA minimal Uniswap v4 hook for the Saturn Omnichain protocol. Only implements afterInitialize, delegating pool bootstrapping to an external ISaturnOmnichainLiquidityBootstrapper contract, which returns the initial tick that is stored on-chain. Has no swap or liquidity logic. Ethereum afterInit 15 3mo SaturnOmnichainV4HookA hook for the Saturn Omnichain project with an afterInitialize permission flag, though the afterInitialize callback is a no-op. The contract exposes a separate `initializePools()` function that calls an external liquidity bootstrapper to record the initial tick in storage. All hook callbacks are no-ops. Ethereum afterInit 15