diff --git a/lib/cron/cache-pools.ts b/lib/cron/cache-pools.ts index 60ef9bd98f..19fe31a8a5 100644 --- a/lib/cron/cache-pools.ts +++ b/lib/cron/cache-pools.ts @@ -25,7 +25,7 @@ import { metricScope } from 'aws-embedded-metrics' import * as zlib from 'zlib' import dotenv from 'dotenv' import { v4HooksPoolsFiltering } from '../util/v4HooksPoolsFiltering' -import { BUNNI_POOLS_CONFIG } from '../util/bunni-pools' +import { HOOK_POOLS_DATA } from '../util/hooksAddressesAllowlist' // Needed for local stack dev, not needed for staging or prod // But it still doesn't work on the local cdk stack update, @@ -230,71 +230,18 @@ const handler: ScheduledHandler = metricScope((metrics) => async (event: EventBr } if (protocol === Protocol.V4) { - const manuallyIncludedV4Pools: V4SubgraphPool[] = [ - { - id: '0xe9eeab9794c33dff3dd8d0951cbe2d36619294af5a3a329f38f91f54be0b6d34', - feeTier: '10000', - tickSpacing: '200', - hooks: '0xc5a48b447f01e9ce3ede71e4c1c2038c38bd9000', - liquidity: '274563705100803912362733', - token0: { - symbol: 'fid:385955', - id: '0x112cf1cc540eadf234158c0e4044c3b5f2a33e5e', - name: 'degenfans', - decimals: '18', - }, - token1: { - symbol: 'MOXIE', - id: '0x8c9037d1ef5c6d1f6816278c7aaf5491d24cd527', - name: 'Moxie', - decimals: '18', - }, - tvlETH: 25.33120577965346308313185954009482, - tvlUSD: 56627.5525783346590219799350683533, - } as V4SubgraphPool, - { - id: '0x6bac01f0a8fb96eeb56e37506f210628714561113c748d43c6de50dc339edfe9', - feeTier: '10000', - tickSpacing: '200', - hooks: '0xc5a48b447f01e9ce3ede71e4c1c2038c38bd9000', - liquidity: '621568112474979678301274', - token0: { - symbol: 'base-economy', - id: '0x125490489a27d541e39813c08d260debac071bb7', - name: 'Base Economy', - decimals: '18', - }, - token1: { - symbol: 'MOXIE', - id: '0x8c9037d1ef5c6d1f6816278c7aaf5491d24cd527', - name: 'Moxie', - decimals: '18', - }, - tvlETH: 142.7576163222032969740638595951846, - tvlUSD: 316322.6881520965844428159264274397, - } as V4SubgraphPool, - { - id: '0x31781e65a4bd9ff0161e660f7930beee16026f819cd4d0bc7e17f6c78c29fc27', - feeTier: '10000', - tickSpacing: '200', - hooks: '0xc5a48b447f01e9ce3ede71e4c1c2038c38bd9000', - liquidity: '482843960670027606548690', - token0: { - symbol: 'fid:444067', - id: '0x15148da22518e40e0d2fabf5d5e6a22269ebcb30', - name: 'macster', - decimals: '18', - }, - token1: { - symbol: 'MOXIE', - id: '0x8c9037d1ef5c6d1f6816278c7aaf5491d24cd527', - name: 'Moxie', - decimals: '18', - }, - tvlETH: 44.1795925485023741879813651641809, - tvlUSD: 95050.95363442908526427214106054717, - } as V4SubgraphPool, - ] + // Add all pools which are included in HookLists and have all required V4SubgraphPool fields + const manuallyIncludedV4Pools: V4SubgraphPool[] = HOOK_POOLS_DATA.filter( + (poolData) => + poolData.feeTier && + poolData.tickSpacing && + poolData.hooks && + poolData.liquidity && + poolData.token0 && + poolData.token1 && + poolData.tvlETH !== undefined && + poolData.tvlUSD !== undefined + ) as V4SubgraphPool[] if (eulerHooksProvider) { const eulerHooks = await eulerHooksProvider?.getHooks() @@ -322,145 +269,6 @@ const handler: ScheduledHandler = metricScope((metrics) => async (event: EventBr } } - for (const bunniPool of BUNNI_POOLS_CONFIG) { - if (bunniPool.chainId === chainId) { - manuallyIncludedV4Pools.push({ - id: bunniPool.id, - feeTier: bunniPool.feeTier, - tickSpacing: bunniPool.tickSpacing, - hooks: bunniPool.hooks, - liquidity: bunniPool.liquidity, - token0: { - ...bunniPool.token0, - }, - token1: { - ...bunniPool.token1, - }, - tvlETH: bunniPool.tvlETH, - tvlUSD: bunniPool.tvlUSD, - } as V4SubgraphPool) - } - } - - if (chainId === ChainId.UNICHAIN) { - // UNICHAIN ETH/WETH: https://uniscan.xyz/tx/0x935979a7e4a1e3ea92b180009c46242b89a787fb4f2f5799bd53c675d5e0f9fd#eventlog - manuallyIncludedV4Pools.push({ - id: '0xba246b8420b5aeb13e586cd7cbd32279fa7584d7f4cbc9bd356a6bb6200d16a6', - feeTier: '0', - tickSpacing: '1', - hooks: '0x730b109bad65152c67ecc94eb8b0968603dba888', - liquidity: '173747248900', - token0: { - symbol: 'ETH', - id: '0x0000000000000000000000000000000000000000', - name: 'Ethereum', - decimals: '18', - }, - token1: { - symbol: 'WETH', - id: '0x4200000000000000000000000000000000000006', - name: 'Wrapped Ether', - decimals: '18', - }, - tvlETH: 33482, - tvlUSD: 60342168, - } as V4SubgraphPool) - } - - if (chainId === ChainId.OPTIMISM) { - // OPTIMISM ETH/WETH: https://optimistic.etherscan.io/tx/0x5f81f2aa19a50a76a94a30d3d2a9540cb3cd8597c94499a50330e4b6acbef5c1#eventlog - manuallyIncludedV4Pools.push({ - id: '0xbf3d38951e485c811bb1fc7025fcd1ef60c15fda4c4163458facb9bedfe26f83', - feeTier: '0', - tickSpacing: '1', - hooks: '0x480dafdb4d6092ef3217595b75784ec54b52e888', - liquidity: '173747248900', - token0: { - symbol: 'ETH', - id: '0x0000000000000000000000000000000000000000', - name: 'Ethereum', - decimals: '18', - }, - token1: { - symbol: 'WETH', - id: '0x4200000000000000000000000000000000000006', - name: 'Wrapped Ether', - decimals: '18', - }, - tvlETH: 826, - tvlUSD: 1482475, - } as V4SubgraphPool) - } - - if (chainId === ChainId.BASE) { - // BASE ETH/WETH: https://basescan.org/tx/0x221b6521ee4a19a25a424ecfb36b58b0b68fce7cda106bf4551d1424b0867bcc#eventlog - manuallyIncludedV4Pools.push({ - id: '0xbb2aefc6c55a0464b944c0478869527ba1a537f05f90a1bb82e1196c6e9403e2', - feeTier: '0', - tickSpacing: '1', - hooks: '0xb08211d57032dd10b1974d4b876851a7f7596888', - liquidity: '173747248900', - token0: { - symbol: 'ETH', - id: '0x0000000000000000000000000000000000000000', - name: 'Ethereum', - decimals: '18', - }, - token1: { - symbol: 'WETH', - id: '0x4200000000000000000000000000000000000006', - name: 'Wrapped Ether', - decimals: '18', - }, - tvlETH: 6992, - tvlUSD: 12580000, - } as V4SubgraphPool) - } - - if (chainId === ChainId.ARBITRUM_ONE) { - // ARBITRUM ETH/WETH: https://arbiscan.io/tx/0x0b393d141a3770292ae8508626a4443307403b0b958b7d0eff70fca2fb85c106#eventlog - manuallyIncludedV4Pools.push({ - id: '0xc1c777843809a8e77a398fd79ecddcefbdad6a5676003ae2eedf3a33a56589e9', - feeTier: '0', - tickSpacing: '1', - hooks: '0x2a4adf825bd96598487dbb6b2d8d882a4eb86888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', - }, - tvlETH: 23183, - tvlUSD: 41820637, - } as V4SubgraphPool) - } - - if (chainId === ChainId.MAINNET) { - // Mainnet ETH/WETH: https://app.uniswap.org/explore/pools/ethereum/0xf6f2314ac16a878e2bf8ef01ef0a3487e714d397d87f702b9a08603eb3252e92 - manuallyIncludedV4Pools.push({ - id: '0xf6f2314ac16a878e2bf8ef01ef0a3487e714d397d87f702b9a08603eb3252e92', - feeTier: '0', - tickSpacing: '1', - hooks: '0x57991106cb7aa27e2771beda0d6522f68524a888', - liquidity: '482843960670027606548690', - token0: { - symbol: 'ETH', - id: '0x0000000000000000000000000000000000000000', - name: 'ETH', - decimals: '18', - }, - token1: { - symbol: 'WETH', - id: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - name: 'WETH', - decimals: '18', - }, - tvlETH: 44000.1795925485023741879813651641809, - tvlUSD: 95050000.95363442908526427214106054717, - } as V4SubgraphPool) - } - manuallyIncludedV4Pools.forEach((pool) => pools.push(pool)) pools = v4HooksPoolsFiltering(chainId, pools as Array) diff --git a/lib/util/bunni-pools.ts b/lib/util/bunni-pools.ts deleted file mode 100644 index 0f2ec11639..0000000000 --- a/lib/util/bunni-pools.ts +++ /dev/null @@ -1,1177 +0,0 @@ -import { ChainId } from '@uniswap/sdk-core' -import { V4SubgraphPool } from '@uniswap/smart-order-router' - -export type BunniPool = V4SubgraphPool & { - chainId: ChainId - comment: string -} - -// Bunni pools -export const BUNNI_POOLS_CONFIG: BunniPool[] = [ - // Bunni USDC-USDT Unichain - { - id: '0xeec51c6b1a9e7c4bb4fc4fa9a02fc4fff3fe94efd044f895d98b5bfbd2ff9433', - chainId: ChainId.UNICHAIN, - tvlUSD: 28813605, - tvlETH: 6278.38, - comment: 'Bunni USDC-USDT Unichain', - feeTier: '0', - tickSpacing: '1', - hooks: '0x005af73a245d8171a0550ffae2631f12cc211888', - liquidity: '173747248900', - token0: { - symbol: 'USDC', - id: '0x078d782b760474a361dda0af3839290b0ef57ad6', - name: 'USDC', - decimals: '6', - }, - token1: { - symbol: 'USD₮0', - id: '0x9151434b16b9763660705744891fa906f660ecc5', - name: 'USD₮0', - decimals: '6', - }, - }, - // Bunni USDC-USDT Mainnet - { - id: '0xd9f673912e1da331c9e56c5f0dbc7273c0eb684617939a375ec5e227c62d6707', - chainId: ChainId.MAINNET, - tvlUSD: 23777373, - tvlETH: 5181, - comment: 'Bunni USDC-USDT Mainnet', - feeTier: '0', - tickSpacing: '1', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - symbol: 'USDC', - id: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - name: 'USD Coin', - decimals: '6', - }, - token1: { - symbol: 'USDT', - id: '0xdac17f958d2ee523a2206206994597c13d831ec7', - name: 'Tether USD', - decimals: '6', - }, - }, - // Bunni ETH-weETH Unichain - { - id: '0x6923777072439713c7b8ab34903e0ea96078d7148449bf54f420320d59ede857', - chainId: ChainId.UNICHAIN, - tvlUSD: 13395486, - tvlETH: 2918.83, - comment: 'Bunni ETH-weETH Unichain', - feeTier: '0', - tickSpacing: '1', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - symbol: 'ETH', - id: '0x0000000000000000000000000000000000000000', - name: 'Ethereum', - decimals: '18', - }, - token1: { - symbol: 'weETH', - id: '0x7dcc39b4d1c53cb31e1abc0e358b43987fef80f7', - name: 'Wrapped eETH', - decimals: '18', - }, - }, - // USR-USDC Mainnet - { - id: '0x77f73405a72f844e46d26a0bfd6f145c1a45ffcf6e4af5c86811405f29d2e615', - chainId: ChainId.MAINNET, - tvlUSD: 1553028, - tvlETH: 338.4, - comment: 'USR-USDC Mainnet', - feeTier: '0', - tickSpacing: '10', - hooks: '0x0010d0d5db05933fa0d9f7038d365e1541a41888', - liquidity: '173747248900', - token0: { - symbol: 'USR', - id: '0x66a1e37c9b0eaddca17d3662d6c05f4decf3e110', - name: 'Resolv USD', - decimals: '18', - }, - token1: { - symbol: 'USDC', - id: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - name: 'USD Coin', - decimals: '6', - }, - }, - // USND-USDC Arbitrum - { - id: '0x75c55eda2c37c47eaf1db8b500171f72f23dc5b16404e904866a6ad1b3a3e537', - chainId: ChainId.ARBITRUM_ONE, - tvlUSD: 208654, - tvlETH: 45.46, - comment: 'USND-USDC Arbitrum', - feeTier: '0', - tickSpacing: '10', - hooks: '0x0000eb22c45bdb564f985ace0b4d05a64fa71888', - liquidity: '173747248900', - token0: { - symbol: 'USND', - id: '0x4ecf61a6c2fab8a047ceb3b3b263b401763e9d49', - name: 'US Nerite Dollar', - decimals: '18', - }, - token1: { - symbol: 'USDC', - id: '0xaf88d065e77c8cc2239327c5edb3a432268e5831', - name: 'USD Coin', - decimals: '6', - }, - }, - // ETH-BUNNI #1 Mainnet - { - id: '0x9148f00424c4b40a9ec4b03912f091138e9e91a60980550ed97ed7f9dc998cb5', - chainId: ChainId.MAINNET, - tvlUSD: 729657, - tvlETH: 158.99, - comment: 'ETH-BUNNI #1 Mainnet', - feeTier: '1', - tickSpacing: '60', - hooks: '0x0010d0d5db05933fa0d9f7038d365e1541a41888', - liquidity: '173747248900', - token0: { - symbol: 'ETH', - id: '0x0000000000000000000000000000000000000000', - name: 'Ethereum', - decimals: '18', - }, - token1: { - symbol: 'BUNNI', - id: '0x000000c396558ffbab5ea628f39658bdf61345b3', - name: 'Bunni', - decimals: '18', - }, - }, - // USDC-USDT #1 Unichain - { - id: '0x38eeae8c6d1c205eff7c18ca631c9c65afa357e83fa130ec215aff81741d2408', - chainId: ChainId.UNICHAIN, - tvlUSD: 30, - tvlETH: 0.01, - comment: 'USDC-USDT #1 Unichain', - feeTier: '0', - tickSpacing: '10', - hooks: '0x0000fe59823933ac763611a69c88f91d45f81888', - liquidity: '173747248900', - token0: { - symbol: 'USDC', - id: '0x078d782b760474a361dda0af3839290b0ef57ad6', - name: 'USDC', - decimals: '6', - }, - token1: { - symbol: 'USDT', - id: '0x588ce4f028d8e7b53b687865d6a67b3a54c75518', - name: 'Tether USD', - decimals: '6', - }, - }, - // USDT-USDf #55 Mainnet - { - id: '0x68306351b1155f7329bc4428657aa73b8a32e87e916f897b7dcb1328f2ec60a3', - chainId: ChainId.MAINNET, - tvlUSD: 3548170, - tvlETH: 773.13, - comment: 'USDT-USDf #55 Mainnet', - feeTier: '0', - tickSpacing: '10', - hooks: '0x0000fe59823933ac763611a69c88f91d45f81888', - liquidity: '173747248900', - token0: { - symbol: 'USDT', - id: '0xdac17f958d2ee523a2206206994597c13d831ec7', - name: 'Tether USD', - decimals: '6', - }, - token1: { - symbol: 'USDf', - id: '0xfa2b947eec368f42195f24f36d2af29f7c24cec2', - name: 'Falcon USD', - decimals: '18', - }, - }, - // ETH-MET #83 Mainnet - { - id: '0xa27d94eb334faeb7e65b2b861d4ea4dc3ddce9bdea10bff37fac9f9f095d2148', - chainId: ChainId.MAINNET, - tvlUSD: 169447, - tvlETH: 36.92, - comment: 'ETH-MET #83 Mainnet', - feeTier: '0', - tickSpacing: '100', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - symbol: 'ETH', - id: '0x0000000000000000000000000000000000000000', - name: 'Ethereum', - decimals: '18', - }, - token1: { - symbol: 'MET', - id: '0x2ebd53d035150f328bd754d6dc66b99b0edb89aa', - name: 'MET', - decimals: '18', - }, - }, - // Bunni USD0-USD0++ Mainnet - { - id: '0x54ff1fd1d62f3bc6224082ecfdb3190a34e8428611b058ade19ce6c083cb608b', - chainId: ChainId.MAINNET, - tvlUSD: 101866, - tvlETH: 22.2, - comment: 'Bunni USD0-USD0++ Mainnet', - feeTier: '0', - tickSpacing: '5', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - symbol: 'USD0++', - id: '0x35d8949372d46b7a3d5a56006ae77b215fc69bc0', - name: 'USD0 Liquid Bond', - decimals: '18', - }, - token1: { - symbol: 'USD0', - id: '0x73a15fed60bf67631dc6cd7bc5b6e8da8190acf5', - name: 'Usual USD', - decimals: '18', - }, - }, - // ETH-USDC #289 Base - { - id: '0xbb10cb59b736ab186d8a17d8459bf93503cf820f701884e0154c429057bd7227', - chainId: ChainId.BASE, - tvlUSD: 0, - tvlETH: 0, - comment: 'ETH-USDC #289 Base', - feeTier: '0', - tickSpacing: '5', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - name: 'ETH', - id: '0x0000000000000000000000000000000000000000', - symbol: 'Ethereum', - decimals: '18', - }, - token1: { - name: 'USDC', - id: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', - symbol: 'USD Coin', - decimals: '6', - }, - }, - // hwHLP-USDT #95 Mainnet - { - id: '0x896895226e2cde763d53496363ef5af1d6d60f0df7960d658c1d0c6251db6c66', - chainId: ChainId.MAINNET, - tvlUSD: 252320, - tvlETH: 54.98, - comment: 'hwHLP-USDT #95 Mainnet', - feeTier: '0', - tickSpacing: '10', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - symbol: 'hwHLP', - id: '0x9fd7466f987fd4c45a5bbde22ed8aba5bc8d72d1', - name: 'hwHLP', - decimals: '6', - }, - token1: { - symbol: 'USDT', - id: '0xdac17f958d2ee523a2206206994597c13d831ec7', - name: 'Tether USD', - decimals: '6', - }, - }, - // ETH-PRL #80 Mainnet - { - id: '0xbc472c63afae4d891699e56a0e1ce6b4c7b71a1830494c214a739de06c49384f', - chainId: ChainId.MAINNET, - tvlUSD: 52137, - tvlETH: 11.36, - comment: 'ETH-PRL #80 Mainnet', - feeTier: '2', - tickSpacing: '100', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - symbol: 'ETH', - id: '0x0000000000000000000000000000000000000000', - name: 'Ethereum', - decimals: '18', - }, - token1: { - symbol: 'PRL', - id: '0x6c0aeceedc55c9d55d8b99216a670d85330941c3', - name: 'Parallel Governance Token', - decimals: '18', - }, - }, - // ETH-USDC #293 Base - { - id: '0x6dbb5d653f8e11f406adf38091138546f70bc352ccf1115983520d1fe4284449', - chainId: ChainId.BASE, - tvlUSD: 0, - tvlETH: 0, - comment: 'ETH-USDC #293 Base', - feeTier: '1', - tickSpacing: '5', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - symbol: 'ETH', - id: '0x0000000000000000000000000000000000000000', - name: 'Ethereum', - decimals: '18', - }, - token1: { - symbol: 'USDC', - id: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', - name: 'USD Coin', - decimals: '6', - }, - }, - // ETH-BUNNI #26 Base - { - id: '0xc3011ab27d607decdc04ab317585dececaa91de749be8b46accb36e066d8f420', - chainId: ChainId.BASE, - tvlUSD: 32813, - tvlETH: 7.15, - comment: 'ETH-BUNNI #26 Base', - feeTier: '0', - tickSpacing: '60', - hooks: '0x0010d0d5db05933fa0d9f7038d365e1541a41888', - liquidity: '173747248900', - token0: { - symbol: 'ETH', - id: '0x0000000000000000000000000000000000000000', - name: 'Ethereum', - decimals: '18', - }, - token1: { - symbol: 'BUNNI', - id: '0x000000c396558ffbab5ea628f39658bdf61345b3', - name: 'Bunni', - decimals: '18', - }, - }, - // ETH-USDC #62 Unichain - { - id: '0x39bd03115d5482eefbf43b1f3f3c48188f32bcb09b43fd4722f4c86d399e282a', - chainId: ChainId.UNICHAIN, - tvlUSD: 106, - tvlETH: 0.02, - comment: 'ETH-USDC #62 Unichain', - feeTier: '0', - tickSpacing: '5', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - symbol: 'ETH', - id: '0x0000000000000000000000000000000000000000', - name: 'Ethereum', - decimals: '18', - }, - token1: { - symbol: 'USDC', - id: '0x078d782b760474a361dda0af3839290b0ef57ad6', - name: 'USDC', - decimals: '6', - }, - }, - // ETH-BUNNI #12 Arbitrum - { - id: '0xc3011ab27d607decdc04ab317585dececaa91de749be8b46accb36e066d8f420', - chainId: ChainId.ARBITRUM_ONE, - tvlUSD: 30061, - tvlETH: 6.55, - comment: 'ETH-BUNNI #12 Arbitrum', - feeTier: '0', - tickSpacing: '60', - hooks: '0x0010d0d5db05933fa0d9f7038d365e1541a41888', - liquidity: '173747248900', - token0: { - symbol: 'ETH', - id: '0x0000000000000000000000000000000000000000', - name: 'Ethereum', - decimals: '18', - }, - token1: { - symbol: 'BUNNI', - id: '0x000000c396558ffbab5ea628f39658bdf61345b3', - name: 'Bunni', - decimals: '18', - }, - }, - // BUNNI-USDC #33 Mainnet - { - id: '0x00ef227c44fdb9dead9e5249abacfd8236ff375e84f6578e4c64743643a90447', - chainId: ChainId.MAINNET, - tvlUSD: 18205, - tvlETH: 3.97, - comment: 'BUNNI-USDC #33 Mainnet', - feeTier: '0', - tickSpacing: '60', - hooks: '0x0000fe59823933ac763611a69c88f91d45f81888', - liquidity: '173747248900', - token0: { - symbol: 'BUNNI', - id: '0x000000c396558ffbab5ea628f39658bdf61345b3', - name: 'Bunni', - decimals: '18', - }, - token1: { - symbol: 'USDC', - id: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - name: 'USD Coin', - decimals: '6', - }, - }, - // ETH-USDC #272 Base - { - id: '0x153695fdc96c0a3152b166ed2183c61268bb94e81aa21f1fde4304e277c49755', - chainId: ChainId.BASE, - tvlUSD: 16816, - tvlETH: 3.66, - comment: 'ETH-USDC #272 Base', - feeTier: '1', - tickSpacing: '10', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - symbol: 'ETH', - id: '0x0000000000000000000000000000000000000000', - name: 'Ethereum', - decimals: '18', - }, - token1: { - symbol: 'USDC', - id: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', - name: 'USD Coin', - decimals: '6', - }, - }, - // ETH-USDC #294 Base - { - id: '0xdea704e5d90cec9defc31ce88a1d06033fd7a02297fd5852ac103027e30134cb', - chainId: ChainId.BASE, - tvlUSD: 22654, - tvlETH: 4.94, - comment: 'ETH-USDC #294 Base', - feeTier: '2', - tickSpacing: '5', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - symbol: 'ETH', - id: '0x0000000000000000000000000000000000000000', - name: 'Ethereum', - decimals: '18', - }, - token1: { - symbol: 'USDC', - id: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', - name: 'USD Coin', - decimals: '6', - }, - }, - /* TODO: add back those bunni pool later, once we fix the dyanmic fee hook cached routes as well as cross liquidity for zora tokens - // ETH-USDC #237 Base - { - id: '0x471931205b39f65dcf1c063761c098f7b29237af4059533e246a3545929156ed', - chainId: ChainId.BASE, - tvlUSD: 14845, - tvlETH: 3.23, - comment: 'ETH-USDC #237 Base', - feeTier: '11', - tickSpacing: '100', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', - }, - }, - // ETH-USDC #93 Mainnet - { - id: '0x60a57df13fb84af43e06a2ed44a8800e6e693e0ef9a648cac5755feb58cab1ec', - chainId: ChainId.MAINNET, - tvlUSD: 0, - tvlETH: 0, - comment: 'ETH-USDC #93 Mainnet', - feeTier: '0', - tickSpacing: '20', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - }, - }, - // ETH-DOT #238 Base - { - id: '0xec8d8d7c033f92492ab5c18272bae93324d12a5c452db1e2da0c63deb9e24dcd', - chainId: ChainId.BASE, - tvlUSD: 157.9, - tvlETH: 0.034, - comment: 'ETH-DOT #238 Base', - feeTier: '0', - tickSpacing: '60', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x8d010bf9c26881788b4e6bf5fd1bdc358c8f90b8', - }, - }, - // ETH-USDC #63 Unichain - { - id: '0xe7154d81104dc9ff8aec461c020a8cdb2cbbb0bfb910454ee020e5f43748ca6f', - chainId: ChainId.UNICHAIN, - tvlUSD: 0, - tvlETH: 0, - comment: 'ETH-USDC #63 Unichain', - feeTier: '1', - tickSpacing: '5', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x078d782b760474a361dda0af3839290b0ef57ad6', - }, - }, - // ETH-USDC #52 Unichain - { - id: '0xe0326777ba1df8f4b5c522b58a669910e78efb1aa5596741dc224b4ac4ac1105', - chainId: ChainId.UNICHAIN, - tvlUSD: 289, - tvlETH: 0.06, - comment: 'ETH-USDC #52 Unichain', - feeTier: '1', - tickSpacing: '15', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x078d782b760474a361dda0af3839290b0ef57ad6', - }, - }, - // ETH-DOT #82 Mainnet - { - id: '0xec8d8d7c033f92492ab5c18272bae93324d12a5c452db1e2da0c63deb9e24dcd', - chainId: ChainId.MAINNET, - tvlUSD: 85, - tvlETH: 0.0185, - comment: 'ETH-DOT #82 Mainnet', - feeTier: '0', - tickSpacing: '60', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x8d010bf9c26881788b4e6bf5fd1bdc358c8f90b8', - }, - }, - // ETH-USDC #97 Mainnet - { - id: '0xc50a93437d1519f973138b2969583871bea0a6a9840d192c612d3cdd767fa70c', - chainId: ChainId.MAINNET, - tvlUSD: 0, - tvlETH: 0, - comment: 'ETH-USDC #97 Mainnet', - feeTier: '0', - tickSpacing: '5', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - }, - }, - // USDC-USN #81 Mainnet - { - id: '0x5195b3bf1daf25337b0db638c9c7dee112c9e4ddad39e9d7a1e706ba36183e73', - chainId: ChainId.MAINNET, - tvlUSD: 10108, - tvlETH: 2.2, - comment: 'USDC-USN #81 Mainnet', - feeTier: '0', - tickSpacing: '10', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - }, - token1: { - id: '0xda67b4284609d2d48e5d10cfac411572727dc1ed', - }, - }, - // ETH-USDC #247 Base - { - id: '0xe321dcdee0324032c55436c4ca2a41719c9e3bed1ac3e06e64a52952a73f41bd', - chainId: ChainId.BASE, - tvlUSD: 0, - tvlETH: 0, - comment: 'ETH-USDC #247 Base', - feeTier: '4', - tickSpacing: '60', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', - }, - }, - // ETH-BETS #43 Base - { - id: '0xa9f6c9c09120188ce8ec833bbe87b702a5b61996e970138040acf8066334bc19', - chainId: ChainId.BASE, - tvlUSD: 8590, - tvlETH: 1.87, - comment: 'ETH-BETS #43 Base', - feeTier: '0', - tickSpacing: '100', - hooks: '0x0000fe59823933ac763611a69c88f91d45f81888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x94025780a1ab58868d9b2dbbb775f44b32e8e6e5', - }, - }, - // ETH-USDC #287 Base - { - id: '0x8603a8a4283333cd5d12e657e77394f27c1c877b32ee00f644d7d6e76d229a6e', - chainId: ChainId.BASE, - tvlUSD: 0, - tvlETH: 0, - comment: 'ETH-USDC #287 Base', - feeTier: '0', - tickSpacing: '40', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', - }, - }, - // ETH-DOT #42 Arbitrum - { - id: '0x1462eda3ab4d44cd593c3e22e323bbf7058dabdc84a8d6cc8bdfb2428bd77547', - chainId: ChainId.ARBITRUM_ONE, - tvlUSD: 127, - tvlETH: 0.027, - comment: 'ETH-DOT #42 Arbitrum', - feeTier: '0', - tickSpacing: '60', - hooks: '0x0000eb22c45bdb564f985ace0b4d05a64fa71888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x8d010bf9c26881788b4e6bf5fd1bdc358c8f90b8', - }, - }, - // WETH-DOT #5 BSC - { - id: '0x48323603dde908bfbd512c4c723e28ea9c7ee7f5558f7bcc9cafa798c039b9bd', - chainId: ChainId.BNB, - tvlUSD: 3, - tvlETH: 0.0006, - comment: 'WETH-DOT #5 BSC', - feeTier: '0', - tickSpacing: '60', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x2170ed0880ac9a755fd29b2688956bd959f933f8', - }, - token1: { - id: '0x8d010bf9c26881788b4e6bf5fd1bdc358c8f90b8', - }, - }, - // ETH-weETH 1.0 Base - { - id: '0xa7654bd36dd1ea5da2a6a93adc36a6ddf1b0430039ed10ec655a5ab06fc0d2a3', - chainId: ChainId.BASE, - tvlUSD: 6250, - tvlETH: 1.36, - comment: 'ETH-weETH 1.0 Base', - feeTier: '0', - tickSpacing: '10', - hooks: '0x0010d0d5db05933fa0d9f7038d365e1541a41888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x04c0599ae5a44757c0af6f9ec3b93da8976c150a', - }, - }, - // ETH-wstETH 1.0 Base - { - id: '0x18851334c1315b5c92d577e50f3190e599ab6f7460b7859add5473f922c3bf54', - chainId: ChainId.BASE, - tvlUSD: 3748, - tvlETH: 0.82, - comment: 'ETH-wstETH 1.0 Base', - feeTier: '0', - tickSpacing: '10', - hooks: '0x0010d0d5db05933fa0d9f7038d365e1541a41888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452', - }, - }, - // Bunni ETH-ezETH Unichain - { - id: '0x10489138471e08ab1b1be7c2130253b18f61a1bfad6ca827199296088c6e90d6', - chainId: ChainId.UNICHAIN, - tvlUSD: 3850, - tvlETH: 0.84, - comment: 'Bunni ETH-ezETH Unichain', - feeTier: '0', - tickSpacing: '10', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x2416092f143378750bb29b79ed961ab195cceea5', - }, - }, - // ETH-USDC #250 Base - { - id: '0x00d3f91dafdb3ebcf6df83e44542cd2db299518d582efa1e4f6ff2fed2a28bff', - chainId: ChainId.BASE, - tvlUSD: 1523, - tvlETH: 0.33, - comment: 'ETH-USDC #250 Base', - feeTier: '0', - tickSpacing: '15', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', - }, - }, - // ETH-BUNNI #2 Mainnet - { - id: '0x6fbd7ab3e52fea2a986a24990db57b8a5a90c8769bfd9cbc0c276541fcb73e53', - chainId: ChainId.MAINNET, - tvlUSD: 1973, - tvlETH: 0.43, - comment: 'ETH-BUNNI #2 Mainnet', - feeTier: '0', - tickSpacing: '100', - hooks: '0x0010d0d5db05933fa0d9f7038d365e1541a41888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x000000c396558ffbab5ea628f39658bdf61345b3', - }, - }, - // USD0-USDC #75 Mainnet - { - id: '0xc2830c07fd4e4e3f50006c0663d881b082c97536c3898d65094da7f71162ab1b', - chainId: ChainId.MAINNET, - tvlUSD: 0, - tvlETH: 0, - comment: 'USD0-USDC #75 Mainnet', - feeTier: '0', - tickSpacing: '10', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x73a15fed60bf67631dc6cd7bc5b6e8da8190acf5', - }, - token1: { - id: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - }, - }, - // cbBTC-LBTC #1 Base - { - id: '0x037fdf1d5fff3a80e2bbc6855ce5a3741c09e10d0adc5b32bcbd19a5bd25763a', - chainId: ChainId.BASE, - tvlUSD: 2550, - tvlETH: 0.55, - comment: 'cbBTC-LBTC #1 Base', - feeTier: '0', - tickSpacing: '10', - hooks: '0x0010d0d5db05933fa0d9f7038d365e1541a41888', - liquidity: '173747248900', - token0: { - id: '0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf', - }, - token1: { - id: '0xecac9c5f704e954931349da37f60e39f515c11c1', - }, - }, - // WETH-USDC #36 Base - { - id: '0x66fa569c8aa30894818043ff5e90656d8568208ee73c55cc812bdbb0b475fb71', - chainId: ChainId.BASE, - tvlUSD: 2471, - tvlETH: 0.54, - comment: 'WETH-USDC #36 Base', - feeTier: '0', - tickSpacing: '100', - hooks: '0x0000fe59823933ac763611a69c88f91d45f81888', - liquidity: '173747248900', - token0: { - id: '0x4200000000000000000000000000000000000006', - }, - token1: { - id: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', - }, - }, - // ETH-USDbC #30 Base - { - id: '0x940823de67ee0ba27fbea781f96acca3f5500625a28511ac1a27b62b1bb280bc', - chainId: ChainId.BASE, - tvlUSD: 1920, - tvlETH: 0.515, - comment: 'ETH-USDbC #30 Base', - feeTier: '0', - tickSpacing: '100', - hooks: '0x0010d0d5db05933fa0d9f7038d365e1541a41888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca', - }, - }, - // USDC-USDT #71 Arbitrum - { - id: '0xf409b4740b3a450fcd7b8657d4064846795b91bd456c802bed2fd5c88ca12a9c', - chainId: ChainId.ARBITRUM_ONE, - tvlUSD: 0, - tvlETH: 0, - comment: 'USDC-USDT #71 Arbitrum', - feeTier: '0', - tickSpacing: '5', - hooks: '0x0000eb22c45bdb564f985ace0b4d05a64fa71888', - liquidity: '173747248900', - token0: { - id: '0xaf88d065e77c8cc2239327c5edb3a432268e5831', - }, - token1: { - id: '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', - }, - }, - // USDC-frxUSD #45 Mainnet - { - id: '0x690f92bc0598b82fa7dfea7cba108f54da349da46b22bc634795a9d34617b22c', - chainId: ChainId.MAINNET, - tvlUSD: 1390, - tvlETH: 0.3, - comment: 'USDC-frxUSD #45 Mainnet', - feeTier: '0', - tickSpacing: '2', - hooks: '0x0000fe59823933ac763611a69c88f91d45f81888', - liquidity: '173747248900', - token0: { - id: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - }, - token1: { - id: '0xcacd6fd266af91b8aed52accc382b4e165586e29', - }, - }, - // USDT/USDC - { - id: '0xfcb95f2277ef9524fb6a2e2c38209a7a3b955c34c933d2cdb570c1e9240fc475', - chainId: ChainId.MAINNET, - tvlUSD: 249, - tvlETH: 0.05, - comment: 'USDT/USDC', - feeTier: '0', - tickSpacing: '10', - hooks: '0x0000fe59823933ac763611a69c88f91d45f81888', - liquidity: '173747248900', - token0: { - id: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - }, - token1: { - id: '0xdac17f958d2ee523a2206206994597c13d831ec7', - }, - }, - // Flagship ETH-USDC 1.1 - { - id: '0x278ade56e33a097c673da54989ab41bc66d79d8362c38e7c7f2ae76a1d4e4e9f', - chainId: ChainId.BASE, - tvlUSD: 947, - tvlETH: 0.21, - comment: 'Flagship ETH-USDC 1.1', - feeTier: '1', - tickSpacing: '60', - hooks: '0x0000fe59823933ac763611a69c88f91d45f81888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', - }, - }, - // USDC-USDT 1.0 - { - id: '0x52820f86a8b193cbb46184b990085535e5956003b0005569649125cc070d14d0', - chainId: ChainId.ARBITRUM_ONE, - tvlUSD: 129, - tvlETH: 0.03, - comment: 'USDC-USDT 1.0', - feeTier: '1', - tickSpacing: '10', - hooks: '0x0010d0d5db05933fa0d9f7038d365e1541a41888', - liquidity: '173747248900', - token0: { - id: '0xaf88d065e77c8cc2239327c5edb3a432268e5831', - }, - token1: { - id: '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', - }, - }, - // ETH-wstETH 1.0 - { - id: '0xccc788002cf655b20e41330bd9af113fd7df7cdebe68367574ea28cab1d59768', - chainId: ChainId.MAINNET, - tvlUSD: 63, - tvlETH: 0.03, - comment: 'ETH-wstETH 1.0', - feeTier: '0', - tickSpacing: '10', - hooks: '0x0010d0d5db05933fa0d9f7038d365e1541a41888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0', - }, - }, - // ETH-wstETH 1.0 - { - id: '0xcf3e20a072e6c74916da3e57086fa0f781ff54de4f060194e19aabf4dd94f55c', - chainId: ChainId.ARBITRUM_ONE, - tvlUSD: 919, - tvlETH: 0.2, - comment: 'ETH-wstETH 1.0', - feeTier: '0', - tickSpacing: '10', - hooks: '0x0010d0d5db05933fa0d9f7038d365e1541a41888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x5979d7b546e38e414f7e9822514be443a4800529', - }, - }, - // AlphaGrowth ETH-USDC - { - id: '0x5e5bc151fdb581faf0c28ae30ceba9193da793ccd7c22a70d3feaf3408c07666', - chainId: ChainId.UNICHAIN, - tvlUSD: 839457, - tvlETH: 182.91, - comment: 'AlphaGrowth ETH-USDC', - feeTier: '3', - tickSpacing: '10', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x078d782b760474a361dda0af3839290b0ef57ad6', - }, - }, - // ETH-GAPPY #285 Base - { - id: '0xf79d90031b6df08d90707ec0e908af750902c30339859ef77be45044607f6002', - chainId: ChainId.BASE, - tvlUSD: 13925, - tvlETH: 3.03, - comment: 'ETH-GAPPY #285 Base', - feeTier: '1', - tickSpacing: '60', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0xfca9fc2cb2dde04732ad07e4bb73db8cc8bfed1d', - }, - }, - // BOLD-USND #57 Arbitrum - { - id: '0x2edd6d9772510c6d661dae96ac65838fd18a535763aaed2b4d5311c87c1cdf95', - chainId: ChainId.ARBITRUM_ONE, - tvlUSD: 36181, - tvlETH: 7.88, - comment: 'BOLD-USND #57 Arbitrum', - feeTier: '0', - tickSpacing: '10', - hooks: '0x0000eb22c45bdb564f985ace0b4d05a64fa71888', - liquidity: '173747248900', - token0: { - id: '0x03569cc076654f82679c4ba2124d64774781b01d', - }, - token1: { - id: '0x4ecf61a6c2fab8a047ceb3b3b263b401763e9d49', - }, - }, - // USDC-SQD #20 BNB - { - id: '0xf5a8429ecdc6d0639124ebc9cc5474c79a1435d77c97bab7b007a1415446f2d0', - chainId: ChainId.BNB, - tvlUSD: 38744, - tvlETH: 8.44, - comment: 'USDC-SQD #20 BNB', - feeTier: '1', - tickSpacing: '100', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d', - }, - token1: { - id: '0xe50e3d1a46070444f44df911359033f2937fcc13', - }, - }, - // PIRATE-USDC #102 - { - id: '0x4ed145903fe1df284134dc9070825e4dea68b41917187373e664d7150c9a71d8', - chainId: ChainId.MAINNET, - tvlUSD: 21947, - tvlETH: 4.78, - comment: 'PIRATE-USDC #102', - feeTier: '0', - tickSpacing: '200', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x7613c48e0cd50e42dd9bf0f6c235063145f6f8dc', - }, - token1: { - id: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', - }, - }, - // ETH-USDC #308 Base - { - id: '0xb0370507155902bc7988b28c6a8ae35d953b49b40a19b8a72c4307a9e5e0fc3a', - chainId: ChainId.BASE, - tvlUSD: 6970, - tvlETH: 1.52, - comment: 'ETH-USDC #308 Base', - feeTier: '1', - tickSpacing: '12', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', - }, - }, - // WBTC-cbBTC #104 - { - id: '0x89c981abd756429ac958425398d4d1b04db3c8c12a7f445bdc8abcc091b7bc90', - chainId: ChainId.MAINNET, - tvlUSD: 35660, - tvlETH: 7.77, - comment: 'WBTC-cbBTC #104', - feeTier: '0', - tickSpacing: '10', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', - }, - token1: { - id: '0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf', - }, - }, - // ETH-ZORA #326 Base - { - id: '0x28ecfada08cc1e5f50b2dea41cda4d3bbc73376390ebde6fa77d4971249577eb', - chainId: ChainId.BASE, - tvlUSD: 1290, - tvlETH: 0.28, - comment: 'ETH-ZORA #326 Base', - feeTier: '2', - tickSpacing: '100', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x0000000000000000000000000000000000000000', - }, - token1: { - id: '0x1111111111166b7fe7bd91427724b487980afc69', - }, - }, - // ZORA-USDC #327 Base - { - id: '0x8a989f931a7a139fb35fc58e74367d52d93fb53688c84743f20b50063720fde6', - chainId: ChainId.BASE, - tvlUSD: 1310, - tvlETH: 0.29, - comment: 'ZORA-USDC #327 Base', - feeTier: '1', - tickSpacing: '100', - hooks: '0x000052423c1db6b7ff8641b85a7eefc7b2791888', - liquidity: '173747248900', - token0: { - id: '0x1111111111166b7fe7bd91427724b487980afc69', - }, - token1: { - id: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', - }, - } - */ -] diff --git a/lib/util/extraV4FeeTiersTickSpacingsHookAddresses.ts b/lib/util/extraV4FeeTiersTickSpacingsHookAddresses.ts index 6c00ea157a..13b34f3b53 100644 --- a/lib/util/extraV4FeeTiersTickSpacingsHookAddresses.ts +++ b/lib/util/extraV4FeeTiersTickSpacingsHookAddresses.ts @@ -1,5 +1,6 @@ import { ChainId } from '@uniswap/sdk-core' -import { extraHooksAddressesOnSepolia } from './hooksAddressesAllowlist' + +const extraHooksAddressesOnSepolia = '0x0000000000000000000000000000000000000020' export const emptyV4FeeTickSpacingsHookAddresses: Array<[number, number, string]> = new Array< [number, number, string] diff --git a/lib/util/hooks/prod/bunni.json b/lib/util/hooks/prod/bunni.json new file mode 100644 index 0000000000..06825c7c67 --- /dev/null +++ b/lib/util/hooks/prod/bunni.json @@ -0,0 +1,655 @@ +{ + "name": "Bunni Hooklist", + "timestamp": "2025-10-09T16:33:00+00:00", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "keywords": ["Bunni"], + "description": "Bunni hooks for multi-purpose liquidity management including dynamic fees, rehypothecation, liquidity density functions, and autonomous rebalancing", + "logoURI": "https://bunni.pro/assets/img/favicon-32x32.png", + "chains": { + "1": [ + { + "address": "0x0010d0d5db05933fa0d9f7038d365e1541a41888", + "name": "Bunni Hook v1.0 on Mainnet", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x77f73405a72f844e46d26a0bfd6f145c1a45ffcf6e4af5c86811405f29d2e615", + "tvlUSD": 1553028, + "tvlETH": 338.4, + "feeTier": "0", + "tickSpacing": "10", + "liquidity": "173747248900", + "token0": { + "symbol": "USR", + "id": "0x66a1e37c9b0eaddca17d3662d6c05f4decf3e110", + "name": "Resolv USD", + "decimals": "18" + }, + "token1": { + "symbol": "USDC", + "id": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "name": "USD Coin", + "decimals": "6" + } + }, + { + "id": "0x9148f00424c4b40a9ec4b03912f091138e9e91a60980550ed97ed7f9dc998cb5", + "tvlUSD": 729657, + "tvlETH": 158.99, + "feeTier": "1", + "tickSpacing": "60", + "liquidity": "173747248900", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "Ethereum", + "decimals": "18" + }, + "token1": { + "symbol": "BUNNI", + "id": "0x000000c396558ffbab5ea628f39658bdf61345b3", + "name": "Bunni", + "decimals": "18" + } + } + ] + }, + { + "address": "0x0000da5dcd7ec49d6ca5554f7b1ca1ce33fa1888", + "name": "Bunni Hook v1.1 on Mainnet", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 1, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x0000fe59823933ac763611a69c88f91d45f81888", + "name": "Bunni Hook v1.1.1 on Mainnet", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 1, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x68306351b1155f7329bc4428657aa73b8a32e87e916f897b7dcb1328f2ec60a3", + "tvlUSD": 3548170, + "tvlETH": 773.13, + "feeTier": "0", + "tickSpacing": "10", + "liquidity": "173747248900", + "token0": { + "symbol": "USDT", + "id": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "name": "Tether USD", + "decimals": "6" + }, + "token1": { + "symbol": "USDf", + "id": "0xfa2b947eec368f42195f24f36d2af29f7c24cec2", + "name": "Falcon USD", + "decimals": "18" + } + }, + { + "id": "0x00ef227c44fdb9dead9e5249abacfd8236ff375e84f6578e4c64743643a90447", + "tvlUSD": 18205, + "tvlETH": 3.97, + "feeTier": "0", + "tickSpacing": "60", + "liquidity": "173747248900", + "token0": { + "symbol": "BUNNI", + "id": "0x000000c396558ffbab5ea628f39658bdf61345b3", + "name": "Bunni", + "decimals": "18" + }, + "token1": { + "symbol": "USDC", + "id": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "name": "USD Coin", + "decimals": "6" + } + } + ] + }, + { + "address": "0x000052423c1db6b7ff8641b85a7eefc7b2791888", + "name": "Bunni Hook v1.2.1 on Mainnet", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 2, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0xd9f673912e1da331c9e56c5f0dbc7273c0eb684617939a375ec5e227c62d6707", + "tvlUSD": 23777373, + "tvlETH": 5181, + "feeTier": "0", + "tickSpacing": "1", + "liquidity": "173747248900", + "token0": { + "symbol": "USDC", + "id": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "name": "USD Coin", + "decimals": "6" + }, + "token1": { + "symbol": "USDT", + "id": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "name": "Tether USD", + "decimals": "6" + } + }, + { + "id": "0xa27d94eb334faeb7e65b2b861d4ea4dc3ddce9bdea10bff37fac9f9f095d2148", + "tvlUSD": 169447, + "tvlETH": 36.92, + "feeTier": "0", + "tickSpacing": "100", + "liquidity": "173747248900", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "Ethereum", + "decimals": "18" + }, + "token1": { + "symbol": "MET", + "id": "0x2ebd53d035150f328bd754d6dc66b99b0edb89aa", + "name": "MET", + "decimals": "18" + } + }, + { + "id": "0x54ff1fd1d62f3bc6224082ecfdb3190a34e8428611b058ade19ce6c083cb608b", + "tvlUSD": 101866, + "tvlETH": 22.2, + "feeTier": "0", + "tickSpacing": "5", + "liquidity": "173747248900", + "token0": { + "symbol": "USD0++", + "id": "0x35d8949372d46b7a3d5a56006ae77b215fc69bc0", + "name": "USD0 Liquid Bond", + "decimals": "18" + }, + "token1": { + "symbol": "USD0", + "id": "0x73a15fed60bf67631dc6cd7bc5b6e8da8190acf5", + "name": "Usual USD", + "decimals": "18" + } + }, + { + "id": "0x896895226e2cde763d53496363ef5af1d6d60f0df7960d658c1d0c6251db6c66", + "tvlUSD": 252320, + "tvlETH": 54.98, + "feeTier": "0", + "tickSpacing": "10", + "liquidity": "173747248900", + "token0": { + "symbol": "hwHLP", + "id": "0x9fd7466f987fd4c45a5bbde22ed8aba5bc8d72d1", + "name": "hwHLP", + "decimals": "6" + }, + "token1": { + "symbol": "USDT", + "id": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "name": "Tether USD", + "decimals": "6" + } + }, + { + "id": "0xbc472c63afae4d891699e56a0e1ce6b4c7b71a1830494c214a739de06c49384f", + "tvlUSD": 52137, + "tvlETH": 11.36, + "feeTier": "2", + "tickSpacing": "100", + "liquidity": "173747248900", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "Ethereum", + "decimals": "18" + }, + "token1": { + "symbol": "PRL", + "id": "0x6c0aeceedc55c9d55d8b99216a670d85330941c3", + "name": "Parallel Governance Token", + "decimals": "18" + } + } + ] + } + ], + "42161": [ + { + "address": "0x0010d0d5db05933fa0d9f7038d365e1541a41888", + "name": "Bunni Hook v1.0 on Arbitrum", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0xc3011ab27d607decdc04ab317585dececaa91de749be8b46accb36e066d8f420", + "tvlUSD": 30061, + "tvlETH": 6.55, + "feeTier": "0", + "tickSpacing": "60", + "liquidity": "173747248900", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "Ethereum", + "decimals": "18" + }, + "token1": { + "symbol": "BUNNI", + "id": "0x000000c396558ffbab5ea628f39658bdf61345b3", + "name": "Bunni", + "decimals": "18" + } + } + ] + }, + { + "address": "0x0000da5dcd7ec49d6ca5554f7b1ca1ce33fa1888", + "name": "Bunni Hook v1.1 on Arbitrum", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 1, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x0000fe59823933ac763611a69c88f91d45f81888", + "name": "Bunni Hook v1.1.1 on Arbitrum", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 1, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x0000eb22c45bdb564f985ace0b4d05a64fa71888", + "name": "Bunni Hook v1.2.1 on Arbitrum", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 2, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x75c55eda2c37c47eaf1db8b500171f72f23dc5b16404e904866a6ad1b3a3e537", + "tvlUSD": 208654, + "tvlETH": 45.46, + "feeTier": "0", + "tickSpacing": "10", + "liquidity": "173747248900", + "token0": { + "symbol": "USND", + "id": "0x4ecf61a6c2fab8a047ceb3b3b263b401763e9d49", + "name": "US Nerite Dollar", + "decimals": "18" + }, + "token1": { + "symbol": "USDC", + "id": "0xaf88d065e77c8cc2239327c5edb3a432268e5831", + "name": "USD Coin", + "decimals": "6" + } + } + ] + } + ], + "8453": [ + { + "address": "0x0010d0d5db05933fa0d9f7038d365e1541a41888", + "name": "Bunni Hook v1.0 on Base", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0xc3011ab27d607decdc04ab317585dececaa91de749be8b46accb36e066d8f420", + "tvlUSD": 32813, + "tvlETH": 7.15, + "feeTier": "0", + "tickSpacing": "60", + "liquidity": "173747248900", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "Ethereum", + "decimals": "18" + }, + "token1": { + "symbol": "BUNNI", + "id": "0x000000c396558ffbab5ea628f39658bdf61345b3", + "name": "Bunni", + "decimals": "18" + } + } + ] + }, + { + "address": "0x0000da5dcd7ec49d6ca5554f7b1ca1ce33fa1888", + "name": "Bunni Hook v1.1 on Base", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 1, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x0000fe59823933ac763611a69c88f91d45f81888", + "name": "Bunni Hook v1.1.1 on Base", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 1, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x000052423c1db6b7ff8641b85a7eefc7b2791888", + "name": "Bunni Hook v1.2.1 on Base", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 2, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0xbb10cb59b736ab186d8a17d8459bf93503cf820f701884e0154c429057bd7227", + "tvlUSD": 0, + "tvlETH": 0, + "feeTier": "0", + "tickSpacing": "5", + "liquidity": "173747248900", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "Ethereum", + "decimals": "18" + }, + "token1": { + "symbol": "USDC", + "id": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + "name": "USD Coin", + "decimals": "6" + } + }, + { + "id": "0x6dbb5d653f8e11f406adf38091138546f70bc352ccf1115983520d1fe4284449", + "tvlUSD": 0, + "tvlETH": 0, + "feeTier": "1", + "tickSpacing": "5", + "liquidity": "173747248900", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "Ethereum", + "decimals": "18" + }, + "token1": { + "symbol": "USDC", + "id": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + "name": "USD Coin", + "decimals": "6" + } + }, + { + "id": "0x153695fdc96c0a3152b166ed2183c61268bb94e81aa21f1fde4304e277c49755", + "tvlUSD": 16816, + "tvlETH": 3.66, + "feeTier": "1", + "tickSpacing": "10", + "liquidity": "173747248900", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "Ethereum", + "decimals": "18" + }, + "token1": { + "symbol": "USDC", + "id": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + "name": "USD Coin", + "decimals": "6" + } + }, + { + "id": "0xdea704e5d90cec9defc31ce88a1d06033fd7a02297fd5852ac103027e30134cb", + "tvlUSD": 22654, + "tvlETH": 4.94, + "feeTier": "2", + "tickSpacing": "5", + "liquidity": "173747248900", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "Ethereum", + "decimals": "18" + }, + "token1": { + "symbol": "USDC", + "id": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + "name": "USD Coin", + "decimals": "6" + } + } + ] + } + ], + "56": [ + { + "address": "0x0000fe59823933ac763611a69c88f91d45f81888", + "name": "Bunni Hook v1.1.1 on BNB", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 1, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x000052423c1db6b7ff8641b85a7eefc7b2791888", + "name": "Bunni Hook v1.2.1 on BNB", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 2, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [] + } + ], + "130": [ + { + "address": "0x0000fe59823933ac763611a69c88f91d45f81888", + "name": "Bunni Hook v1.1.1 on Unichain", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 1, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x38eeae8c6d1c205eff7c18ca631c9c65afa357e83fa130ec215aff81741d2408", + "tvlUSD": 30, + "tvlETH": 0.01, + "feeTier": "0", + "tickSpacing": "10", + "liquidity": "173747248900", + "token0": { + "symbol": "USDC", + "id": "0x078d782b760474a361dda0af3839290b0ef57ad6", + "name": "USDC", + "decimals": "6" + }, + "token1": { + "symbol": "USDT", + "id": "0x588ce4f028d8e7b53b687865d6a67b3a54c75518", + "name": "Tether USD", + "decimals": "6" + } + } + ] + }, + { + "address": "0x005af73a245d8171a0550ffae2631f12cc211888", + "name": "Bunni Hook v1.2.0 on Unichain", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 2, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0xeec51c6b1a9e7c4bb4fc4fa9a02fc4fff3fe94efd044f895d98b5bfbd2ff9433", + "tvlUSD": 28813605, + "tvlETH": 6278.38, + "feeTier": "0", + "tickSpacing": "1", + "liquidity": "173747248900", + "token0": { + "symbol": "USDC", + "id": "0x078d782b760474a361dda0af3839290b0ef57ad6", + "name": "USDC", + "decimals": "6" + }, + "token1": { + "symbol": "USD₮0", + "id": "0x9151434b16b9763660705744891fa906f660ecc5", + "name": "USD₮0", + "decimals": "6" + } + } + ] + }, + { + "address": "0x000052423c1db6b7ff8641b85a7eefc7b2791888", + "name": "Bunni Hook v1.2.1 on Unichain", + "description": "A multi purpose hook including dynamic fees, rehypothecation, liquidity density functions, autonomous rebalancing, and more", + "audit": "", + "version": { + "major": 1, + "minor": 2, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x6923777072439713c7b8ab34903e0ea96078d7148449bf54f420320d59ede857", + "tvlUSD": 13395486, + "tvlETH": 2918.83, + "feeTier": "0", + "tickSpacing": "1", + "liquidity": "173747248900", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "Ethereum", + "decimals": "18" + }, + "token1": { + "symbol": "weETH", + "id": "0x7dcc39b4d1c53cb31e1abc0e358b43987fef80f7", + "name": "Wrapped eETH", + "decimals": "18" + } + }, + { + "id": "0x39bd03115d5482eefbf43b1f3f3c48188f32bcb09b43fd4722f4c86d399e282a", + "tvlUSD": 106, + "tvlETH": 0.02, + "feeTier": "0", + "tickSpacing": "5", + "liquidity": "173747248900", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "Ethereum", + "decimals": "18" + }, + "token1": { + "symbol": "USDC", + "id": "0x078d782b760474a361dda0af3839290b0ef57ad6", + "name": "USDC", + "decimals": "6" + } + } + ] + } + ] + } +} diff --git a/lib/util/hooks/prod/clanker.json b/lib/util/hooks/prod/clanker.json new file mode 100644 index 0000000000..a3ea2a4a56 --- /dev/null +++ b/lib/util/hooks/prod/clanker.json @@ -0,0 +1,172 @@ +{ + "name": "Clanker Hooklist", + "timestamp": "2025-10-08T22:28:00+00:00", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "keywords": ["Clanker"], + "description": "Clanker static and dynamic fee hooks for token launching", + "logoURI": "https://www.clanker.world/logo_circle.png", + "chains": { + "8453": [ + { + "address": "0x34a45c6b61876d739400bd71228cbcbd4f53e8cc", + "name": "Clanker Dynamic Fee Hook on Base", + "description": "Integrates with Clanker's v4 token launchpad to facilitate automatic fee claiming, Clanker protocol fee, per-chain mev games, and user controlled fee customization.", + "audit": "https://cantina.xyz/portfolio/e4db23cd-f46d-4d99-adca-a60941b44f65", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x15ddaf96b657ff1a7815670d4945164d71c7f0b3387124df662d99e5ce33dbde", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0xdd5eeaff7bd481ad55db083062b13a3cdf0a68cc", + "name": "Clanker Static Fee Hook on Base", + "description": "Integrates with Clanker's v4 token launchpad to facilitate automatic fee claiming, Clanker protocol fee, per-chain mev games, and user controlled fee customization.", + "audit": "https://cantina.xyz/portfolio/e4db23cd-f46d-4d99-adca-a60941b44f65", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x82b4518a84dbec4f49ebffc1e01274ecc1f3e16c42e49fb39d96f9224df74957", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0xd60d6b218116cfd801e28f78d011a203d2b068cc", + "name": "Clanker Dynamic Fee Hook on Base - v2", + "description": "Integrates with Clanker's v4 token launchpad to facilitate automatic fee claiming, Clanker protocol fee, per-chain mev games, and user controlled fee customization.", + "audit": "", + "version": { + "major": 2, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x525d8e2619c2a9f8c12240c469c194e0a3099126c2f3a6aa56c9590dd8174592", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0xb429d62f8f3bffb98cdb9569533ea23bf0ba28cc", + "name": "Clanker Static Fee Hook on Base - v2", + "description": "Integrates with Clanker's v4 token launchpad to facilitate automatic fee claiming, Clanker protocol fee, per-chain mev games, and user controlled fee customization.", + "audit": "", + "version": { + "major": 2, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x53fdb765a953dadb6123c01b4d5a099d67e0f6ac83aa7c5a4f03c43cf63e56df", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + } + ], + "42161": [ + { + "address": "0xfd213be7883db36e1049dc42f5bd6a0ec66b68cc", + "name": "Clanker Dynamic Fee Hook on Arbitrum", + "description": "Integrates with Clanker's v4 token launchpad to facilitate automatic fee claiming, Clanker protocol fee, per-chain mev games, and user controlled fee customization.", + "audit": "https://cantina.xyz/portfolio/e4db23cd-f46d-4d99-adca-a60941b44f65", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x70b7962b63b7fe4b5da331d3173f7e1a4f223f09499dc056018f93c9dfa0667e", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0xf7ac669593d2d9d01026fa5b756dd5b4f7aaa8cc", + "name": "Clanker Static Fee Hook on Arbitrum", + "description": "Integrates with Clanker's v4 token launchpad to facilitate automatic fee claiming, Clanker protocol fee, per-chain mev games, and user controlled fee customization.", + "audit": "https://cantina.xyz/portfolio/e4db23cd-f46d-4d99-adca-a60941b44f65", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x32eccafdb852eaedba8456e371dea6bf6f6156b7c3d4ba89ea923c1ce8dc4d68", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + } + ], + "130": [ + { + "address": "0x9b37a43422d7bbd4c8b231be11e50ad1ace828cc", + "name": "Clanker Dynamic Fee Hook on Unichain", + "description": "Integrates with Clanker's v4 token launchpad to facilitate automatic fee claiming, Clanker protocol fee, per-chain mev games, and user controlled fee customization.", + "audit": "https://cantina.xyz/portfolio/e4db23cd-f46d-4d99-adca-a60941b44f65", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x656d6be9fc559c9bc8dd165556b5ca2bdc1157a717ac4fd6e54ed23757c5669d", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0xbc6e5abda425309c2534bc2bc92562f5419ce8cc", + "name": "Clanker Static Fee Hook on Unichain", + "description": "Integrates with Clanker's v4 token launchpad to facilitate automatic fee claiming, Clanker protocol fee, per-chain mev games, and user controlled fee customization.", + "audit": "https://cantina.xyz/portfolio/e4db23cd-f46d-4d99-adca-a60941b44f65", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x5fe1d0744945cc9019178b6c779c1d83701ff4e09e1e1e2c3ac6c0097ffa36c0", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + } + ] + } +} diff --git a/lib/util/hooks/prod/flaunch.json b/lib/util/hooks/prod/flaunch.json new file mode 100644 index 0000000000..c1b9a18d35 --- /dev/null +++ b/lib/util/hooks/prod/flaunch.json @@ -0,0 +1,81 @@ +{ + "name": "Flaunch Hooklist", + "timestamp": "2025-10-09T15:05:00+00:00", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "keywords": ["Flaunch"], + "description": "Flaunch hooks for token launching on Base", + "logoURI": "https://flaunch.gg/_next/image?url=%2Flogo.png&w=96&q=100&dpl=dpl_52G4pnK6czCLFZQsPxMBRzxuSCsH", + "chains": { + "8453": [ + { + "address": "0x9e433f32bb5481a9ca7dff5b3af74a7ed041a888", + "name": "ETH-flETH Auto Wrap Hook on Base", + "description": "Automatic wrapping functionality for ETH and Flaunch ETH (flETH) tokens on Base", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x51bba15255406cfe7099a42183302640ba7dafdc", + "name": "Flaunch Hook on Base", + "description": "Flaunch memecoin launchpad liquidity management. Traditional position manager which supports internal buy position to support token buybacks automatically created from fees, internal Swap Pool to ensure that all fees are paid in ETH, rather than the token, and dynamic fee distribution across stakeholders", + "audit": "https://docs.flaunch.gg/protocol/audits", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0xf785bb58059fab6fb19bdda2cb9078d9e546efdc", + "name": "Flaunch Hook on Base - v1.0.1", + "description": "Flaunch memecoin launchpad liquidity management. Traditional position manager which supports internal buy position to support token buybacks automatically created from fees, internal Swap Pool to ensure that all fees are paid in ETH, rather than the token, and dynamic fee distribution across stakeholders", + "audit": "https://docs.flaunch.gg/protocol/audits", + "version": { + "major": 1, + "minor": 0, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0xb903b0ab7bcee8f5e4d8c9b10a71aac7135d6fdc", + "name": "Flaunch Hook on Base - v1.0.2", + "description": "Flaunch memecoin launchpad liquidity management. Traditional position manager which supports internal buy position to support token buybacks automatically created from fees, internal Swap Pool to ensure that all fees are paid in ETH, rather than the token, and dynamic fee distribution across stakeholders", + "audit": "https://docs.flaunch.gg/protocol/audits", + "version": { + "major": 1, + "minor": 0, + "patch": 2 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x8dc3b85e1dc1c846ebf3971179a751896842e5dc", + "name": "Flaunch Hook on Base - v1.0.3", + "description": "Flaunch memecoin launchpad liquidity management. Position manager for importing external tokens.", + "audit": "https://docs.flaunch.gg/protocol/audits", + "version": { + "major": 1, + "minor": 0, + "patch": 3 + }, + "hookStatsAddress": "", + "pools": [] + } + ] + } +} diff --git a/lib/util/hooks/prod/general.json b/lib/util/hooks/prod/general.json new file mode 100644 index 0000000000..71c5826405 --- /dev/null +++ b/lib/util/hooks/prod/general.json @@ -0,0 +1,316 @@ +{ + "name": "General Hooklist", + "timestamp": "2025-10-09T19:37:00+00:00", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "keywords": ["General"], + "description": "General collection of various hooks for different protocols and functionalities", + "logoURI": "", + "chains": { + "42161": [ + { + "address": "0xc4bf39a096a1b610dd6186935f3ad99c66239080", + "name": "Slippage Fee Hook on Arbitrum", + "description": "Dynamic slippage-based fee adjustment hook for reducing imparement loss incurred by LPers.", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x582387e095a7fbcba58222b6f9f56cc3e6177d766d10dd0d96a70dab70f66be9", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0xd73339564ac99f3e09b0ebc80603ff8b796500c0", + "name": "Gamma Limit Order Hook on Arbitrum", + "description": "The Gamma Limit Order Hook system is a comprehensive limit order system for Uniswap V4 pools, enabling single-tick limit orders and scale orders that execute autonomously through swap hooks. It is a decentralized limit order book built exclusively on Uniswap V4. Limit orders are single-tick liquidity positions that are automatically executed through afterSwap hooks.", + "audit": "https://docs.gamma.xyz/gamma/learn/audits", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x015537a47e3865bd59fa4b0feed5546f1b5d27660447dddcdf86808bce384d98", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + } + ], + "8453": [ + { + "address": "0xc5a48b447f01e9ce3ede71e4c1c2038c38bd9000", + "name": "Graduation Hook", + "description": "", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0xe9eeab9794c33dff3dd8d0951cbe2d36619294af5a3a329f38f91f54be0b6d34", + "feeTier": "10000", + "tickSpacing": "200", + "liquidity": "274563705100803912362733", + "token0": { + "symbol": "fid:385955", + "id": "0x112cf1cc540eadf234158c0e4044c3b5f2a33e5e", + "name": "degenfans", + "decimals": "18" + }, + "token1": { + "symbol": "MOXIE", + "id": "0x8c9037d1ef5c6d1f6816278c7aaf5491d24cd527", + "name": "Moxie", + "decimals": "18" + }, + "tvlETH": 25.33120577965346308313185954009482, + "tvlUSD": 56627.5525783346590219799350683533 + }, + { + "id": "0x6bac01f0a8fb96eeb56e37506f210628714561113c748d43c6de50dc339edfe9", + "feeTier": "10000", + "tickSpacing": "200", + "liquidity": "621568112474979678301274", + "token0": { + "symbol": "base-economy", + "id": "0x125490489a27d541e39813c08d260debac071bb7", + "name": "Base Economy", + "decimals": "18" + }, + "token1": { + "symbol": "MOXIE", + "id": "0x8c9037d1ef5c6d1f6816278c7aaf5491d24cd527", + "name": "Moxie", + "decimals": "18" + }, + "tvlETH": 142.7576163222032969740638595951846, + "tvlUSD": 316322.6881520965844428159264274397 + }, + { + "id": "0x31781e65a4bd9ff0161e660f7930beee16026f819cd4d0bc7e17f6c78c29fc27", + "feeTier": "10000", + "tickSpacing": "200", + "liquidity": "482843960670027606548690", + "token0": { + "symbol": "fid:444067", + "id": "0x15148da22518e40e0d2fabf5d5e6a22269ebcb30", + "name": "macster", + "decimals": "18" + }, + "token1": { + "symbol": "MOXIE", + "id": "0x8c9037d1ef5c6d1f6816278c7aaf5491d24cd527", + "name": "Moxie", + "decimals": "18" + }, + "tvlETH": 44.1795925485023741879813651641809, + "tvlUSD": 95050.95363442908526427214106054717 + } + ] + }, + { + "address": "0xed1698c29928a6c44cddb0c75ab0e5d47eb72a80", + "name": "Zaha TWAMM Hook", + "description": "Time-Weighted Average Market Maker for large order execution on Base.", + "audit": "https://github.com/akshatmittal/v4-twamm-hook/tree/main/audits", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x8e91947e425341e3ec516628c32340f680656c8569a065d51388553eb328b560", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0x5cd525c621afca515bf58631d4733fba7b72aae4", + "name": "Coinbase Verified Hook on Base", + "description": "Hook to only allow swapping by Coinbase verified wallets.", + "audit": "https://docs.verifiedpools.com/security/audits", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x704268ac7043aeef50f47b6a03ae68ccf808e044", + "name": "BtcAcc", + "description": "btc/acc is a protocol that helps you automatically accumulate Bitcoin while trading. Instead of losing all your profits in memecoins, btc/acc ensures you're building a position in Bitcoin over time. The hook can be attached to any token pair on Uniswap v4 and takes 1% of each trade on behalf of the swapper, buys them Bitcoin, and deposits it in the protocol.", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0xbd4f3968b6cd846ee2be64765e0edb3fe1238d3c35d3c5404fc20937b7901230", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0x77bb2a8f1ab2a384918a4c090cd8ae82dc5078e0", + "name": "Doppler", + "description": "Doppler is a token launchpad utilizing dynamic bonding curves to mitigate sniping for large projects", + "audit": "https://docs.doppler.lol/resources/security-and-bug-bounties", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x9cd78cc37624a69c32bc554d98460f9290bde0a3067583afaa7ec8de0a753ee3", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0x9d11f9505ca92f4b6983c1285d1ac0aaff7ec0c0", + "name": "GammaLimit Order Hook on Base", + "description": "The Gamma Limit Order Hook system is a comprehensive limit order system for Uniswap V4 pools, enabling single-tick limit orders and scale orders that execute autonomously through swap hooks. It is a decentralized limit order book built exclusively on Uniswap V4. Limit orders are single-tick liquidity positions that are automatically executed through afterSwap hooks.", + "audit": "https://docs.gamma.xyz/gamma/learn/audits", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0xdfb2536ba09a004b32db0a1a15f73676b5e356d831c4ea1e843cd9433b080ab6", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + } + ], + "130": [ + { + "address": "0x09dea99d714a3a19378e3d80d1ad22ca46085080", + "name": "Renzo exLP Dynamic Fee", + "description": "The Renzo ezLP Dynamic Fee hook allows the Uniswap Pool to actively react to market conditions. As the pool price depegs from the exchange rate, fees are increased in a linear fashion when ezETH is sold into the pool (from 0.01% to 1%). This incentivizes market participants to provide liquidity and defend the peg. Buying ezETH from the pool always utilizes the minimum pool fee (0.01%).", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x7dbe9918ba991e7c2b078ec8ce882a060024a6126927cf66553a359e427f2f6a", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0x27bfccf7fdd8215ce5dd86c2a36651d05c8450cc", + "name": "AEGIS Dynamic Fee Hook for Unichain", + "description": "The AEGIS Dynamic Fee Hook implements dynamic fee management and full range liquidity management for Uniswap v4 pools. It manages dynamic fees using a TruncGeoOracleMulti for price feeds, handles full range liquidity provision through a FullRangeLiquidityManager, integrates with a PoolPolicyManager for governance and policy management, and provides automated fee adjustments based on market conditions", + "audit": "https://docs.aegis.markets/audits", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x0e3a702c43b613fe8c635e375ca4f0b8d4870526c1e6f795d379f0fb6041ed91", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0xa0b0d2d00fd544d8e0887f1a3cedd6e24baf10cc", + "name": "AEGIS Dynamic Fee Hook for Unichain - v1.1", + "description": "The AEGIS Dynamic Fee Hook implements dynamic fee management and full range liquidity management for Uniswap v4 pools. It manages dynamic fees using a TruncGeoOracleMulti for price feeds, handles full range liquidity provision through a FullRangeLiquidityManager, integrates with a PoolPolicyManager for governance and policy management, and provides automated fee adjustments based on market conditions", + "audit": "https://docs.aegis.markets/audits", + "version": { + "major": 1, + "minor": 1, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x410723c1949069324d0f6013dba28829c4a0562f7c81d0f7cb79ded668691e1f", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0x2016c0e4f8bb1d6fea777dc791be919e2eda40c0", + "name": "Gamma Limit Order Hook on Unichain", + "description": "The Gamma Limit Order Hook system is a comprehensive limit order system for Uniswap V4 pools, enabling single-tick limit orders and scale orders that execute autonomously through swap hooks. It is a decentralized limit order book built exclusively on Uniswap V4. Limit orders are single-tick liquidity positions that are automatically executed through afterSwap hooks.", + "audit": "https://docs.gamma.xyz/gamma/learn/audits", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x2289791ab3c4a90c741427c52ea9411ba13bf8184c0b7bae4fea26262f400357", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0x79330fe369c32a03e3b8516aff35b44706e39080", + "name": "Panoptic Oracle Hook on Unichain", + "description": "This hook records and exposes both standard and truncated Uniswap V3-like price observations for Uniswap V4 pools. Additionally, adapter contracts are deployed upon pool creation to allow for use as a drop-in replacement to the Uniswap V3 oracle in protocols leveraging that information. ", + "audit": "https://blog.openzeppelin.com/v3styleoraclehook-audit?hs_preview=hmquOpll-190369323392", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x348860e4565d7e3eb53af800a8931b1465a7540cdb5fa7f4dfd1e4d0bb2aa7f8", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + } + ] + } +} diff --git a/lib/util/hooks/prod/uniswap.json b/lib/util/hooks/prod/uniswap.json new file mode 100644 index 0000000000..0c109e82c7 --- /dev/null +++ b/lib/util/hooks/prod/uniswap.json @@ -0,0 +1,209 @@ +{ + "name": "Uniswap WETH Hooklist", + "timestamp": "2025-10-09T19:17:00+00:00", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "keywords": ["Uniswap", "WETH"], + "description": "Uniswap WETH hooks for native ETH and WETH wrapping/unwrapping functionality", + "logoURI": "https://app.uniswap.org/favicon.ico", + "chains": { + "1": [ + { + "address": "0x57991106cb7aa27e2771beda0d6522f68524a888", + "name": "WETH Hook on Mainnet", + "description": "Uniswap WETH hook for seamless ETH/WETH wrapping and unwrapping on Ethereum mainnet", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0xf6f2314ac16a878e2bf8ef01ef0a3487e714d397d87f702b9a08603eb3252e92", + "feeTier": "0", + "tickSpacing": "1", + "liquidity": "482843960670027606548690", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "ETH", + "decimals": "18" + }, + "token1": { + "symbol": "WETH", + "id": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "name": "WETH", + "decimals": "18" + }, + "tvlETH": 44000.1795925485023741879813651641809, + "tvlUSD": 95050000.95363442908526427214106054717 + } + ] + } + ], + "10": [ + { + "address": "0x480dafdb4d6092ef3217595b75784ec54b52e888", + "name": "WETH Hook on Optimism", + "description": "Uniswap WETH hook for seamless ETH/WETH wrapping and unwrapping on Optimism", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0xbf3d38951e485c811bb1fc7025fcd1ef60c15fda4c4163458facb9bedfe26f83", + "feeTier": "0", + "tickSpacing": "1", + "liquidity": "173747248900", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "Ethereum", + "decimals": "18" + }, + "token1": { + "symbol": "WETH", + "id": "0x4200000000000000000000000000000000000006", + "name": "Wrapped Ether", + "decimals": "18" + }, + "tvlETH": 826, + "tvlUSD": 1482475 + } + ] + } + ], + "42161": [ + { + "address": "0x2a4adf825bd96598487dbb6b2d8d882a4eb86888", + "name": "WETH Hook on Arbitrum", + "description": "Uniswap WETH hook for seamless ETH/WETH wrapping and unwrapping on Arbitrum", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0xc1c777843809a8e77a398fd79ecddcefbdad6a5676003ae2eedf3a33a56589e9", + "feeTier": "0", + "tickSpacing": "1", + "liquidity": "173747248900", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "Ethereum", + "decimals": "18" + }, + "token1": { + "symbol": "WETH", + "id": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", + "name": "Wrapped Ether", + "decimals": "18" + }, + "tvlETH": 23183, + "tvlUSD": 41820637 + } + ] + } + ], + "8453": [ + { + "address": "0xb08211d57032dd10b1974d4b876851a7f7596888", + "name": "WETH Hook on Base", + "description": "Uniswap WETH hook for seamless ETH/WETH wrapping and unwrapping on Base", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0xbb2aefc6c55a0464b944c0478869527ba1a537f05f90a1bb82e1196c6e9403e2", + "feeTier": "0", + "tickSpacing": "1", + "liquidity": "173747248900", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "Ethereum", + "decimals": "18" + }, + "token1": { + "symbol": "WETH", + "id": "0x4200000000000000000000000000000000000006", + "name": "Wrapped Ether", + "decimals": "18" + }, + "tvlETH": 6992, + "tvlUSD": 12580000 + } + ] + } + ], + "130": [ + { + "address": "0x730b109bad65152c67ecc94eb8b0968603dba888", + "name": "WETH Hook on Unichain", + "description": "Uniswap WETH hook for seamless ETH/WETH wrapping and unwrapping on Unichain", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0xba246b8420b5aeb13e586cd7cbd32279fa7584d7f4cbc9bd356a6bb6200d16a6", + "feeTier": "0", + "tickSpacing": "1", + "liquidity": "173747248900", + "token0": { + "symbol": "ETH", + "id": "0x0000000000000000000000000000000000000000", + "name": "Ethereum", + "decimals": "18" + }, + "token1": { + "symbol": "WETH", + "id": "0x4200000000000000000000000000000000000006", + "name": "Wrapped Ether", + "decimals": "18" + }, + "tvlETH": 33482, + "tvlUSD": 60342168 + } + ] + } + ], + "11155111": [ + { + "address": "0x0000000000000000000000000000000000000020", + "name": "Extra Hook on Sepolia", + "description": "General purpose hook for testing and development on Sepolia testnet", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [] + } + ] + } +} diff --git a/lib/util/hooks/prod/zora.json b/lib/util/hooks/prod/zora.json new file mode 100644 index 0000000000..b89b9c1589 --- /dev/null +++ b/lib/util/hooks/prod/zora.json @@ -0,0 +1,235 @@ +{ + "name": "Zora Hooklist", + "timestamp": "2025-10-09T18:42:00+00:00", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "keywords": ["Zora"], + "description": "Zora Creator and Post hooks for NFT creation and social interactions on Base", + "logoURI": "https://zora.co/assets/favicon/apple-touch-icon.png", + "chains": { + "8453": [ + { + "address": "0xfbce3d80c659c765bc6c55e29e87d839c7609040", + "name": "Zora Creator Hook on Base", + "description": "Zora Creator Hook for NFT creation and minting functionality", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x854f820475b229b7805a386f758cfb285023d040", + "name": "Zora Creator Hook on Base - v1.0.0", + "description": "Zora Creator Hook for NFT creation and minting functionality", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x9301690be9ac901de52c5ebff883862bbfc99040", + "name": "Zora Creator Hook on Base - v1.1.1", + "description": "Zora Creator Hook for NFT creation and minting functionality", + "audit": "", + "version": { + "major": 1, + "minor": 1, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x5e5d19d22c85a4aef7c1fdf25fb22a5a38f71040", + "name": "Zora Creator Hook on Base - v1.1.1", + "description": "Zora Creator Hook for NFT creation and minting functionality", + "audit": "", + "version": { + "major": 1, + "minor": 1, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0xc42d1a19441f4d29e1e87533958cf0afe16c9cc6ef3e2ce5ff67c3f291555fa0", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0xd61a675f8a0c67a73dc3b54fb7318b4d91409040", + "name": "Zora Creator Hook on Base - v1.1.2", + "description": "Zora Creator Hook for NFT creation and minting functionality", + "audit": "", + "version": { + "major": 1, + "minor": 1, + "patch": 2 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0xd1c0665cb7cc9168b64f9d13099b5e72b26d18bbf984fe66df4c34326f50fec2", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0x8218fa8d7922e22aed3556a09d5a715f16ad5040", + "name": "Zora Creator Hook on Base - v2.2", + "description": "Zora Creator Hook for NFT creation and minting functionality", + "audit": "", + "version": { + "major": 2, + "minor": 2, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x8da3f098fae427a9aa3647f3e81798c61897f3bf67d100a270c00198b1771a4c", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0x1258e5f3c71ca9dce95ce734ba5759532e46d040", + "name": "Zora Creator Hook on Base - v2.2.1", + "description": "Zora Creator Hook for NFT creation and minting functionality", + "audit": "", + "version": { + "major": 2, + "minor": 2, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0xa1ebdd5ca6470bbd67114331387f2dda7bfad040", + "name": "Zora Post Hook on Base", + "description": "Zora Post Hook for social interactions and content posting", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": null, + "pools": [] + }, + { + "address": "0xb030fd8c2f8576f8ab05cfbbe659285e7d7a1040", + "name": "Zora Post Hook on Base - v1.0.0", + "description": "Zora Post Hook for social interactions and content posting", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0xe61bdf0c9e665f02df20fede6dcef379cb751040", + "name": "Zora Post Hook on Base - v1.0.0", + "description": "Zora Post Hook for social interactions and content posting", + "audit": "", + "version": { + "major": 1, + "minor": 0, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x81542dc43aff247eff4a0ecefc286a2973ae1040", + "name": "Zora Post Hook on Base - v1.1.1", + "description": "Zora Post Hook for social interactions and content posting", + "audit": "", + "version": { + "major": 1, + "minor": 1, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x5bf219b3cc11e3f6dd8dc8fc89d7d1deb0431040", + "name": "Zora Post Hook on Base - v1.1.1", + "description": "Zora Post Hook for social interactions and content posting", + "audit": "", + "version": { + "major": 1, + "minor": 1, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x9ea932730a7787000042e34390b8e435dd839040", + "name": "Zora Post Hook on Base - v1.1.2", + "description": "Zora Post Hook for social interactions and content posting", + "audit": "", + "version": { + "major": 1, + "minor": 1, + "patch": 2 + }, + "hookStatsAddress": "", + "pools": [ + { + "id": "0x36C114F3C641031C837427A8CE7BFCE351FFD6C0ED2F2241BE0F1079E79E3B06", + "tvlUSD": 0, + "tvlETH": 0 + } + ] + }, + { + "address": "0xff74be9d3596ea7a33bb4983dd7906fb34135040", + "name": "Zora Post Hook on Base - v2.2", + "description": "Zora Post Hook for social interactions and content posting", + "audit": "", + "version": { + "major": 2, + "minor": 2, + "patch": 0 + }, + "hookStatsAddress": "", + "pools": [] + }, + { + "address": "0x2b15a16b3ef024005ba899bb51764fcd58cf9040", + "name": "Zora Post Hook on Base - v2.2.1", + "description": "Zora Post Hook for social interactions and content posting", + "audit": "", + "version": { + "major": 2, + "minor": 2, + "patch": 1 + }, + "hookStatsAddress": "", + "pools": [] + } + ] + } +} diff --git a/lib/util/hooksAddressesAllowlist.ts b/lib/util/hooksAddressesAllowlist.ts index ab794c7e9f..266c0e3ee4 100644 --- a/lib/util/hooksAddressesAllowlist.ts +++ b/lib/util/hooksAddressesAllowlist.ts @@ -1,189 +1,224 @@ import { ChainId } from '@uniswap/sdk-core' import { ADDRESS_ZERO } from '@uniswap/router-sdk' +import fs from 'fs' +import path from 'path' -// all hook addresses need to be lower case, since the check in isHooksPoolRoutable assumes lower case -export const extraHooksAddressesOnSepolia = '0x0000000000000000000000000000000000000020' -export const FLAUNCH_HOOKS_ADDRESS_ON_BASE = '0x51bba15255406cfe7099a42183302640ba7dafdc' -export const FLAUNCH_HOOKS_ADDRESS_ON_BASE_v1_0_1 = '0xf785bb58059fab6fb19bdda2cb9078d9e546efdc' -export const FLAUNCH_HOOKS_ADDRESS_ON_BASE_v1_0_2 = '0xb903b0ab7bcee8f5e4d8c9b10a71aac7135d6fdc' -export const FLAUNCH_HOOKS_ADDRESS_ON_BASE_v1_0_3 = '0x8dc3b85e1dc1c846ebf3971179a751896842e5dc' -export const ETH_FLETH_AUTO_WRAP_HOOKS_ADDRESS_ON_BASE = '0x9e433f32bb5481a9ca7dff5b3af74a7ed041a888' - -export const BUNNI_HOOKS_ADDRESS_v1_0 = '0x0010d0d5db05933fa0d9f7038d365e1541a41888' -export const BUNNI_HOOKS_ADDRESS_v1_1 = '0x0000da5dcd7ec49d6ca5554f7b1ca1ce33fa1888' -export const BUNNI_HOOKS_ADDRESS_v1_1_1 = '0x0000fe59823933ac763611a69c88f91d45f81888' -export const BUNNI_HOOKS_ADDRESS_v1_2_0_ON_UNICHAIN = '0x005af73a245d8171a0550ffae2631f12cc211888' -export const BUNNI_HOOKS_ADDRESS_v1_2_1 = '0x000052423c1db6b7ff8641b85a7eefc7b2791888' -export const BUNNI_HOOKS_ADDRESS_v1_2_1_ON_ARBITRUM = '0x0000eb22c45bdb564f985ace0b4d05a64fa71888' - -export const GRADUATION_HOOKS_ADDRESS_ON_BASE = '0xc5a48b447f01e9ce3ede71e4c1c2038c38bd9000' -export const TWAMM_HOOKS_ADDRESS_ON_BASE = '0xed1698c29928a6c44cddb0c75ab0e5d47eb72a80' -export const COINBASE_VERIFIED_HOOKS_ADDRESS_ON_BASE = '0x5cd525c621afca515bf58631d4733fba7b72aae4' -export const BTC_ACC_ON_BASE = '0x704268ac7043aeef50f47b6a03ae68ccf808e044' - -// https://linear.app/uniswap/issue/ROUTE-580/allowlist-slippagefeehook-on-arbitrum -// example pool: 0x582387e095a7fbcba58222b6f9f56cc3e6177d766d10dd0d96a70dab70f66be9 -export const SLIPPAGE_FEE_HOOK_ON_ARBITRUM = '0xc4bf39a096a1b610dd6186935f3ad99c66239080' - -// https://linear.app/uniswap/issue/ROUTE-555/allowlist-clanker-hook -export const CLANKER_DYNAMIC_FEE_HOOKS_ADDRESS_ON_BASE = '0x34a45c6b61876d739400bd71228cbcbd4f53e8cc' -export const CLANKER_STATIC_FEE_HOOKS_ADDRESS_ON_BASE = '0xdd5eeaff7bd481ad55db083062b13a3cdf0a68cc' -export const CLANKER_DYNAMIC_FEE_HOOKS_ADDRESS_ON_BASE_v2 = '0xd60d6b218116cfd801e28f78d011a203d2b068cc' -export const CLANKER_STATIC_FEE_HOOKS_ADDRESS_ON_BASE_v2 = '0xb429d62f8f3bffb98cdb9569533ea23bf0ba28cc' -// https://linear.app/uniswap/issue/ROUTE-591/allowlist-additional-clanker-hooks -export const CLANKER_DYNAMIC_FEE_HOOKS_ADDRESS_ON_ARBITRUM = '0xfd213be7883db36e1049dc42f5bd6a0ec66b68cc' -export const CLANKER_STATIC_FEE_HOOKS_ADDRESS_ON_ARBITRUM = '0xf7ac669593d2d9d01026fa5b756dd5b4f7aaa8cc' -export const CLANKER_DYNAMIC_FEE_HOOKS_ADDRESS_ON_UNICHAIN = '0x9b37a43422d7bbd4c8b231be11e50ad1ace828cc' -export const CLANKER_STATIC_FEE_HOOKS_ADDRESS_ON_UNICHAIN = '0xbc6e5abda425309c2534bc2bc92562f5419ce8cc' - -export const WETH_HOOKS_ADDRESS_ON_OP_MAINNET = '0x480dafdb4d6092ef3217595b75784ec54b52e888' -export const WETH_HOOKS_ADDRESS_ON_UNICHAIN = '0x730b109bad65152c67ecc94eb8b0968603dba888' -export const WETH_HOOKS_ADDRESS_ON_BASE = '0xb08211d57032dd10b1974d4b876851a7f7596888' -export const WETH_HOOKS_ADDRESS_ON_MAINNET = '0x57991106cb7aa27e2771beda0d6522f68524a888' - -export const WETH_HOOKS_ADDRESS_ON_ARBITRUM = '0x2a4adf825bd96598487dbb6b2d8d882a4eb86888' - -// example pool: https://app.uniswap.org/explore/pools/unichain/0xeec51c6b1a9e7c4bb4fc4fa9a02fc4fff3fe94efd044f895d98b5bfbd2ff9433 -export const BUNNI_ON_UNICHAIN = '0x005af73a245d8171a0550ffae2631f12cc211888' -// example pool: https://app.uniswap.org/explore/pools/unichain/0x7dbe9918ba991e7c2b078ec8ce882a060024a6126927cf66553a359e427f2f6a -export const RENZO_ON_UNICHAIN = '0x09dea99d714a3a19378e3d80d1ad22ca46085080' -// example pool: https://app.uniswap.org/explore/pools/unichain/0x0e3a702c43b613fe8c635e375ca4f0b8d4870526c1e6f795d379f0fb6041ed91 -export const AEGIS_ON_UNICHAIN = '0x27bfccf7fdd8215ce5dd86c2a36651d05c8450cc' -// exmaple pool: https://app.uniswap.org/explore/pools/unichain/0x410723c1949069324d0f6013dba28829c4a0562f7c81d0f7cb79ded668691e1f -export const UPDATED_AEGIS_ON_UNICHAIN = '0xa0b0d2d00fd544d8e0887f1a3cedd6e24baf10cc' - -// example pool: https://app.uniswap.org/explore/pools/base/0xc42d1a19441f4d29e1e87533958cf0afe16c9cc6ef3e2ce5ff67c3f291555fa0 -export const ZORA_CREATOR_HOOK_ON_BASE_v1 = '0xfbce3d80c659c765bc6c55e29e87d839c7609040' -export const ZORA_CREATOR_HOOK_ON_BASE_v1_0_0_1 = '0x854f820475b229b7805a386f758cfb285023d040' -export const ZORA_CREATOR_HOOK_ON_BASE_v1_1_1 = '0x9301690be9ac901de52c5ebff883862bbfc99040' -export const ZORA_CREATOR_HOOK_ON_BASE_v1_1_1_1 = '0x5e5d19d22c85a4aef7c1fdf25fb22a5a38f71040' -export const ZORA_CREATOR_HOOK_ON_BASE_v1_1_2 = '0xd61a675f8a0c67a73dc3b54fb7318b4d91409040' -export const ZORA_CREATOR_HOOK_ON_BASE_v2_2 = '0x8218fa8d7922e22aed3556a09d5a715f16ad5040' -export const ZORA_CREATOR_HOOK_ON_BASE_v2_2_1 = '0x1258e5f3c71ca9dce95ce734ba5759532e46d040' -// example pool: https://app.uniswap.org/explore/pools/base/0x36C114F3C641031C837427A8CE7BFCE351FFD6C0ED2F2241BE0F1079E79E3B06 -export const ZORA_POST_HOOK_ON_BASE_v1 = '0xa1ebdd5ca6470bbd67114331387f2dda7bfad040' -export const ZORA_POST_HOOK_ON_BASE_v1_0_0_1 = '0xb030fd8c2f8576f8ab05cfbbe659285e7d7a1040' -export const ZORA_POST_HOOK_ON_BASE_v1_0_0_2 = '0xe61bdf0c9e665f02df20fede6dcef379cb751040' -export const ZORA_POST_HOOK_ON_BASE_v1_1_1 = '0x81542dc43aff247eff4a0ecefc286a2973ae1040' -export const ZORA_POST_HOOK_ON_BASE_v1_1_1_1 = '0x5bf219b3cc11e3f6dd8dc8fc89d7d1deb0431040' -export const ZORA_POST_HOOK_ON_BASE_v1_1_2 = '0x9ea932730a7787000042e34390b8e435dd839040' -export const ZORA_POST_HOOK_ON_BASE_v2_2 = '0xff74be9d3596ea7a33bb4983dd7906fb34135040' -export const ZORA_POST_HOOK_ON_BASE_v2_2_1 = '0x2b15a16b3ef024005ba899bb51764fcd58cf9040' - -// example pool: https://app.uniswap.org/explore/pools/base/0x9cd78cc37624a69c32bc554d98460f9290bde0a3067583afaa7ec8de0a753ee3 -export const DOPPLER_HOOKS_ADDRESS_ON_BASE = '0x77bb2a8f1ab2a384918a4c090cd8ae82dc5078e0' - -// LimitOrderHook addresses: https://linear.app/uniswap/issue/ROUTE-625 -// example pool: https://app.uniswap.org/explore/pools/arbitrum/0x015537a47e3865bd59fa4b0feed5546f1b5d27660447dddcdf86808bce384d98 -export const LIMIT_ORDER_HOOKS_ADDRESS_ON_ARBITRUM = '0xd73339564ac99f3e09b0ebc80603ff8b796500c0' -// example pool: https://app.uniswap.org/explore/pools/unichain/0x2289791ab3c4a90c741427c52ea9411ba13bf8184c0b7bae4fea26262f400357 -export const LIMIT_ORDER_HOOKS_ADDRESS_ON_UNICHAIN = '0x2016c0e4f8bb1d6fea777dc791be919e2eda40c0' -// example pool: https://app.uniswap.org/explore/pools/base/0xdfb2536ba09a004b32db0a1a15f73676b5e356d831c4ea1e843cd9433b080ab6 -export const LIMIT_ORDER_HOOKS_ADDRESS_ON_BASE = '0x9d11f9505ca92f4b6983c1285d1ac0aaff7ec0c0' - -// example pool: https://app.uniswap.org/explore/pools/unichain/0x348860e4565d7e3eb53af800a8931b1465a7540cdb5fa7f4dfd1e4d0bb2aa7f8 -export const PANOPTIC_ORACLE_HOOK_ON_UNICHAIN = '0x79330fe369c32a03e3b8516aff35b44706e39080' - -// we do not allow v4 pools with non-zero hook address to be routed through in the initial v4 launch. -// this is the ultimate safeguard in the routing subgraph pool cron job. -export const HOOKS_ADDRESSES_ALLOWLIST: { [chain in ChainId]: Array } = { - [ChainId.MAINNET]: [ - ADDRESS_ZERO, - BUNNI_HOOKS_ADDRESS_v1_0, - BUNNI_HOOKS_ADDRESS_v1_1, - BUNNI_HOOKS_ADDRESS_v1_1_1, - BUNNI_HOOKS_ADDRESS_v1_2_1, - WETH_HOOKS_ADDRESS_ON_MAINNET, - ], - [ChainId.GOERLI]: [ADDRESS_ZERO], - [ChainId.SEPOLIA]: [ADDRESS_ZERO, extraHooksAddressesOnSepolia], - [ChainId.OPTIMISM]: [ADDRESS_ZERO, WETH_HOOKS_ADDRESS_ON_OP_MAINNET], - [ChainId.OPTIMISM_GOERLI]: [ADDRESS_ZERO], - [ChainId.OPTIMISM_SEPOLIA]: [ADDRESS_ZERO], - [ChainId.ARBITRUM_ONE]: [ - ADDRESS_ZERO, - BUNNI_HOOKS_ADDRESS_v1_0, - BUNNI_HOOKS_ADDRESS_v1_1, - BUNNI_HOOKS_ADDRESS_v1_1_1, - BUNNI_HOOKS_ADDRESS_v1_2_1_ON_ARBITRUM, - SLIPPAGE_FEE_HOOK_ON_ARBITRUM, - CLANKER_DYNAMIC_FEE_HOOKS_ADDRESS_ON_ARBITRUM, - CLANKER_STATIC_FEE_HOOKS_ADDRESS_ON_ARBITRUM, - WETH_HOOKS_ADDRESS_ON_ARBITRUM, - LIMIT_ORDER_HOOKS_ADDRESS_ON_ARBITRUM, - ], - [ChainId.ARBITRUM_GOERLI]: [ADDRESS_ZERO], - [ChainId.ARBITRUM_SEPOLIA]: [ADDRESS_ZERO], - [ChainId.POLYGON]: [ADDRESS_ZERO], - [ChainId.POLYGON_MUMBAI]: [ADDRESS_ZERO], - [ChainId.CELO]: [ADDRESS_ZERO], - [ChainId.CELO_ALFAJORES]: [ADDRESS_ZERO], - [ChainId.GNOSIS]: [ADDRESS_ZERO], - [ChainId.MOONBEAM]: [ADDRESS_ZERO], - [ChainId.BNB]: [ADDRESS_ZERO, BUNNI_HOOKS_ADDRESS_v1_1_1, BUNNI_HOOKS_ADDRESS_v1_2_1], - [ChainId.AVALANCHE]: [ADDRESS_ZERO], - [ChainId.BASE_GOERLI]: [ADDRESS_ZERO], - [ChainId.BASE_SEPOLIA]: [ADDRESS_ZERO], - [ChainId.BASE]: [ - ADDRESS_ZERO, - FLAUNCH_HOOKS_ADDRESS_ON_BASE, - FLAUNCH_HOOKS_ADDRESS_ON_BASE_v1_0_1, - FLAUNCH_HOOKS_ADDRESS_ON_BASE_v1_0_2, - FLAUNCH_HOOKS_ADDRESS_ON_BASE_v1_0_3, - ETH_FLETH_AUTO_WRAP_HOOKS_ADDRESS_ON_BASE, - BUNNI_HOOKS_ADDRESS_v1_0, - BUNNI_HOOKS_ADDRESS_v1_1, - BUNNI_HOOKS_ADDRESS_v1_1_1, - BUNNI_HOOKS_ADDRESS_v1_2_1, - GRADUATION_HOOKS_ADDRESS_ON_BASE, - TWAMM_HOOKS_ADDRESS_ON_BASE, - COINBASE_VERIFIED_HOOKS_ADDRESS_ON_BASE, - BTC_ACC_ON_BASE, - CLANKER_DYNAMIC_FEE_HOOKS_ADDRESS_ON_BASE, - CLANKER_STATIC_FEE_HOOKS_ADDRESS_ON_BASE, - CLANKER_DYNAMIC_FEE_HOOKS_ADDRESS_ON_BASE_v2, - CLANKER_STATIC_FEE_HOOKS_ADDRESS_ON_BASE_v2, - WETH_HOOKS_ADDRESS_ON_BASE, - DOPPLER_HOOKS_ADDRESS_ON_BASE, - LIMIT_ORDER_HOOKS_ADDRESS_ON_BASE, - ZORA_CREATOR_HOOK_ON_BASE_v1, - ZORA_CREATOR_HOOK_ON_BASE_v1_0_0_1, - ZORA_CREATOR_HOOK_ON_BASE_v1_1_1, - ZORA_CREATOR_HOOK_ON_BASE_v1_1_1_1, - ZORA_CREATOR_HOOK_ON_BASE_v1_1_2, - ZORA_CREATOR_HOOK_ON_BASE_v2_2, - ZORA_CREATOR_HOOK_ON_BASE_v2_2_1, - ZORA_POST_HOOK_ON_BASE_v1, - ZORA_POST_HOOK_ON_BASE_v1_0_0_1, - ZORA_POST_HOOK_ON_BASE_v1_0_0_2, - ZORA_POST_HOOK_ON_BASE_v1_1_1, - ZORA_POST_HOOK_ON_BASE_v1_1_1_1, - ZORA_POST_HOOK_ON_BASE_v1_1_2, - ZORA_POST_HOOK_ON_BASE_v2_2, - ZORA_POST_HOOK_ON_BASE_v2_2_1, - ], - [ChainId.ZORA]: [ADDRESS_ZERO], - [ChainId.ZORA_SEPOLIA]: [ADDRESS_ZERO], - [ChainId.ROOTSTOCK]: [ADDRESS_ZERO], - [ChainId.BLAST]: [ADDRESS_ZERO], - [ChainId.ZKSYNC]: [ADDRESS_ZERO], - [ChainId.WORLDCHAIN]: [ADDRESS_ZERO], - [ChainId.UNICHAIN_SEPOLIA]: [ADDRESS_ZERO], - [ChainId.UNICHAIN]: [ - ADDRESS_ZERO, - BUNNI_ON_UNICHAIN, - RENZO_ON_UNICHAIN, - AEGIS_ON_UNICHAIN, - UPDATED_AEGIS_ON_UNICHAIN, - WETH_HOOKS_ADDRESS_ON_UNICHAIN, - CLANKER_DYNAMIC_FEE_HOOKS_ADDRESS_ON_UNICHAIN, - CLANKER_STATIC_FEE_HOOKS_ADDRESS_ON_UNICHAIN, - BUNNI_HOOKS_ADDRESS_v1_1_1, - BUNNI_HOOKS_ADDRESS_v1_2_0_ON_UNICHAIN, - BUNNI_HOOKS_ADDRESS_v1_2_1, - LIMIT_ORDER_HOOKS_ADDRESS_ON_UNICHAIN, - PANOPTIC_ORACLE_HOOK_ON_UNICHAIN, - ], - [ChainId.MONAD_TESTNET]: [ADDRESS_ZERO], - [ChainId.SONEIUM]: [ADDRESS_ZERO], +//Expected format of HookList JSON files +interface TokenEntry { + symbol: string + id: string + name: string + decimals: string } + +interface PoolEntry { + id: string + tvlUSD?: number + tvlETH?: number + feeTier?: string + tickSpacing?: string + liquidity?: string + token0?: TokenEntry + token1?: TokenEntry +} + +interface HookEntry { + address: string + name: string + description: string + audit: string + version: { + major: number + minor: number + patch: number + } + hookStatsAddress: string | null + pools: PoolEntry[] +} + +interface HookFile { + name: string + timestamp: string + version: { + major: number + minor: number + patch: number + } + keywords: string[] + description: string + logoURI: string + chains: { + [chainId: string]: HookEntry[] + } +} + +// A V4SubgraphPool-compatible interface for pools +interface V4PoolData { + id: string + feeTier?: string + tickSpacing?: string + hooks?: string + liquidity?: string + token0?: { + symbol: string + id: string + name: string + decimals: string + } + token1?: { + symbol: string + id: string + name: string + decimals: string + } + tvlETH?: number + tvlUSD?: number +} + +interface HookMetadata { + address: string + name: string + keywords: string[] +} + +function loadAllHookFiles(): HookFile[] { + const hooksDir = path.resolve(process.cwd(), 'lib', 'util', 'hooks', 'prod') + const hookFiles: HookFile[] = [] + + try { + const files = fs.readdirSync(hooksDir).filter((file) => file.endsWith('.json')) + + for (const file of files) { + try { + const filePath = path.join(hooksDir, file) + const fileContent = fs.readFileSync(filePath, 'utf8') + const hookFile: HookFile = JSON.parse(fileContent) + hookFiles.push(hookFile) + } catch (error) { + console.warn(`Failed to load hook file ${file}:`, error) + } + } + } catch (error) { + console.error(`Failed to read hooks directory ${hooksDir}:`, error) + } + + return hookFiles +} + +// Create a list of hook metadata for each chain +function buildHooksAllowlist(): { [chain in ChainId]: Array } { + // Create ADDRESS_ZERO as a HookMetadata object + const addressZeroMetadata: HookMetadata = { + address: ADDRESS_ZERO, + name: 'No Hook (Regular Pool)', + keywords: [], + } + + const allowlist: { [chain in ChainId]: Array } = { + [ChainId.MAINNET]: [addressZeroMetadata], + [ChainId.GOERLI]: [addressZeroMetadata], + [ChainId.SEPOLIA]: [addressZeroMetadata], + [ChainId.OPTIMISM]: [addressZeroMetadata], + [ChainId.OPTIMISM_GOERLI]: [addressZeroMetadata], + [ChainId.OPTIMISM_SEPOLIA]: [addressZeroMetadata], + [ChainId.ARBITRUM_ONE]: [addressZeroMetadata], + [ChainId.ARBITRUM_GOERLI]: [addressZeroMetadata], + [ChainId.ARBITRUM_SEPOLIA]: [addressZeroMetadata], + [ChainId.POLYGON]: [addressZeroMetadata], + [ChainId.POLYGON_MUMBAI]: [addressZeroMetadata], + [ChainId.CELO]: [addressZeroMetadata], + [ChainId.CELO_ALFAJORES]: [addressZeroMetadata], + [ChainId.GNOSIS]: [addressZeroMetadata], + [ChainId.MOONBEAM]: [addressZeroMetadata], + [ChainId.BNB]: [addressZeroMetadata], + [ChainId.AVALANCHE]: [addressZeroMetadata], + [ChainId.BASE_GOERLI]: [addressZeroMetadata], + [ChainId.BASE_SEPOLIA]: [addressZeroMetadata], + [ChainId.BASE]: [addressZeroMetadata], + [ChainId.ZORA]: [addressZeroMetadata], + [ChainId.ZORA_SEPOLIA]: [addressZeroMetadata], + [ChainId.ROOTSTOCK]: [addressZeroMetadata], + [ChainId.BLAST]: [addressZeroMetadata], + [ChainId.ZKSYNC]: [addressZeroMetadata], + [ChainId.WORLDCHAIN]: [addressZeroMetadata], + [ChainId.UNICHAIN_SEPOLIA]: [addressZeroMetadata], + [ChainId.UNICHAIN]: [addressZeroMetadata], + [ChainId.MONAD_TESTNET]: [addressZeroMetadata], + [ChainId.SONEIUM]: [addressZeroMetadata], + } + + const hookFiles = loadAllHookFiles() + + for (const hookFile of hookFiles) { + for (const [chainIdString, hooks] of Object.entries(hookFile.chains)) { + const chainId = parseInt(chainIdString) as ChainId + + if (allowlist[chainId]) { + for (const hook of hooks) { + const hookAddress = hook.address.toLowerCase() + + // Check if this hook address is already in the allowlist + const existingHook = allowlist[chainId].find((item) => item.address === hookAddress) + + if (!existingHook) { + allowlist[chainId].push({ + address: hookAddress, + name: hook.name, + keywords: hookFile.keywords || [], + }) + } + } + } + } + } + + return allowlist +} + +// Create a list of pools for each hook address in V4SubgraphPool format +function buildHookPoolsList(): V4PoolData[] { + const pools: V4PoolData[] = [] + + const hookFiles = loadAllHookFiles() + + for (const hookFile of hookFiles) { + for (const [, hooks] of Object.entries(hookFile.chains)) { + for (const hook of hooks) { + if (hook.pools && hook.pools.length > 0) { + for (const pool of hook.pools) { + pools.push({ + id: pool.id.toLowerCase(), + feeTier: pool.feeTier, + tickSpacing: pool.tickSpacing, + hooks: hook.address.toLowerCase(), + liquidity: pool.liquidity, + token0: pool.token0 + ? { + symbol: pool.token0.symbol, + id: pool.token0.id, + name: pool.token0.name, + decimals: pool.token0.decimals, + } + : undefined, + token1: pool.token1 + ? { + symbol: pool.token1.symbol, + id: pool.token1.id, + name: pool.token1.name, + decimals: pool.token1.decimals, + } + : undefined, + tvlETH: pool.tvlETH, + tvlUSD: pool.tvlUSD, + }) + } + } + } + } + } + + return pools +} + +export const HOOKS_ADDRESSES_ALLOWLIST: { [chain in ChainId]: Array } = buildHooksAllowlist() +export const HOOK_POOLS_DATA: V4PoolData[] = buildHookPoolsList() diff --git a/lib/util/v4HooksPoolsFiltering.ts b/lib/util/v4HooksPoolsFiltering.ts index 87a92b95ee..51bc5f836c 100644 --- a/lib/util/v4HooksPoolsFiltering.ts +++ b/lib/util/v4HooksPoolsFiltering.ts @@ -1,26 +1,8 @@ import { isPoolFeeDynamic, log, nativeOnChain, V4SubgraphPool } from '@uniswap/smart-order-router' import { Hook } from '@uniswap/v4-sdk' -import { - HOOKS_ADDRESSES_ALLOWLIST, - ZORA_CREATOR_HOOK_ON_BASE_v1, - ZORA_CREATOR_HOOK_ON_BASE_v1_0_0_1, - ZORA_CREATOR_HOOK_ON_BASE_v1_1_1, - ZORA_CREATOR_HOOK_ON_BASE_v1_1_1_1, - ZORA_CREATOR_HOOK_ON_BASE_v1_1_2, - ZORA_CREATOR_HOOK_ON_BASE_v2_2, - ZORA_CREATOR_HOOK_ON_BASE_v2_2_1, - ZORA_POST_HOOK_ON_BASE_v1, - ZORA_POST_HOOK_ON_BASE_v1_0_0_1, - ZORA_POST_HOOK_ON_BASE_v1_0_0_2, - ZORA_POST_HOOK_ON_BASE_v1_1_1, - ZORA_POST_HOOK_ON_BASE_v1_1_1_1, - ZORA_POST_HOOK_ON_BASE_v1_1_2, - ZORA_POST_HOOK_ON_BASE_v2_2, - ZORA_POST_HOOK_ON_BASE_v2_2_1, -} from './hooksAddressesAllowlist' +import { HOOKS_ADDRESSES_ALLOWLIST, HOOK_POOLS_DATA } from './hooksAddressesAllowlist' import { ChainId, Currency, Token } from '@uniswap/sdk-core' import { PriorityQueue } from '@datastructures-js/priority-queue' -import { BUNNI_POOLS_CONFIG } from './bunni-pools' import { ADDRESS_ZERO } from '@uniswap/router-sdk' type V4PoolGroupingKey = string @@ -106,92 +88,32 @@ export function v4HooksPoolsFiltering(chainId: ChainId, pools: Array poolData.id.toLowerCase() === pool.id.toLowerCase()) - // ETH/flETH if ( - pool.id.toLowerCase() === '0x14287e3268eb628fcebd2d8f0730b01703109e112a7a41426a556d10211d2086'.toLowerCase() && - chainId === ChainId.BASE + hookPoolData && + hookPoolData.tvlUSD !== undefined && + hookPoolData.tvlUSD > 0 && + hookPoolData.tvlETH !== undefined && + hookPoolData.tvlETH > 0 ) { - pool.tvlETH = 1000 // similar to flETH/FLNCH pool (https://app.uniswap.org/explore/pools/base/0xf8f4afa64c443ff00630d089205140814c9c0ce79ff293d05913a161fcc7ec4a) - pool.tvlUSD = 5500000 // similar to flETH/FLNCH pool (https://app.uniswap.org/explore/pools/base/0xf8f4afa64c443ff00630d089205140814c9c0ce79ff293d05913a161fcc7ec4a) - log.info(`Setting tvl for flETH/FLNCH pool ${JSON.stringify(pool)}`) - additionalAllowedPool += 1 - } - - // Check if this pool is in our Bunni pools configuration - const bunniPool = BUNNI_POOLS_CONFIG.find( - (config) => config.id.toLowerCase() === pool.id.toLowerCase() && config.chainId === chainId - ) - - if (bunniPool) { - pool.tvlETH = bunniPool.tvlETH - pool.tvlUSD = bunniPool.tvlUSD - log.info(`Setting tvl for ${bunniPool.comment} pool ${JSON.stringify(pool)}`) + pool.tvlETH = hookPoolData.tvlETH + pool.tvlUSD = hookPoolData.tvlUSD + log.info(`Setting TVL for pool ${pool.id}: $${hookPoolData.tvlUSD}, ${hookPoolData.tvlETH} ETH`) additionalAllowedPool += 1 } let shouldNotAddV4Pool = false + // Check if this is a Zora pool by looking for "Zora" keyword in the allowlist + const hookMetadata = HOOKS_ADDRESSES_ALLOWLIST[chainId].find((item) => item.address === pool.hooks.toLowerCase()) + const isZoraPool = - (pool.hooks.toLowerCase() === ZORA_CREATOR_HOOK_ON_BASE_v1 || - pool.hooks.toLowerCase() === ZORA_CREATOR_HOOK_ON_BASE_v1_0_0_1 || - pool.hooks.toLowerCase() === ZORA_CREATOR_HOOK_ON_BASE_v1_1_1 || - pool.hooks.toLowerCase() === ZORA_CREATOR_HOOK_ON_BASE_v1_1_1_1 || - pool.hooks.toLowerCase() === ZORA_CREATOR_HOOK_ON_BASE_v1_1_2 || - pool.hooks.toLowerCase() === ZORA_CREATOR_HOOK_ON_BASE_v2_2 || - pool.hooks.toLowerCase() === ZORA_CREATOR_HOOK_ON_BASE_v2_2_1 || - pool.hooks.toLowerCase() === ZORA_POST_HOOK_ON_BASE_v1 || - pool.hooks.toLowerCase() === ZORA_POST_HOOK_ON_BASE_v1_0_0_1 || - pool.hooks.toLowerCase() === ZORA_POST_HOOK_ON_BASE_v1_0_0_2 || - pool.hooks.toLowerCase() === ZORA_POST_HOOK_ON_BASE_v1_1_1 || - pool.hooks.toLowerCase() === ZORA_POST_HOOK_ON_BASE_v1_1_1_1 || - pool.hooks.toLowerCase() === ZORA_POST_HOOK_ON_BASE_v1_1_2 || - pool.hooks.toLowerCase() === ZORA_POST_HOOK_ON_BASE_v2_2 || - pool.hooks.toLowerCase() === ZORA_POST_HOOK_ON_BASE_v2_2_1) && - chainId === ChainId.BASE + chainId === ChainId.BASE && + hookMetadata && + hookMetadata.keywords.some((keyword) => keyword.toLowerCase().includes('zora')) if (isZoraPool) { if (pool.tvlETH <= 0.001) { shouldNotAddV4Pool = true @@ -217,7 +139,9 @@ export function v4HooksPoolsFiltering(chainId: ChainId, pools: Array pool.id.toLowerCase())) - const allowlistedHooksAddresses = new Set(HOOKS_ADDRESSES_ALLOWLIST[chainId].map((hook) => hook.toLowerCase())) + const allowlistedHooksAddresses = new Set( + HOOKS_ADDRESSES_ALLOWLIST[chainId].map((hook) => hook.address.toLowerCase()) + ) const allowlistedHooksPools = pools.filter((pool: V4SubgraphPool) => { return allowlistedHooksAddresses.has(pool.hooks.toLowerCase()) && !topTvlPoolIds.has(pool.id.toLowerCase())