diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 00000000000..f70773659eb --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1 @@ +* @uniswap/web-admins diff --git a/RELEASE b/RELEASE index 2d9dc55d6e0..018061fcb60 100644 --- a/RELEASE +++ b/RELEASE @@ -1,10 +1,23 @@ -We are back with a new feature: +IPFS hash of the deployment: +- CIDv0: `QmNy6ppw64jmLBEZ6r8D19beUVH3objJPrjMfNxvugqakD` +- CIDv1: `bafybeiajkzyd25iwsu5lax4wtilh5ukji3kmzrt7r76k45pcminbsirsty` -Fiat Offramp: Users can now sell their crypto back into cash and have it deposit to their bank account, centralized exchange account, and more! +The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org). + +You can also access the Uniswap Interface from an IPFS gateway. +**BEWARE**: The Uniswap interface uses [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) to remember your settings, such as which tokens you have imported. +**You should always use an IPFS gateway that enforces origin separation**, or our hosted deployment of the latest release at [app.uniswap.org](https://app.uniswap.org). +Your Uniswap settings are never remembered across different URLs. + +IPFS gateways: +- https://bafybeiajkzyd25iwsu5lax4wtilh5ukji3kmzrt7r76k45pcminbsirsty.ipfs.dweb.link/ +- [ipfs://QmNy6ppw64jmLBEZ6r8D19beUVH3objJPrjMfNxvugqakD/](ipfs://QmNy6ppw64jmLBEZ6r8D19beUVH3objJPrjMfNxvugqakD/) + +### 5.68.4 (2025-02-05) + + +### Bug Fixes + +* **web:** use price to create mock pair (#15923) 40968c3 -Other changes: -- More robust dapp information on Activity screen -- Reduced onboarding screens for new wallets -- Improved volume-based sorting on our Explore page -- Various bug fixes and performance improvements \ No newline at end of file diff --git a/VERSION b/VERSION index 3abd13892d3..d66d7145eb7 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -mobile/1.44.1 \ No newline at end of file +web/5.68.4 \ No newline at end of file diff --git a/apps/extension/package.json b/apps/extension/package.json index 2a098939ed7..c747313806e 100644 --- a/apps/extension/package.json +++ b/apps/extension/package.json @@ -12,11 +12,11 @@ "@svgr/webpack": "8.0.1", "@tamagui/core": "1.114.4", "@types/uuid": "9.0.1", - "@uniswap/analytics-events": "2.40.0", + "@uniswap/analytics-events": "2.41.0", "@uniswap/uniswapx-sdk": "3.0.0-beta.1", - "@uniswap/universal-router-sdk": "4.10.0", - "@uniswap/v3-sdk": "3.21.0", - "@uniswap/v4-sdk": "1.15.0", + "@uniswap/universal-router-sdk": "4.14.0", + "@uniswap/v3-sdk": "3.24.0", + "@uniswap/v4-sdk": "1.18.0", "dotenv-webpack": "8.0.1", "ethers": "5.7.2", "eventemitter3": "5.0.1", diff --git a/apps/extension/src/app/components/tabs/ActivityTab.tsx b/apps/extension/src/app/components/tabs/ActivityTab.tsx index 704717598f6..3519cc0e0f1 100644 --- a/apps/extension/src/app/components/tabs/ActivityTab.tsx +++ b/apps/extension/src/app/components/tabs/ActivityTab.tsx @@ -1,6 +1,6 @@ import { memo } from 'react' import { ScrollView } from 'ui/src' -import { useActivityData } from 'wallet/src/features/activity/useActivityData' +import { useActivityData } from 'wallet/src/features/activity/hooks/useActivityData' export const ActivityTab = memo(function _ActivityTab({ address }: { address: Address }): JSX.Element { const { maybeEmptyComponent, renderActivityItem, sectionData } = useActivityData({ diff --git a/apps/extension/src/app/features/accounts/__snapshots__/AccountSwitcherScreen.test.tsx.snap b/apps/extension/src/app/features/accounts/__snapshots__/AccountSwitcherScreen.test.tsx.snap index 22a517dac34..da378c9c83e 100644 --- a/apps/extension/src/app/features/accounts/__snapshots__/AccountSwitcherScreen.test.tsx.snap +++ b/apps/extension/src/app/features/accounts/__snapshots__/AccountSwitcherScreen.test.tsx.snap @@ -57,7 +57,7 @@ exports[`AccountSwitcherScreen renders correctly 1`] = ` navigateTo(`${AppRoutes.Settings}/${SettingsRoutes.ManageConnections}`)} /> - - - - {title} - + + + + + {title} + + + {count !== undefined && ( + + {count} + + )} {!hideChevron && ( diff --git a/apps/extension/src/manifest.json b/apps/extension/src/manifest.json index 8e51b3b805c..56ded50a60a 100644 --- a/apps/extension/src/manifest.json +++ b/apps/extension/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "Uniswap Extension", "description": "The Uniswap Extension is a self-custody crypto wallet that's built for swapping.", - "version": "1.14.0", + "version": "1.15.0", "minimum_chrome_version": "116", "icons": { "16": "assets/icon16.png", diff --git a/apps/mobile/android/app/build.gradle b/apps/mobile/android/app/build.gradle index 10b45df3a19..ea5fa951b88 100644 --- a/apps/mobile/android/app/build.gradle +++ b/apps/mobile/android/app/build.gradle @@ -89,9 +89,9 @@ if (isCI && datadogPropertiesAvailable && !isE2E) { apply from: "../../../../node_modules/@datadog/mobile-react-native/datadog-sourcemaps.gradle" } -def devVersionName = "1.44.1" -def betaVersionName = "1.44.1" -def prodVersionName = "1.44.1" +def devVersionName = "1.45" +def betaVersionName = "1.45" +def prodVersionName = "1.45" android { ndkVersion rootProject.ext.ndkVersion @@ -252,12 +252,9 @@ dependencies { implementation 'com.onesignal:OneSignal:4.8.9' implementation 'com.github.statsig-io:android-sdk:4.36.0' - // This is required for the backported AndroidX Photo Picker on versions of Android below 30 - implementation("androidx.activity:activity:1.9.+") - // For animated GIF support implementation 'com.facebook.fresco:animated-gif:3.6.0' - + if (hermesEnabled.toBoolean()) { implementation("com.facebook.react:hermes-android") } else { diff --git a/apps/mobile/android/app/src/main/AndroidManifest.xml b/apps/mobile/android/app/src/main/AndroidManifest.xml index 147c7c33c09..6470b104fd6 100644 --- a/apps/mobile/android/app/src/main/AndroidManifest.xml +++ b/apps/mobile/android/app/src/main/AndroidManifest.xml @@ -9,10 +9,6 @@ - - - - - - - - - - - - diff --git a/apps/mobile/ios/Podfile.lock b/apps/mobile/ios/Podfile.lock index a7501d94ce1..8c8f1ec9872 100644 --- a/apps/mobile/ios/Podfile.lock +++ b/apps/mobile/ios/Podfile.lock @@ -2337,9 +2337,7 @@ PODS: - React - react-native-get-random-values (1.8.0): - React-Core - - react-native-image-picker (7.2.3): - - glog - - RCT-Folly (= 2022.05.16.00) + - react-native-image-picker (7.0.1): - React-Core - react-native-mmkv (2.10.1): - MMKV (>= 1.2.13) @@ -3083,7 +3081,7 @@ SPEC CHECKSUMS: react-native-compat: 100540c3cebb076da442cf058e375e8ca895ae28 react-native-context-menu-view: dcec18eb8882e20596dbb75802e7d19cb87dac02 react-native-get-random-values: a6ea6a8a65dc93e96e24a11105b1a9c8cfe1d72a - react-native-image-picker: b049e0ea9d6b1b58c06262e19f8b66c87ac7b760 + react-native-image-picker: 1569cfade34b3a011191ce262423e6ce2f8db5a1 react-native-mmkv: dea675cf9697ad35940f1687e98e133e1358ef9f react-native-netinfo: 129bd99f607a2dc5bb096168f3e5c150fd1f1c95 react-native-onesignal: ab800900cffeca4d9db70a05244013fc8a36ceb8 diff --git a/apps/mobile/ios/Uniswap.xcodeproj/project.pbxproj b/apps/mobile/ios/Uniswap.xcodeproj/project.pbxproj index 5b43c15101f..75f85d7b113 100644 --- a/apps/mobile/ios/Uniswap.xcodeproj/project.pbxproj +++ b/apps/mobile/ios/Uniswap.xcodeproj/project.pbxproj @@ -2230,7 +2230,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; @@ -2283,7 +2283,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCore; @@ -2336,7 +2336,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCore; @@ -2389,7 +2389,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCore; @@ -2427,7 +2427,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; @@ -2463,7 +2463,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCoreTests; @@ -2498,7 +2498,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCoreTests; @@ -2533,7 +2533,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = schemes.WidgetsCoreTests; @@ -2580,7 +2580,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; @@ -2626,7 +2626,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.widgets; @@ -2672,7 +2672,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.dev.widgets; @@ -2718,7 +2718,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.beta.widgets; @@ -2760,7 +2760,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; @@ -2803,7 +2803,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.WidgetIntentExtension; @@ -2846,7 +2846,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.dev.WidgetIntentExtension; @@ -2889,7 +2889,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.beta.WidgetIntentExtension; @@ -2925,7 +2925,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -2963,7 +2963,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -3164,7 +3164,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; @@ -3210,7 +3210,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.OneSignalNotificationServiceExtension; @@ -3322,7 +3322,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -3394,7 +3394,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.beta.OneSignalNotificationServiceExtension; @@ -3506,7 +3506,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -3578,7 +3578,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.44.1; + MARKETING_VERSION = 1.45; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = com.uniswap.mobile.dev.OneSignalNotificationServiceExtension; diff --git a/apps/mobile/jest-setup.js b/apps/mobile/jest-setup.js index 8bf93fbfdb3..b9e722ee6de 100644 --- a/apps/mobile/jest-setup.js +++ b/apps/mobile/jest-setup.js @@ -61,12 +61,6 @@ jest.mock('react-native', () => { return RN }) -jest.mock('react-native-safe-area-context', () => ({ - useSafeAreaInsets: jest.fn().mockImplementation(() => ({})), - useSafeAreaFrame: jest.fn().mockImplementation(() => ({})), - SafeAreaProvider: jest.fn(({ children }) => children), -})) - jest.mock('@react-navigation/elements', () => ({ useHeaderHeight: jest.fn().mockImplementation(() => 200), })) diff --git a/apps/mobile/package.json b/apps/mobile/package.json index 245d1ee973a..c1eaab3e6cc 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -82,10 +82,10 @@ "@sparkfabrik/react-native-idfa-aaid": "1.2.0", "@tanstack/react-query": "5.51.16", "@uniswap/analytics": "1.7.0", - "@uniswap/analytics-events": "2.40.0", + "@uniswap/analytics-events": "2.41.0", "@uniswap/client-explore": "0.0.14", "@uniswap/ethers-rs-mobile": "0.0.5", - "@uniswap/sdk-core": "7.1.0", + "@uniswap/sdk-core": "7.5.0", "@walletconnect/core": "2.17.1", "@walletconnect/react-native-compat": "2.17.1", "@walletconnect/utils": "2.17.1", @@ -124,7 +124,7 @@ "react-native-gesture-handler": "2.19.0", "react-native-get-random-values": "1.8.0", "react-native-image-colors": "1.5.2", - "react-native-image-picker": "7.2.3", + "react-native-image-picker": "7.0.1", "react-native-localize": "2.2.6", "react-native-markdown-display": "7.0.0-alpha.2", "react-native-mmkv": "2.10.1", diff --git a/apps/mobile/src/app/modals/NotificationsOSSettingsModal.tsx b/apps/mobile/src/app/modals/NotificationsOSSettingsModal.tsx new file mode 100644 index 00000000000..3e930e1b636 --- /dev/null +++ b/apps/mobile/src/app/modals/NotificationsOSSettingsModal.tsx @@ -0,0 +1,88 @@ +import { useFocusEffect } from '@react-navigation/core' +import React, { useCallback, useMemo } from 'react' +import { useTranslation } from 'react-i18next' +import { SettingsStackNavigationProp } from 'src/app/navigation/types' +import { NotificationsBackgroundImage } from 'src/components/notifications/NotificationsBGImage' +import { promptPushPermission } from 'src/features/notifications/Onesignal' +import { + NotificationPermission, + useNotificationOSPermissionsEnabled, +} from 'src/features/notifications/hooks/useNotificationOSPermissionsEnabled' +import { DeprecatedButton, Flex } from 'ui/src' +import { BellOn } from 'ui/src/components/icons/BellOn' +import { GenericHeader } from 'uniswap/src/components/misc/GenericHeader' +import { Modal } from 'uniswap/src/components/modals/Modal' +import Trace from 'uniswap/src/features/telemetry/Trace' +import { ElementName, ModalName } from 'uniswap/src/features/telemetry/constants' +import { MobileScreens } from 'uniswap/src/types/screens/mobile' +import { openSettings } from 'wallet/src/utils/linking' + +type NotificationsOSSettingsModalProps = { + navigation: SettingsStackNavigationProp +} + +/** + * This modal is used to inform the user that they need to enable notifications in the + * OS settings for the app + */ +export function NotificationsOSSettingsModal({ navigation }: NotificationsOSSettingsModalProps): JSX.Element { + const { notificationPermissionsEnabled, checkNotificationPermissions } = useNotificationOSPermissionsEnabled() + + const { t } = useTranslation() + + const shouldNavigateToSettings = useMemo(() => { + return notificationPermissionsEnabled === NotificationPermission.Enabled + }, [notificationPermissionsEnabled]) + + const navigateToSettings = useCallback(() => { + navigation.navigate(MobileScreens.SettingsStack, { + screen: MobileScreens.SettingsNotifications, + }) + }, [navigation]) + + useFocusEffect( + useCallback(() => { + if (shouldNavigateToSettings) { + navigation.goBack() + } + }, [shouldNavigateToSettings, navigation]), + ) + + const onPressEnableNotifications = useCallback(async () => { + const arePushNotificationsEnabled = await promptPushPermission() + if (!arePushNotificationsEnabled) { + await openSettings() + } else { + await checkNotificationPermissions() + } + }, [checkNotificationPermissions]) + + const onClose = useCallback(() => { + if (shouldNavigateToSettings) { + navigateToSettings() + } else { + navigation.goBack() + } + }, [navigation, shouldNavigateToSettings, navigateToSettings]) + + return ( + + + + + + + + + {t('settings.action.enableInSettings')} + + + + + + ) +} diff --git a/apps/mobile/src/app/modals/__snapshots__/AccountSwitcherModal.test.tsx.snap b/apps/mobile/src/app/modals/__snapshots__/AccountSwitcherModal.test.tsx.snap index 89042e773db..fb4d60d370e 100644 --- a/apps/mobile/src/app/modals/__snapshots__/AccountSwitcherModal.test.tsx.snap +++ b/apps/mobile/src/app/modals/__snapshots__/AccountSwitcherModal.test.tsx.snap @@ -87,60 +87,7 @@ exports[`AccountSwitcher renders correctly 1`] = ` "width": 56, } } - > - - - - - - - - - - + /> + + + ) } @@ -212,7 +217,7 @@ export function ExploreStackNavigator(): JSX.Element { )} @@ -410,7 +415,7 @@ export function AppStackNavigator(): JSX.Element { return ( - + {isDevEnv() && } @@ -441,7 +446,17 @@ export function AppStackNavigator(): JSX.Element { ) } -const navOptions = { +const navNativeStackOptions: Record = { noHeader: { headerShown: false }, presentationModal: { presentation: 'modal' }, -} as const + presentationBottomSheet: { + presentation: 'containedTransparentModal', + animation: 'none', + animationDuration: 0, + contentStyle: { backgroundColor: 'transparent' }, + }, +} + +const navStackOptions: Record = { + noHeader: { headerShown: false }, +} diff --git a/apps/mobile/src/app/navigation/types.ts b/apps/mobile/src/app/navigation/types.ts index b480c7fe085..8a4dc60e279 100644 --- a/apps/mobile/src/app/navigation/types.ts +++ b/apps/mobile/src/app/navigation/types.ts @@ -6,6 +6,7 @@ import { } from '@react-navigation/native' import { NativeStackNavigationProp, NativeStackScreenProps } from '@react-navigation/native-stack' import { HomeScreenTabIndex } from 'src/screens/HomeScreen/HomeScreenTabIndex' +import { ModalName } from 'uniswap/src/features/telemetry/constants' import { ImportType, OnboardingEntryPoint } from 'uniswap/src/types/onboarding' import { FiatOnRampScreens, @@ -69,6 +70,7 @@ export type SettingsStackParamList = { [MobileScreens.SettingsWalletEdit]: { address: Address } [MobileScreens.SettingsWalletManageConnection]: { address: Address } [MobileScreens.WebView]: { headerTitle: string; uriLink: string } + [ModalName.NotificationsOSSettings]: undefined } export type OnboardingStackBaseParams = { diff --git a/apps/mobile/src/components/Settings/SettingsRow.tsx b/apps/mobile/src/components/Settings/SettingsRow.tsx index 8726645837d..2a7186d8ae0 100644 --- a/apps/mobile/src/components/Settings/SettingsRow.tsx +++ b/apps/mobile/src/components/Settings/SettingsRow.tsx @@ -18,7 +18,7 @@ import { MobileScreens } from 'uniswap/src/types/screens/mobile' import { openUri } from 'uniswap/src/utils/linking' export interface SettingsSection { - subTitle: string + subTitle?: string data: (SettingsSectionItem | SettingsSectionItemComponent)[] isHidden?: boolean } @@ -43,11 +43,17 @@ export interface SettingsSectionItem { currentSetting?: string onToggle?: () => void isToggleEnabled?: boolean + checkIfCanProceed?: () => boolean + /** + * Number to display in the right of the body. Ex: Used for displaying the number of connections + */ + count?: number } interface SettingsRowProps { page: SettingsSectionItem navigation: SettingsStackNavigationProp & OnboardingStackNavigationProp + checkIfCanProceed?: SettingsSectionItem['checkIfCanProceed'] } export function SettingsRow({ @@ -64,13 +70,19 @@ export function SettingsRow({ currentSetting, onToggle, isToggleEnabled, + count, }, navigation, + checkIfCanProceed, }: SettingsRowProps): JSX.Element { const colors = useSporeColors() const dispatch = useDispatch() const handleRow = async (): Promise => { + if (checkIfCanProceed && !checkIfCanProceed()) { + return + } + if (onToggle) { return } else if (screen) { @@ -88,7 +100,7 @@ export function SettingsRow({ return ( - + {icon} @@ -104,6 +116,11 @@ export function SettingsRow({ )} + {count !== undefined && ( + + {count} + + )} {onToggle && typeof isToggleEnabled === 'boolean' ? ( ) : screen || modal ? ( diff --git a/apps/mobile/src/components/TokenSelector/TokenFiatOnRampList.tsx b/apps/mobile/src/components/TokenSelector/TokenFiatOnRampList.tsx index b25da117d65..bde12c53865 100644 --- a/apps/mobile/src/components/TokenSelector/TokenFiatOnRampList.tsx +++ b/apps/mobile/src/components/TokenSelector/TokenFiatOnRampList.tsx @@ -91,10 +91,32 @@ function _TokenFiatOnRampList({ UNSUPPORTED = 'UNSUPPORTED', } + const sortedSupportedAssetsWithBalance = list + .filter((c) => { + if (!c.currencyInfo) { + return false + } + + const quantity = balancesById?.[c.currencyInfo?.currencyId]?.quantity ?? 0 + return quantity > 0 + }) + .sort((a, b) => { + if (!a.currencyInfo || !b.currencyInfo) { + return 0 + } + + const aQuantity = balancesById?.[a.currencyInfo.currencyId]?.balanceUSD ?? 0 + const bQuantity = balancesById?.[b.currencyInfo.currencyId]?.balanceUSD ?? 0 + return bQuantity - aQuantity + }) + const supportedAssetsWithoutBalance = list.filter( + (c) => c.currencyInfo && !balancesById?.[c.currencyInfo?.currencyId], + ) const unsupportedAssetsWithBalance = getUnsupportedFORTokensWithBalance(list, balancesById) + const tokenList = isOffRamp ? [ - { title: ListSection.SUPPORTED, data: list }, + { title: ListSection.SUPPORTED, data: [...sortedSupportedAssetsWithBalance, ...supportedAssetsWithoutBalance] }, { title: ListSection.UNSUPPORTED, data: unsupportedAssetsWithBalance }, ] : [{ title: ListSection.SUPPORTED, data: list }] diff --git a/apps/mobile/src/components/accounts/__snapshots__/AccountCardItem.test.tsx.snap b/apps/mobile/src/components/accounts/__snapshots__/AccountCardItem.test.tsx.snap index c3c2590c7fe..7137fff4590 100644 --- a/apps/mobile/src/components/accounts/__snapshots__/AccountCardItem.test.tsx.snap +++ b/apps/mobile/src/components/accounts/__snapshots__/AccountCardItem.test.tsx.snap @@ -139,60 +139,7 @@ exports[`AccountCardItem renders correctly 1`] = ` "width": 36, } } - > - - - - - - - - - - + /> - - - - - - - - - - + /> - - - - - - - - - - + /> - - - - - - - - - - + /> ( - - - {title} - - -) - -export const FeedTab = memo( - forwardRef, TabProps>(function _FeedTab( - { containerProps, scrollHandler, headerHeight, refreshing, onRefresh }, - ref, - ) { - const { t } = useTranslation() - const dispatch = useDispatch() - const colors = useSporeColors() - const insets = useAppInsets() - - const watchedWalletsSet = useSelector(selectWatchedAddressSet) - const watchedWalletsList = useMemo(() => Array.from(watchedWalletsSet), [watchedWalletsSet]) - - const { onContentSizeChange } = useAdaptiveFooter(containerProps?.contentContainerStyle) - - // Hide all spam transactions if active wallet has enabled setting. - const hideSpamTokens = useHideSpamTokensSetting() - - const renderActivityItem = useMemo(() => { - return generateActivityItemRenderer(, SectionTitle, undefined, undefined) - }, []) - - const { onRetry, hasData, isLoading, isError, sectionData, keyExtractor } = useFormattedTransactionDataForFeed( - watchedWalletsList, - hideSpamTokens, - ) - - const onPressReceive = (): void => { - // in case we received a pending session from a previous scan after closing modal - dispatch(removePendingSession()) - dispatch(openModal({ name: ModalName.WalletConnectScan, initialState: ScannerModalState.WalletQr })) - } - - const errorCard = ( - - - - ) - - const emptyListView = ( - - } - title={t('home.feed.empty.title')} - onPress={onPressReceive} - /> - - ) - - let emptyComponent = null - if (!hasData && isError) { - emptyComponent = errorCard - } else if (!isLoading && emptyListView) { - emptyComponent = emptyListView - } - - const refreshControl = useMemo(() => { - return ( - - ) - }, [refreshing, headerHeight, onRefresh, colors.neutral3, insets.top]) - - if (!hasData && isError) { - return errorCard - } - - // We want to display the loading shimmer in the footer only when the data haven't been fetched yet - // (list items use their own loading shimmer so there is no need to display it in the footer) - const isLoadingInitially = isLoading && !sectionData - - return ( - - >} - ListEmptyComponent={emptyComponent} - // we add a footer to cover any possible space, so user can scroll the top menu all the way to the top - ListFooterComponent={<>{isLoadingInitially && }} - data={sectionData} - estimatedItemSize={ESTIMATED_ITEM_SIZE} - initialNumToRender={20} - keyExtractor={keyExtractor} - maxToRenderPerBatch={20} - refreshControl={refreshControl} - refreshing={refreshing} - renderItem={renderActivityItem} - showsVerticalScrollIndicator={false} - updateCellsBatchingPeriod={10} - onContentSizeChange={onContentSizeChange} - onRefresh={onRefresh} - onScroll={scrollHandler} - {...containerProps} - /> - - ) - }), -) diff --git a/apps/mobile/src/components/icons/BlockExplorerIcon.tsx b/apps/mobile/src/components/icons/BlockExplorerIcon.tsx index 0d35aebb5f4..b1b7ee5b5ef 100644 --- a/apps/mobile/src/components/icons/BlockExplorerIcon.tsx +++ b/apps/mobile/src/components/icons/BlockExplorerIcon.tsx @@ -5,7 +5,7 @@ import { getChainInfo } from 'uniswap/src/features/chains/chainInfo' import { useBlockExplorerLogo } from 'uniswap/src/features/chains/logos' import { UniverseChainId } from 'uniswap/src/features/chains/types' -type IconComponentProps = SvgProps & { size?: IconSizeTokens | number } +type IconComponentProps = SvgProps & { size?: IconSizeTokens | number | { width: number; height: number } } const iconsCache = new Map>() diff --git a/apps/mobile/src/components/notifications/NotificationsBGImage.tsx b/apps/mobile/src/components/notifications/NotificationsBGImage.tsx new file mode 100644 index 00000000000..8522e1afb17 --- /dev/null +++ b/apps/mobile/src/components/notifications/NotificationsBGImage.tsx @@ -0,0 +1,60 @@ +import { useLayoutEffect, useState } from 'react' +import { Dimensions, Image, Platform } from 'react-native' +import { Flex, useIsDarkMode } from 'ui/src' +import { ONBOARDING_NOTIFICATIONS_DARK, ONBOARDING_NOTIFICATIONS_LIGHT } from 'ui/src/assets' + +/** + * Helper component to render the notifications background image based on the current theme + * and platform. + * + * One of the reasons why this is more complicated than it needs to be is because the android + * and ios images are different sizes and not the same aspect ratio. + */ +export const NotificationsBackgroundImage = (): JSX.Element => { + const isDarkMode = useIsDarkMode() + const [imageHeight, setImageHeight] = useState(0) + const [imageWidth, setImageWidth] = useState(0) + const imageSource = isDarkMode + ? Platform.select(ONBOARDING_NOTIFICATIONS_DARK) + : Platform.select(ONBOARDING_NOTIFICATIONS_LIGHT) + + const imageUri = Image.resolveAssetSource(imageSource).uri + + useLayoutEffect(() => { + Image.getSize(imageUri, (width, height) => { + setImageWidth(width) + setImageHeight(height) + }) + }, [imageUri]) + + const screenWidth = Dimensions.get('window').width + + // Since this image is dynamically loaded in a BSM, the initial BSM height + // does not account for the image. This variable is so that we can put + // a placeholder view immediately to smooth out the BSM animation. + const containerHeight = imageWidth > 0 && imageHeight > 0 ? (imageHeight * (0.9 * screenWidth)) / imageWidth : 0 + + return ( + + {imageWidth > 0 && imageHeight > 0 && ( + + )} + + ) +} diff --git a/apps/mobile/src/features/deepLinking/handleDeepLinkSaga.ts b/apps/mobile/src/features/deepLinking/handleDeepLinkSaga.ts index 92bd7d22a9f..eeb2f8b5f16 100644 --- a/apps/mobile/src/features/deepLinking/handleDeepLinkSaga.ts +++ b/apps/mobile/src/features/deepLinking/handleDeepLinkSaga.ts @@ -277,6 +277,8 @@ export function* handleDeepLink(action: ReturnType) { break } case DeepLinkAction.FiatOnRampScreen: { + const validUserAddress = yield* call(parseAndValidateUserAddress, deepLinkAction.data.userAddress) + yield* put(setAccountAsActive(validUserAddress)) yield* call(handleGoToFiatOnRampDeepLink) break } diff --git a/apps/mobile/src/features/deepLinking/handleOffRampReturnLinkSaga.ts b/apps/mobile/src/features/deepLinking/handleOffRampReturnLinkSaga.ts index 09eb5f6187c..c33d81c85f0 100644 --- a/apps/mobile/src/features/deepLinking/handleOffRampReturnLinkSaga.ts +++ b/apps/mobile/src/features/deepLinking/handleOffRampReturnLinkSaga.ts @@ -36,6 +36,8 @@ function* _handleOffRampReturnLink(url: URL) { throw new Error('Missing externalTransactionId or moonpay data in fiat offramp deep link') } + sendAnalyticsEvent(FiatOffRampEventName.FiatOffRampWidgetCompleted, { externalTransactionId }) + let offRampTransferDetails: OffRampTransferDetailsResponse | undefined try { @@ -49,7 +51,6 @@ function* _handleOffRampReturnLink(url: URL) { } catch (error) { logger.error(error, { tags: { file: 'handleOffRampReturnLinkSaga', function: 'handleOffRampReturnLink' }, - extra: { url: url.toString() }, }) throw new Error('Failed to fetch offramp transfer details') } @@ -61,16 +62,6 @@ function* _handleOffRampReturnLink(url: URL) { const { tokenAddress, baseCurrencyCode, baseCurrencyAmount, depositWalletAddress, logos, provider, chainId } = offRampTransferDetails - const analyticsProperties = { - cryptoCurrency: baseCurrencyCode, - currencyAmount: baseCurrencyAmount, - serviceProvider: provider, - chainId, - externalTransactionId, - } - - sendAnalyticsEvent(FiatOffRampEventName.FiatOffRampWidgetCompleted, analyticsProperties) - const currencyTradeableAsset: TradeableAsset = { address: tokenAddress, chainId: Number(chainId) as UniverseChainId, @@ -81,7 +72,13 @@ function* _handleOffRampReturnLink(url: URL) { name: provider, logoUrl: logos.lightLogo, onSubmitCallback: () => { - sendAnalyticsEvent(FiatOffRampEventName.FiatOffRampFundsSent, analyticsProperties) + sendAnalyticsEvent(FiatOffRampEventName.FiatOffRampFundsSent, { + cryptoCurrency: baseCurrencyCode, + currencyAmount: baseCurrencyAmount, + serviceProvider: provider, + chainId, + externalTransactionId, + }) }, moonpayCurrencyCode: baseCurrencyCode, meldCurrencyCode: baseCurrencyCode, diff --git a/apps/mobile/src/features/notifications/hooks/useNotificationOSPermissionsEnabled.ts b/apps/mobile/src/features/notifications/hooks/useNotificationOSPermissionsEnabled.ts index 8244c72c03f..6720ab5e1e7 100644 --- a/apps/mobile/src/features/notifications/hooks/useNotificationOSPermissionsEnabled.ts +++ b/apps/mobile/src/features/notifications/hooks/useNotificationOSPermissionsEnabled.ts @@ -9,7 +9,10 @@ export enum NotificationPermission { Loading = 'loading', } -export function useNotificationOSPermissionsEnabled(): NotificationPermission { +export function useNotificationOSPermissionsEnabled(): { + notificationPermissionsEnabled: NotificationPermission + checkNotificationPermissions: () => Promise +} { const [notificationPermissionsEnabled, setNotificationPermissionsEnabled] = useState( NotificationPermission.Loading, ) @@ -26,5 +29,5 @@ export function useNotificationOSPermissionsEnabled(): NotificationPermission { useAppStateTrigger('background', 'active', checkNotificationPermissions) - return notificationPermissionsEnabled + return { notificationPermissionsEnabled, checkNotificationPermissions } } diff --git a/apps/mobile/src/features/notifications/hooks/useNotificationsToggle.test.ts b/apps/mobile/src/features/notifications/hooks/useNotificationsToggle.test.ts index 74159f6383f..529ad0dd79a 100644 --- a/apps/mobile/src/features/notifications/hooks/useNotificationsToggle.test.ts +++ b/apps/mobile/src/features/notifications/hooks/useNotificationsToggle.test.ts @@ -4,7 +4,7 @@ import { NotificationPermission, useNotificationOSPermissionsEnabled, } from 'src/features/notifications/hooks/useNotificationOSPermissionsEnabled' -import { useNotificationToggle } from 'src/features/notifications/hooks/useNotificationsToggle' +import { useAddressNotificationToggle } from 'src/features/notifications/hooks/useNotificationsToggle' import { showNotificationSettingsAlert } from 'src/screens/Onboarding/NotificationsSetupScreen' import { act, renderHook, waitFor } from 'src/test/test-utils' import { useSelectAccountNotificationSetting } from 'wallet/src/features/wallet/hooks' @@ -42,7 +42,7 @@ jest.mock('wallet/src/features/wallet/hooks', () => ({ useSelectAccountNotificationSetting: jest.fn(), })) -describe('useNotificationToggle', () => { +describe('useAddressNotificationToggle', () => { const mockAddress = '0xAddress' const mockDispatch = jest.fn() const mockUseDispatch = useDispatch as jest.MockedFunction @@ -66,9 +66,12 @@ describe('useNotificationToggle', () => { firebaseEnabled?: boolean onPermissionChanged?: (enabled: boolean) => void } = {}) { - mockUseNotificationOSPermissionsQuery.mockReturnValue(osPermissionStatus) + mockUseNotificationOSPermissionsQuery.mockReturnValue({ + notificationPermissionsEnabled: osPermissionStatus, + checkNotificationPermissions: jest.fn(), + }) mockUseSelectAccountNotificationSetting.mockReturnValue(firebaseEnabled) - return renderHook(() => useNotificationToggle({ address: mockAddress, onPermissionChanged })) + return renderHook(() => useAddressNotificationToggle({ address: mockAddress, onToggle: onPermissionChanged })) } describe('initial states', () => { diff --git a/apps/mobile/src/features/notifications/hooks/useNotificationsToggle.ts b/apps/mobile/src/features/notifications/hooks/useNotificationsToggle.ts index e3c901efcea..77ca5045285 100644 --- a/apps/mobile/src/features/notifications/hooks/useNotificationsToggle.ts +++ b/apps/mobile/src/features/notifications/hooks/useNotificationsToggle.ts @@ -6,6 +6,7 @@ import { NotificationPermission, useNotificationOSPermissionsEnabled, } from 'src/features/notifications/hooks/useNotificationOSPermissionsEnabled' +import { NotifSettingType, getNotifSetting, handleNotifSettingToggled } from 'src/features/notifications/settings' import { showNotificationSettingsAlert } from 'src/screens/Onboarding/NotificationsSetupScreen' import { EditAccountAction, editAccountActions } from 'wallet/src/features/wallet/accounts/editAccountSaga' import { useSelectAccountNotificationSetting } from 'wallet/src/features/wallet/hooks' @@ -20,6 +21,60 @@ enum NotificationError { OsPermissionDenied = 'OS_PERMISSION_DENIED', } +export function useAddressNotificationToggle({ + address, + onToggle, +}: { + address: string + onToggle?: (enabled: boolean) => void +}): ReturnType { + const dispatch = useDispatch() + const isAppPermissionEnabled = useSelectAccountNotificationSetting(address) + + const handleToggle = useCallback( + (enabled: boolean) => { + dispatch( + editAccountActions.trigger({ + type: EditAccountAction.TogglePushNotification, + enabled, + address, + }), + ) + onToggle?.(enabled) + }, + [address, dispatch, onToggle], + ) + + return useBaseNotificationToggle({ isAppPermissionEnabled, onToggle: handleToggle }) +} + +export function useSettingNotificationToggle({ + type, + onToggle, +}: { + type: NotifSettingType + onToggle?: (enabled: boolean) => void +}): ReturnType { + const [isAppPermissionEnabled, setAppPermissionEnabled] = useState(false) + + useEffect(() => { + getNotifSetting(type) + .then(setAppPermissionEnabled) + .catch(() => {}) + }, [type]) + + const handleToggle = useCallback( + (enabled: boolean) => { + handleNotifSettingToggled(type, enabled) + setAppPermissionEnabled(enabled) + onToggle?.(enabled) + }, + [onToggle, type], + ) + + return useBaseNotificationToggle({ isAppPermissionEnabled, onToggle: handleToggle }) +} + /** * useNotificationToggle * @@ -64,20 +119,23 @@ enum NotificationError { * - Normal OS permission flow resumes */ -export function useNotificationToggle(props: { address: string; onPermissionChanged?: (enabled: boolean) => void }): { +function useBaseNotificationToggle({ + isAppPermissionEnabled, + onToggle, +}: { + isAppPermissionEnabled: boolean + onToggle: (enabled: boolean) => void +}): { isEnabled: boolean isPending: boolean toggle: () => void } { - const dispatch = useDispatch() - // Get real states from different systems - const osPermissionStatus = useNotificationOSPermissionsEnabled() - const reduxPushNotificationsEnabled = useSelectAccountNotificationSetting(props.address) + const { notificationPermissionsEnabled: osPermissionStatus } = useNotificationOSPermissionsEnabled() const isOSPermissionEnabled = osPermissionStatus === NotificationPermission.Enabled // Derive real enabled state - only true if both systems are enabled - const isEnabled = isOSPermissionEnabled && reduxPushNotificationsEnabled + const isEnabled = isOSPermissionEnabled && isAppPermissionEnabled // Optimistic UI state const [optimisticEnabled, setOptimisticEnabled] = useState(isEnabled) @@ -86,23 +144,14 @@ export function useNotificationToggle(props: { address: string; onPermissionChan const requestOSPermissions = useCallback(async (): Promise => { const granted = await promptPushPermission() if (!granted) { - // first let's enable the redux state (firebase) - // this will ensure that when the user goes to settings and enables notifications - // we're not stuck in a state where notifications are disabled - // and the user has to hit the toggle again - dispatch( - editAccountActions.trigger({ - type: EditAccountAction.TogglePushNotification, - enabled: true, - address: props.address, - }), - ) + // Keep app permissions enabled for when OS permissions are restored + onToggle(true) // this means the user denied the permission at the system level // and needs to go to settings to re-enable (boo) throw new Error(NotificationError.OsPermissionDenied) } return true - }, [dispatch, props.address]) + }, [onToggle]) // Reset optimistic state if real state changes useEffect(() => { @@ -124,15 +173,7 @@ export function useNotificationToggle(props: { address: string; onPermissionChan // After this point, we're guaranteed to have requested OS permissions // If we just obtained permissions, we want to enable notifications // Otherwise, we're toggling the current redux state - const shouldEnable = isOsEnabled ? !reduxPushNotificationsEnabled : true - - dispatch( - editAccountActions.trigger({ - type: EditAccountAction.TogglePushNotification, - enabled: shouldEnable, - address: props.address, - }), - ) + const shouldEnable = isOsEnabled ? !isAppPermissionEnabled : true return shouldEnable }, onError: (error) => { @@ -147,7 +188,7 @@ export function useNotificationToggle(props: { address: string; onPermissionChan // setState will bail if the value is the same as the current state // so we can safely call it without conditionals setOptimisticEnabled(enabled) - props.onPermissionChanged?.(enabled) + onToggle(enabled) }, }) diff --git a/apps/mobile/src/features/notifications/settings.ts b/apps/mobile/src/features/notifications/settings.ts new file mode 100644 index 00000000000..13520d7bcb2 --- /dev/null +++ b/apps/mobile/src/features/notifications/settings.ts @@ -0,0 +1,17 @@ +import OneSignal from 'react-native-onesignal' + +// Enum value represents tag name in OneSignal +export enum NotifSettingType { + GeneralUpdates = 'settings_general_updates_enabled', + PriceAlerts = 'settings_price_alerts_enabled', +} + +export function handleNotifSettingToggled(type: NotifSettingType, enabled: boolean): void { + OneSignal.sendTag(type, enabled ? 'true' : 'false') +} + +export async function getNotifSetting(type: NotifSettingType): Promise { + return new Promise((resolve, _reject) => { + OneSignal.getTags((tags) => resolve(tags?.[type] === 'true')) + }) +} diff --git a/apps/mobile/src/screens/AppLoadingScreen.tsx b/apps/mobile/src/screens/AppLoadingScreen.tsx index 5cd63c287c1..eb9ad37ee9e 100644 --- a/apps/mobile/src/screens/AppLoadingScreen.tsx +++ b/apps/mobile/src/screens/AppLoadingScreen.tsx @@ -40,7 +40,7 @@ function useFinishAutomatedRecovery(navigation: Props['navigation']): { const dispatch = useDispatch() const { setRecoveredImportedAccounts, finishOnboarding } = useOnboardingContext() - const notificationOSPermission = useNotificationOSPermissionsEnabled() + const { notificationPermissionsEnabled: notificationOSPermission } = useNotificationOSPermissionsEnabled() const hasAnyNotificationsEnabled = useSelector(selectAnyAddressHasNotificationsEnabled) const { deviceSupportsBiometrics } = useBiometricContext() const { requiredForTransactions: isBiometricAuthEnabled } = useBiometricAppSettings() diff --git a/apps/mobile/src/screens/HomeScreen/HomeScreen.tsx b/apps/mobile/src/screens/HomeScreen/HomeScreen.tsx index b6ab9a4a5b1..268afdaa838 100644 --- a/apps/mobile/src/screens/HomeScreen/HomeScreen.tsx +++ b/apps/mobile/src/screens/HomeScreen/HomeScreen.tsx @@ -23,7 +23,6 @@ import { AppStackScreenProp } from 'src/app/navigation/types' import TraceTabView from 'src/components/Trace/TraceTabView' import { AccountHeader } from 'src/components/accounts/AccountHeader' import { ACTIVITY_TAB_DATA_DEPENDENCIES, ActivityTab } from 'src/components/home/ActivityTab' -import { FEED_TAB_DATA_DEPENDENCIES, FeedTab } from 'src/components/home/FeedTab' import { HomeExploreTab } from 'src/components/home/HomeExploreTab' import { NFTS_TAB_DATA_DEPENDENCIES, NftsTab } from 'src/components/home/NftsTab' import { TOKENS_TAB_DATA_DEPENDENCIES, TokensTab } from 'src/components/home/TokensTab' @@ -105,8 +104,6 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. const isModalOpen = useSelector(selectSomeModalOpen) const isHomeScreenBlur = !isFocused || isModalOpen - const showFeedTab = useFeatureFlag(FeatureFlags.FeedTab) - const { showEmptyWalletState, isTabsDataLoaded } = useHomeScreenState() // opens the wallet restore modal if recovery phrase is missing after the app is opened @@ -126,7 +123,6 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. const tokensTitle = t('home.tokens.title') const nftsTitle = t('home.nfts.title') const activityTitle = t('home.activity.title') - const feedTitle = t('home.feed.title') const exploreTitle = t('home.explore.title') const routes = useMemo((): HomeRoute[] => { @@ -145,12 +141,8 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. { key: SectionName.HomeActivityTab, title: activityTitle, enableNotificationBadge: true }, ] - if (showFeedTab) { - tabs.push({ key: SectionName.HomeFeedTab, title: feedTitle }) - } - return tabs - }, [showEmptyWalletState, tokensTitle, nftsTitle, activityTitle, showFeedTab, exploreTitle, feedTitle]) + }, [showEmptyWalletState, tokensTitle, nftsTitle, activityTitle, exploreTitle]) useEffect( function syncTabIndex() { @@ -202,12 +194,6 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. [activityTabScrollValue], ) - const feedTabScrollValue = useSharedValue(0) - const feedTabScrollHandler = useAnimatedScrollHandler( - (event) => (feedTabScrollValue.value = event.contentOffset.y), - [feedTabScrollValue], - ) - const exploreTabScrollValue = useSharedValue(0) const exploreTabScrollHandler = useAnimatedScrollHandler( (event) => (exploreTabScrollValue.value = event.contentOffset.y), @@ -220,8 +206,6 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. // eslint-disable-next-line @typescript-eslint/no-explicit-any const activityTabScrollRef = useAnimatedRef>() // eslint-disable-next-line @typescript-eslint/no-explicit-any - const feedTabScrollRef = useAnimatedRef>() - // eslint-disable-next-line @typescript-eslint/no-explicit-any const exploreTabScrollRef = useAnimatedRef>() const currentScrollValue = useDerivedValue(() => { @@ -234,12 +218,11 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. } else if (tabIndex === HomeScreenTabIndex.Activity) { return activityTabScrollValue.value } - return feedTabScrollValue.value + return 0 }, [ activityTabScrollValue.value, exploreTabScrollValue.value, showEmptyWalletState, - feedTabScrollValue.value, nftsTabScrollValue.value, tabIndex, tokensTabScrollValue.value, @@ -258,12 +241,10 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. nftsTabScrollValue.value = 0 tokensTabScrollValue.value = 0 activityTabScrollValue.value = 0 - feedTabScrollValue.value = 0 exploreTabScrollValue.value = 0 nftsTabScrollRef.current?.scrollToOffset({ offset: 0, animated: true }) tokensTabScrollRef.current?.scrollToOffset({ offset: 0, animated: true }) activityTabScrollRef.current?.scrollToOffset({ offset: 0, animated: true }) - feedTabScrollRef.current?.scrollToOffset({ offset: 0, animated: true }) exploreTabScrollRef.current?.scrollToOffset({ offset: 0, animated: true }) }, [ activeAccount, @@ -275,8 +256,6 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. nftsTabScrollValue, tokensTabScrollRef, tokensTabScrollValue, - feedTabScrollRef, - feedTabScrollValue, ]) // Need to create a derived value for tab index so it can be referenced from a static ref @@ -318,13 +297,10 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. { list: tokensTabScrollRef, position: tokensTabScrollValue, index: 0 }, { list: nftsTabScrollRef, position: nftsTabScrollValue, index: 1 }, { list: activityTabScrollRef, position: activityTabScrollValue, index: 2 }, - { list: feedTabScrollRef, position: feedTabScrollValue, index: 3 }, ], [ activityTabScrollRef, activityTabScrollValue, - feedTabScrollRef, - feedTabScrollValue, nftsTabScrollRef, nftsTabScrollValue, tokensTabScrollRef, @@ -567,18 +543,13 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. setRefreshing(true) await apolloClient.refetchQueries({ - include: [ - ...TOKENS_TAB_DATA_DEPENDENCIES, - ...NFTS_TAB_DATA_DEPENDENCIES, - ...ACTIVITY_TAB_DATA_DEPENDENCIES, - ...(showFeedTab ? FEED_TAB_DATA_DEPENDENCIES : []), - ], + include: [...TOKENS_TAB_DATA_DEPENDENCIES, ...NFTS_TAB_DATA_DEPENDENCIES, ...ACTIVITY_TAB_DATA_DEPENDENCIES], }) // Artificially delay 0.5 second to show the refresh animation const timeout = setTimeout(() => setRefreshing(false), 500) return () => clearTimeout(timeout) - }, [apolloClient, showFeedTab]) + }, [apolloClient]) const renderTab = useCallback( ({ @@ -639,18 +610,6 @@ export function HomeScreen(props?: AppStackScreenProp): JSX. /> ) - case SectionName.HomeFeedTab: - return ( - - ) case SectionName.HomeExploreTab: return ( ): JSX. nftsTabScrollHandler, activityTabScrollRef, activityTabScrollHandler, - feedTabScrollRef, - feedTabScrollHandler, exploreTabScrollRef, exploreTabScrollHandler, ], diff --git a/apps/mobile/src/screens/HomeScreen/useHomeScreenState.tsx b/apps/mobile/src/screens/HomeScreen/useHomeScreenState.tsx index 84ea4d67931..704c35833ad 100644 --- a/apps/mobile/src/screens/HomeScreen/useHomeScreenState.tsx +++ b/apps/mobile/src/screens/HomeScreen/useHomeScreenState.tsx @@ -3,9 +3,7 @@ import { useDispatch, useSelector } from 'react-redux' import { useNftsTabQuery } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains' import { usePortfolioBalances } from 'uniswap/src/features/dataApi/balances' -import { getValidAddress } from 'uniswap/src/utils/addresses' -import { logger } from 'utilities/src/logger/logger' -import { useFormattedTransactionDataForActivity } from 'wallet/src/features/activity/hooks' +import { useFormattedTransactionDataForActivity } from 'wallet/src/features/activity/hooks/useFormattedTransactionDataForActivity' import { useActiveAccountWithThrow } from 'wallet/src/features/wallet/hooks' import { selectHasBalanceOrActivityForAddress } from 'wallet/src/features/wallet/selectors' import { setHasBalanceOrActivity } from 'wallet/src/features/wallet/slice' @@ -51,27 +49,15 @@ export function useHomeScreenState(): { const hasNft = !!nftData?.nftBalances?.edges.length const hasTokenBalance = !!Object.entries(balancesById || {}).length - const hasUsedWalletFromRemote = hasTokenBalance || hasNft || hasActivity - const dataIsLoading = areBalancesLoading || areNFTsLoading || isActivityLoading - - // Note: This is to prevent loading the empty wallet state for an active - // wallet loading tabs for the first time. - const isTabsDataLoaded = !(dataIsLoading && hasUsedWalletFromCache) + const hasUsedWalletFromRemote = !!hasTokenBalance || !!hasNft || !!hasActivity + const isTabsDataLoaded = + hasUsedWalletFromRemote || (!areBalancesLoading && !areNFTsLoading && !isActivityLoading) || hasUsedWalletFromCache const hasUsedWallet = hasUsedWalletFromCache || hasUsedWalletFromRemote useEffect(() => { if (hasUsedWallet && !hasUsedWalletFromCache) { - const validAddress = getValidAddress(address) - if (!validAddress) { - // do nothing. This will revert to the old logic to overfetch. - logger.error('Unexpected call to `setHasUsedWallet` with invalid `address`', { - extra: { payload: address }, - tags: { file: 'behaviorHistory/slice.ts', function: 'setHasUsedWallet' }, - }) - return - } - dispatch(setHasBalanceOrActivity({ address: validAddress, hasBalanceOrActivity: true })) + dispatch(setHasBalanceOrActivity({ address, hasBalanceOrActivity: true })) } }, [hasUsedWallet, dispatch, address, hasUsedWalletFromCache]) diff --git a/apps/mobile/src/screens/Onboarding/NotificationsSetupScreen.tsx b/apps/mobile/src/screens/Onboarding/NotificationsSetupScreen.tsx index 53fefd257e9..2d38352038e 100644 --- a/apps/mobile/src/screens/Onboarding/NotificationsSetupScreen.tsx +++ b/apps/mobile/src/screens/Onboarding/NotificationsSetupScreen.tsx @@ -1,15 +1,15 @@ import { NativeStackScreenProps } from '@react-navigation/native-stack' import React, { useCallback } from 'react' import { useTranslation } from 'react-i18next' -import { Alert, Image, Platform, StyleSheet } from 'react-native' +import { Alert } from 'react-native' import { OnboardingStackParamList } from 'src/app/navigation/types' +import { NotificationsBackgroundImage } from 'src/components/notifications/NotificationsBGImage' import { useBiometricContext } from 'src/features/biometrics/context' import { useBiometricAppSettings } from 'src/features/biometrics/hooks' import { promptPushPermission } from 'src/features/notifications/Onesignal' import { OnboardingScreen } from 'src/features/onboarding/OnboardingScreen' import { useCompleteOnboardingCallback } from 'src/features/onboarding/hooks' -import { DeprecatedButton, Flex, useIsDarkMode } from 'ui/src' -import { ONBOARDING_NOTIFICATIONS_DARK, ONBOARDING_NOTIFICATIONS_LIGHT } from 'ui/src/assets' +import { DeprecatedButton, Flex } from 'ui/src' import { BellOn } from 'ui/src/components/icons' import Trace from 'uniswap/src/features/telemetry/Trace' import { ElementName } from 'uniswap/src/features/telemetry/constants' @@ -77,7 +77,7 @@ export function NotificationsSetupScreen({ navigation, route: { params } }: Prop title={t('onboarding.notification.title')} onSkip={navigateToNextScreen} > - + @@ -88,23 +88,3 @@ export function NotificationsSetupScreen({ navigation, route: { params } }: Prop ) } - -const NotificationsBackgroundImage = (): JSX.Element => { - const isDarkMode = useIsDarkMode() - return ( - - ) -} - -const styles = StyleSheet.create({ - image: { - height: '100%', - width: '100%', - }, -}) diff --git a/apps/mobile/src/screens/SettingsNotificationsScreen.tsx b/apps/mobile/src/screens/SettingsNotificationsScreen.tsx index b02ae526ac9..fe3effe5312 100644 --- a/apps/mobile/src/screens/SettingsNotificationsScreen.tsx +++ b/apps/mobile/src/screens/SettingsNotificationsScreen.tsx @@ -2,10 +2,16 @@ import React, { memo } from 'react' import { useTranslation } from 'react-i18next' import { BackHeader } from 'src/components/layout/BackHeader' import { Screen } from 'src/components/layout/Screen' -import { useNotificationToggle } from 'src/features/notifications/hooks/useNotificationsToggle' +import { + useAddressNotificationToggle, + useSettingNotificationToggle, +} from 'src/features/notifications/hooks/useNotificationsToggle' +import { NotifSettingType } from 'src/features/notifications/settings' import { Flex, Switch, Text } from 'ui/src' import { iconSizes } from 'ui/src/theme' import { AccountType } from 'uniswap/src/features/accounts/types' +import { FeatureFlags } from 'uniswap/src/features/gating/flags' +import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' import { MobileEventName } from 'uniswap/src/features/telemetry/constants' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { AddressDisplay } from 'wallet/src/components/accounts/AddressDisplay' @@ -16,58 +22,111 @@ export function SettingsNotificationsScreen(): JSX.Element { const accounts = useAccountsList() + const priceAlertsToggleEnabled = useFeatureFlag(FeatureFlags.NotificationPriceAlerts) + + const { isEnabled: updatesNotifEnabled, toggle: toggleUpdatesNotif } = useSettingNotificationToggle({ + type: NotifSettingType.GeneralUpdates, + }) + const { isEnabled: priceAlertsNotifEnabled, toggle: togglePriceAlertsNotif } = useSettingNotificationToggle({ + type: NotifSettingType.PriceAlerts, + }) + return ( {t('settings.setting.notifications.title')} - - - - {t('settings.setting.notifications.row.activity.title')} - - - {t('settings.setting.notifications.row.activity.description')} - - + + + + {priceAlertsToggleEnabled ? ( + + ) : undefined} - {accounts.map((account) => { - const isViewOnly = account.type === AccountType.Readonly - return ( - - - + + + {t('settings.setting.notifications.row.activity.title')} + + + {t('settings.setting.notifications.row.activity.description')} + + + + + {accounts.map((account) => { + const isViewOnly = account.type === AccountType.Readonly + return ( + + + + + - - - ) - })} + ) + })} + ) } +function NotificationSettingRow({ + title, + description, + checked, + onCheckedChange, +}: { + title: string + description: string + checked: boolean + onCheckedChange: (checked: boolean) => void +}): JSX.Element { + return ( + + + + {title} + + + {description} + + + + + ) +} + function onPermissionChanged(enabled: boolean): void { sendAnalyticsEvent(MobileEventName.NotificationsToggled, { enabled }) } -function _NotificationsSwitch({ address }: { address: string }): JSX.Element { - const { isEnabled, isPending, toggle } = useNotificationToggle({ +function _AddressNotificationsSwitch({ address }: { address: string }): JSX.Element { + const { isEnabled, isPending, toggle } = useAddressNotificationToggle({ address, - onPermissionChanged, + onToggle: onPermissionChanged, }) return } -const NotificationsSwitch = memo(_NotificationsSwitch) +const AddressNotificationsSwitch = memo(_AddressNotificationsSwitch) diff --git a/apps/mobile/src/screens/SettingsScreen.tsx b/apps/mobile/src/screens/SettingsScreen.tsx index 7c92be32f6c..7e031413c95 100644 --- a/apps/mobile/src/screens/SettingsScreen.tsx +++ b/apps/mobile/src/screens/SettingsScreen.tsx @@ -18,6 +18,10 @@ import { WalletSettings } from 'src/components/Settings/WalletSettings' import { HeaderScrollScreen } from 'src/components/layout/screens/HeaderScrollScreen' import { useBiometricContext } from 'src/features/biometrics/context' import { useBiometricName, useDeviceSupportsBiometricAuth } from 'src/features/biometrics/hooks' +import { + NotificationPermission, + useNotificationOSPermissionsEnabled, +} from 'src/features/notifications/hooks/useNotificationOSPermissionsEnabled' import { useWalletRestore } from 'src/features/wallet/hooks' import { useHapticFeedback } from 'src/utils/haptics/useHapticFeedback' import { Flex, IconProps, Text, useSporeColors } from 'ui/src' @@ -105,6 +109,8 @@ export function SettingsScreen(): JSX.Element { }, [setHapticsEnabled, hapticsEnabled]) const [isTestnetModalOpen, setIsTestnetModalOpen] = useState(false) + const { notificationPermissionsEnabled: notificationOSPermission } = useNotificationOSPermissionsEnabled() + const { isTestnetModeEnabled } = useEnabledChains() const handleTestnetModeToggle = useCallback((): void => { const newIsTestnetMode = !isTestnetModeEnabled @@ -186,6 +192,13 @@ export function SettingsScreen(): JSX.Element { screen: MobileScreens.SettingsNotifications, text: t('settings.setting.notifications.title'), icon: , + checkIfCanProceed: (): boolean => { + if (notificationOSPermission === NotificationPermission.Enabled) { + return true + } + navigation.navigate(ModalName.NotificationsOSSettings) + return false + }, }, { text: t('settings.setting.smallBalances.title'), @@ -345,6 +358,8 @@ export function SettingsScreen(): JSX.Element { hasCloudBackup, isTestnetModeEnabled, handleTestnetModeToggle, + notificationOSPermission, + navigation, ]) const renderItem = ({ @@ -356,7 +371,9 @@ export function SettingsScreen(): JSX.Element { if ('component' in item) { return item.component } - return + return ( + + ) } const handleModalClose = useCallback(() => setIsTestnetModalOpen(false), []) @@ -373,13 +390,17 @@ export function SettingsScreen(): JSX.Element { keyExtractor={(_item, index): string => 'settings' + index} renderItem={renderItem} renderSectionFooter={(): JSX.Element => } - renderSectionHeader={({ section: { subTitle } }): JSX.Element => ( - - - {subTitle} - - - )} + renderSectionHeader={({ section: { subTitle } }): JSX.Element => + subTitle ? ( + + + {subTitle} + + + ) : ( + <> + ) + } sections={sections.filter((p) => !p.isHidden)} showsVerticalScrollIndicator={false} /> diff --git a/apps/mobile/src/screens/SettingsWallet.tsx b/apps/mobile/src/screens/SettingsWallet.tsx index bf9d994997e..623de0b3584 100644 --- a/apps/mobile/src/screens/SettingsWallet.tsx +++ b/apps/mobile/src/screens/SettingsWallet.tsx @@ -20,6 +20,7 @@ import { import { BackHeader } from 'src/components/layout/BackHeader' import { Screen } from 'src/components/layout/Screen' import { openModal } from 'src/features/modals/modalSlice' +import { useWalletConnect } from 'src/features/walletConnect/useWalletConnect' import { DeprecatedButton, Flex, Text, useSporeColors } from 'ui/src' import GlobalIcon from 'ui/src/assets/icons/global.svg' import TextEditIcon from 'ui/src/assets/icons/textEdit.svg' @@ -54,6 +55,7 @@ export function SettingsWallet({ const { unitag } = useUnitagByAddress(address) const readonly = currentAccount?.type === AccountType.Readonly const navigation = useNavigation() + const { sessions } = useWalletConnect(address) const showEditProfile = !readonly @@ -83,12 +85,12 @@ export function SettingsWallet({ const sections: SettingsSection[] = [ { - subTitle: t('settings.setting.wallet.preferences.title'), data: [ ...(showEditProfile ? [] : [editNicknameSectionOption]), { screen: MobileScreens.SettingsWalletManageConnection, text: t('settings.setting.wallet.connections.title'), + count: sessions.length, icon: , screenProps: { address }, isHidden: readonly, @@ -134,13 +136,17 @@ export function SettingsWallet({ keyExtractor={(_item, index): string => 'wallet_settings' + index} renderItem={renderItem} renderSectionFooter={(): JSX.Element => } - renderSectionHeader={({ section: { subTitle } }): JSX.Element => ( - - - {subTitle} - - - )} + renderSectionHeader={({ section: { subTitle } }): JSX.Element => + subTitle ? ( + + + {subTitle} + + + ) : ( + <> + ) + } sections={sections.filter((p) => !p.isHidden)} showsVerticalScrollIndicator={false} stickySectionHeadersEnabled={false} diff --git a/apps/web/package.json b/apps/web/package.json index becf0fab4ab..6324c99f8a9 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -20,6 +20,7 @@ "typecheck": "tsc && yarn typecheck:cloud && yarn typecheck:cypress", "typecheck:cloud": "tsc -p functions/tsconfig.json", "typecheck:cypress": "tsc -p cypress/tsconfig.json", + "find:unused": "bash scripts/delete-unused-assets.sh", "test": "craco test --watchAll=false", "test:set1": "craco test --testPathPattern='src/components'", "test:set2": "craco test --testPathPattern='src/(pages|state)'", @@ -194,29 +195,29 @@ "@tanstack/react-query": "5.51.16", "@tanstack/react-table": "8.10.7", "@types/poisson-disk-sampling": "2.2.4", - "@types/react-scroll-sync": "0.8.7", + "@types/react-scroll-sync": "0.9.0", "@types/react-window-infinite-loader": "1.0.6", "@uniswap/analytics": "1.7.0", - "@uniswap/analytics-events": "2.40.0", + "@uniswap/analytics-events": "2.41.0", "@uniswap/client-explore": "0.0.14", "@uniswap/client-pools": "0.0.12", "@uniswap/liquidity-staker": "1.0.2", "@uniswap/merkle-distributor": "1.0.1", "@uniswap/permit2-sdk": "1.3.0", "@uniswap/redux-multicall": "1.1.8", - "@uniswap/router-sdk": "1.18.0", - "@uniswap/sdk-core": "7.1.0", + "@uniswap/router-sdk": "1.21.0", + "@uniswap/sdk-core": "7.5.0", "@uniswap/smart-order-router": "3.17.3", "@uniswap/token-lists": "1.0.0-beta.33", "@uniswap/uniswapx-sdk": "3.0.0-beta.1", - "@uniswap/universal-router-sdk": "4.10.0", + "@uniswap/universal-router-sdk": "4.14.0", "@uniswap/v2-core": "1.0.1", "@uniswap/v2-periphery": "1.1.0-beta.0", - "@uniswap/v2-sdk": "4.9.0", + "@uniswap/v2-sdk": "4.13.0", "@uniswap/v3-core": "1.0.1", "@uniswap/v3-periphery": "1.4.4", - "@uniswap/v3-sdk": "3.21.0", - "@uniswap/v4-sdk": "1.15.0", + "@uniswap/v3-sdk": "3.24.0", + "@uniswap/v4-sdk": "1.18.0", "@vanilla-extract/css": "1.14.0", "@vanilla-extract/dynamic": "2.1.0", "@vanilla-extract/sprinkles": "1.6.1", diff --git a/apps/web/public/app-sitemap.xml b/apps/web/public/app-sitemap.xml index 06bb6000f83..bc83f2fc08c 100644 --- a/apps/web/public/app-sitemap.xml +++ b/apps/web/public/app-sitemap.xml @@ -126,16 +126,4 @@ weekly 0.5 - - https://app.uniswap.org/positions/create - 2024-09-17T19:57:27.976Z - weekly - 0.7 - - - https://app.uniswap.org/positions - 2024-09-17T19:57:27.976Z - weekly - 0.7 - diff --git a/apps/web/public/images/256x256_App_Icon_Pink.svg b/apps/web/public/images/256x256_App_Icon_Pink.svg deleted file mode 100644 index 8c8286838d4..00000000000 --- a/apps/web/public/images/256x256_App_Icon_Pink.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/apps/web/public/images/extension_promo/announcement_modal_desktop.png b/apps/web/public/images/extension_promo/announcement_modal_desktop.png deleted file mode 100644 index c1778ee1662..00000000000 Binary files a/apps/web/public/images/extension_promo/announcement_modal_desktop.png and /dev/null differ diff --git a/apps/web/public/images/extension_promo/announcement_modal_mobile.png b/apps/web/public/images/extension_promo/announcement_modal_mobile.png deleted file mode 100644 index f0e413edcd3..00000000000 Binary files a/apps/web/public/images/extension_promo/announcement_modal_mobile.png and /dev/null differ diff --git a/apps/web/public/images/noise-light.png b/apps/web/public/images/noise-light.png deleted file mode 100644 index 395991c4107..00000000000 Binary files a/apps/web/public/images/noise-light.png and /dev/null differ diff --git a/apps/web/public/images/unichain/unichain_modal_desktop.png b/apps/web/public/images/unichain/unichain_modal_desktop.png deleted file mode 100644 index c4b2c5765bf..00000000000 Binary files a/apps/web/public/images/unichain/unichain_modal_desktop.png and /dev/null differ diff --git a/apps/web/public/images/unichain/unichain_modal_mobile.png b/apps/web/public/images/unichain/unichain_modal_mobile.png deleted file mode 100644 index 620f6fdf06c..00000000000 Binary files a/apps/web/public/images/unichain/unichain_modal_mobile.png and /dev/null differ diff --git a/apps/web/public/nft/svgs/marketplaces/looksrare-grey.svg b/apps/web/public/nft/svgs/marketplaces/looksrare-grey.svg deleted file mode 100644 index 026109b63d5..00000000000 --- a/apps/web/public/nft/svgs/marketplaces/looksrare-grey.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/apps/web/public/nft/svgs/marketplaces/opensea-grey.svg b/apps/web/public/nft/svgs/marketplaces/opensea-grey.svg deleted file mode 100644 index 62b3eb667a4..00000000000 --- a/apps/web/public/nft/svgs/marketplaces/opensea-grey.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/apps/web/public/nft/svgs/marketplaces/x2y2-grey.svg b/apps/web/public/nft/svgs/marketplaces/x2y2-grey.svg deleted file mode 100644 index 93a7023f684..00000000000 --- a/apps/web/public/nft/svgs/marketplaces/x2y2-grey.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/apps/web/public/nfts-sitemap.xml b/apps/web/public/nfts-sitemap.xml index 5d053264215..760bf7598b7 100644 --- a/apps/web/public/nfts-sitemap.xml +++ b/apps/web/public/nfts-sitemap.xml @@ -2,647 +2,707 @@ https://app.uniswap.org/nfts/collection/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x60e4d786628fea6478f785a6d7e704777c86a7c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xed5af388653567af2f388e6224dc7c4b3241c544 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x34d85c9cdeb23fa97cb08333b511ac86e1c4e258 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x99a9b7c1116f9ceeb1652de04d5969cce509b069 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x49cf6f5d44e70224e2e23fdcdd2c053f30ada28b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xb7f7f6c52f2e2fdb1963eab30438024864c313f6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x23581767a106ae21c074b2276d25e5c3e136a68b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x8a90cab2b38dba80c64b7734e58ee1db38b8992e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xba30e5f9bb24caa003e9f2f0497ad287fdf95623 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xbd3531da5cf5857e7cfaa92426877b022e612cf8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x7bd29408f11d2bfc23c34f18275bbf23bb716bc7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x306b1ea3ecdf94ab739f1910bbda052ed4a9f949 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x1a92f7381b9f03921564a437210bb9396471050c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x5cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c38 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x5af0d9827e0c53e4799bb226655a1de152a425a5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x3bf2922f4520a8ba0c2efc3d2a1539678dad5e9d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xe785e82358879f061bc3dcac6f0444462d4b5330 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x76be3b62873462d2142405439777e971754e8e77 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xfd43af6d3fe1b916c026f6ac35b3ede068d1ca01 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x1cb1a5e65610aeff2551a50f76a87a7d3fb649c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xff9c1b15b16263c61d017ee9f65c50e4ae0113d7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x6339e5e072086621540d0362c4e3cea0d643e114 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xb932a70a57673d89f4acffbe830e8ed7f75fb9e0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x79fcdef22feed20eddacbb2587640e45491b757f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xa3aee8bce55beea1951ef834b99f3ac60d1abeeb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x769272677fab02575e84945f03eca517acc544cc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x4db1f25d3d98600140dfc18deb7515be5bd293af - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x34eebee6942d8def3c125458d1a86e0a897fd6f9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x59468516a8259058bad1ca5f8f4bff190d30e066 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x394e3d3044fc89fcdd966d3cb35ac0b32b0cda91 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x60bb1e2aa1c9acafb4d34f71585d7e959f387769 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x28472a58a490c5e09a238847f66a68a47cc76f0f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x341a1c534248966c4b6afad165b98daed4b964ef - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x82c7a8f707110f5fbb16184a5933e9f78a34c6ab - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xccc441ac31f02cd96c153db6fd5fe0a2f4e6a68d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x764aeebcf425d56800ef2c84f2578689415a2daa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x160c404b2b49cbc3240055ceaee026df1e8497a0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xd2f668a8461d6761115daf8aeb3cdf5f40c532c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x39ee2c7b3cb80254225884ca001f57118c8f21b6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xd774557b647330c91bf44cfeab205095f7e6c367 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x1792a96e5668ad7c167ab804a100ce42395ce54d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xf87e31492faf9a91b02ee0deaad50d51d56d5d4d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x04afa589e2b933f9463c5639f412b183ec062505 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xe75512aa3bec8f00434bbd6ad8b0a3fbff100ad6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x348fc118bcc65a92dc033a951af153d14d945312 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x892848074ddea461a15f337250da3ce55580ca85 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x5946aeaab44e65eb370ffaa6a7ef2218cff9b47d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x282bdd42f4eb70e7a9d9f40c8fea0825b7f68c5d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x4b15a9c28034dc83db40cd810001427d3bd7163d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x7ea3cca10668b8346aec0bf1844a49e995527c8b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xb852c6b5892256c264cc2c888ea462189154d8d7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x9378368ba6b85c1fba5b131b530f5f5bedf21a18 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x2acab3dea77832c09420663b0e1cb386031ba17b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x0c2e57efddba8c768147d1fdf9176a0a6ebd5d83 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x08d7c0242953446436f34b4c78fe9da38c73668d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x8943c7bac1914c9a7aba750bf2b6b09fd21037e0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x364c828ee171616a39897688a831c2499ad972ec - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x7f36182dee28c45de6072a34d29855bae76dbe2f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xf61f24c2d93bf2de187546b14425bf631f28d6dc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x797a48c46be32aafcedcfd3d8992493d8a1f256b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x123b30e25973fecd8354dd5f41cc45a3065ef88c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x6632a9d63e142f17a668064d41a21193b49b41a0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xf4ee95274741437636e748ddac70818b4ed7d043 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x57a204aa1042f6e66dd7730813f4024114d74f37 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xd1258db6ac08eb0e625b75b371c023da478e94a9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x75e95ba5997eb235f40ecf8347cdb11f18ff640b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xd532b88607b1877fe20c181cba2550e3bbd6b31c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xa1d4657e0e6507d5a94d06da93e94dc7c8c44b51 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xedb61f74b0d09b2558f1eeb79b247c1f363ae452 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x7d8820fa92eb1584636f4f5b8515b5476b75171a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x231d3559aa848bf10366fb9868590f01d34bf240 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xad9fd7cb4fc7a0fbce08d64068f60cbde22ed34c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x0e9d6552b85be180d941f1ca73ae3e318d2d4f1f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xb716600ed99b4710152582a124c697a7fe78adbf - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xaadc2d4261199ce24a4b0a57370c4fcf43bb60aa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x4e1f41613c9084fdb9e34e11fae9412427480e56 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x79986af15539de2db9a5086382daeda917a9cf0c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xc99c679c50033bbc5321eb88752e89a93e9e83c5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xc36cf0cfcb5d905b8b513860db0cfe63f6cf9f5c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x9c8ff314c9bc7f6e59a9d9225fb22946427edc03 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x3110ef5f612208724ca51f5761a69081809f03b7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x036721e5a769cc48b3189efbb9cce4471e8a48b1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x524cab2ec69124574082676e6f654a18df49a048 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x7ab2352b1d2e185560494d5e577f9d3c238b78c5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x32973908faee0bf825a343000fe412ebe56f802a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x7daec605e9e2a1717326eedfd660601e2753a057 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xc1caf0c19a8ac28c41fe59ba6c754e4b9bd54de9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x33fd426905f149f8376e227d0c9d3340aad17af1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x466cfcd0525189b573e794f554b8a751279213ac - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x6be69b2a9b153737887cfcdca7781ed1511c7e36 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x80336ad7a747236ef41f47ed2c7641828a480baa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x9401518f4ebba857baa879d9f76e1cc8b31ed197 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x4b61413d4392c806e6d0ff5ee91e6073c21d6430 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xc3f733ca98e0dad0386979eb96fb1722a1a05e69 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x09233d553058c2f42ba751c87816a8e9fae7ef10 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x960b7a6bcd451c9968473f7bbfd9be826efd549a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x36d30b3b85255473d27dd0f7fd8f35e36a9d6f06 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x698fbaaca64944376e2cdc4cad86eaa91362cf54 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x497a9a79e82e6fc0ff10a16f6f75e6fcd5ae65a8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x41a322b28d0ff354040e2cbc676f0320d8c8850d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xa9c0a07a7cb84ad1f2ffab06de3e55aab7d523e8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x942bc2d3e7a589fe5bd4a5c6ef9727dfd82f5c8a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x8821bee2ba0df28761afff119d66390d594cd280 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x8c6def540b83471664edc6d5cf75883986932674 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x8d9710f0e193d3f95c0723eaaf1a81030dc9116d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x86825dfca7a6224cfbd2da48e85df2fc3aa7c4b1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x629a673a8242c2ac4b7b8c5d8735fbeac21a6205 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x9a534628b4062e123ce7ee2222ec20b86e16ca8f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xc2c747e0f7004f9e8817db2ca4997657a7746928 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x73da73ef3a6982109c4d5bdb0db9dd3e3783f313 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xc92ceddfb8dd984a89fb494c376f9a48b999aafc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x3248e8ba90facc4fdd3814518c14f8cc4d980e4b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x67d9417c9c3c250f61a83c7e8658dac487b56b09 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xb6a37b5d14d502c3ab0ae6f3a0e058bc9517786e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x86c10d10eca1fca9daf87a279abccabe0063f247 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x4b3406a41399c7fd2ba65cbc93697ad9e7ea61e5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xb0640e8b5f24bedc63c33d371923d68fde020303 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xd3d9ddd0cf0a5f0bfb8f7fceae075df687eaebab - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xa5c0bd78d1667c13bfb403e2a3336871396713c5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x4d7d2e237d64d1484660b55c0a4cc092fa5e6716 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xfcb1315c4273954f74cb16d5b663dbf479eec62e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x66d1db16101502ed0ca428842c619ca7b62c8fef - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x128675d4fddbc4a0d3f8aa777d8ee0fb8b427c2f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x19b86299c21505cdf59ce63740b240a9c822b5e4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xacf63e56fd08970b43401492a02f6f38b6635c91 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0x0bebad1ff25c623dff9605dad4a8f782d5da37df - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.7 https://app.uniswap.org/nfts/collection/0xdceaf1652a131f32a821468dc03a92df0edd86ea - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z + 0.7 + + + https://app.uniswap.org/nfts/collection/0x273f7f8e6489682df756151f5525576e322d51a3 + 2025-01-24T22:24:05.375Z + 0.7 + + + https://app.uniswap.org/nfts/collection/0x77372a4cc66063575b05b44481f059be356964a4 + 2025-01-24T22:24:05.375Z + 0.7 + + + https://app.uniswap.org/nfts/collection/0xf5b0a3efb8e8e4c201e2a935f110eaaf3ffecb8d + 2025-01-24T22:24:05.375Z + 0.7 + + + https://app.uniswap.org/nfts/collection/0x22c36bfdcef207f9c0cc941936eff94d4246d14a + 2025-01-24T22:24:05.375Z + 0.7 + + + https://app.uniswap.org/nfts/collection/0x59325733eb952a92e069c87f0a6168b29e80627f + 2025-01-24T22:24:05.375Z + 0.7 + + + https://app.uniswap.org/nfts/collection/0x0e3a2a1f2146d86a604adc220b4967a898d7fe07 + 2025-01-24T22:24:05.375Z + 0.7 + + + https://app.uniswap.org/nfts/collection/0x3af2a97414d1101e2107a70e7f33955da1346305 + 2025-01-24T22:24:05.375Z + 0.7 + + + https://app.uniswap.org/nfts/collection/0x5ab21ec0bfa0b29545230395e3adaca7d552c948 + 2025-01-24T22:24:05.375Z + 0.7 + + + https://app.uniswap.org/nfts/collection/0x617913dd43dbdf4236b85ec7bdf9adfd7e35b340 + 2025-01-24T22:24:05.375Z + 0.7 + + + https://app.uniswap.org/nfts/collection/0x3fe1a4c1481c8351e91b64d5c398b159de07cbc5 + 2025-01-24T22:24:05.375Z + 0.7 + + + https://app.uniswap.org/nfts/collection/0xd4e4078ca3495de5b1d4db434bebc5a986197782 + 2025-01-24T22:24:05.375Z + 0.7 + + + https://app.uniswap.org/nfts/collection/0x062e691c2054de82f28008a8ccc6d7a1c8ce060d + 2025-01-24T22:24:05.375Z 0.7 \ No newline at end of file diff --git a/apps/web/public/pools-sitemap.xml b/apps/web/public/pools-sitemap.xml index 0903b0778ae..672d757ec45 100644 --- a/apps/web/public/pools-sitemap.xml +++ b/apps/web/public/pools-sitemap.xml @@ -2,4357 +2,7647 @@ https://app.uniswap.org/explore/pools/ethereum/0xcbcdf9626bc03e24f779434178a73a0b4bad62ed - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x4e68ccd3e89f51c3074ca5072bbac773960dfa36 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x4585fe77225b41b697c938b018e2ac67ac5a20c0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc63b0708e2f7e69cb8a1df0e1389a98c35a76d52 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x99ac8ca7087fa4a2a1fb6357269965a2014abc35 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x11b815efb8f581194ae79006d24e0d814b7697f6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa6cc3c2531fdaa6ae1a3ca84c2855806728693e8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x5777d92f208679db4b9778590fa3cab3ac9e2168 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x1d42064fc4beb5f8aaf85f4617ae8b3b5b8bd801 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc2e9f25be6257c210d7adf0d4cd6e3e881ba25f8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x11950d141ecb863f01007add7d1a342041227b58 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc5c134a1f112efa96003f8559dba6fac0ba77692 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x109830a1aaad605bbf02a9dfa7b0b92ec2fb7daa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x1df4c6e36d61416813b42fe32724ef11e363eddc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x12d6867fa648d269835cf69b49f125147754b54d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x3416cf6c708da44db2624d63ea0aaef7113527c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xe8c6c9227491c0a8156a0106a0204d881bb7e531 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x04708077eca6bb527a5bbbd6358ffb043a9c1c14 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x9db9e0e53058c89e5b94e29621a205198648425b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xf239009a101b6b930a527deaab6961b6e7dec8a6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xfe0df74636bc25c7f2400f22fe7dae32d39443d2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xf4c5e0f4590b6679b3030d29a84857f226087fef - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x5764a6f2212d502bc5970f9f129ffcd61e5d7563 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa3f558aebaecaf0e11ca4b2199cc5ed341edfd74 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x99132b53ab44694eeb372e87bced3929e4ab8456 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x6c6bc977e13df9b0de53b251522280bb72383700 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x9d96880952b4c80a55099b9c258250f2cc5813ec - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x3afdc5e6dfc0b0a507a8e023c9dce2cafc310316 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x290a6a7460b308ee3f19023d2d00de604bcf5b42 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xac4b3dacb91461209ae9d41ec517c2b9cb1b7daf - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x60594a405d53811d3bc4766596efd80fd545a270 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x331399c614ca67dee86733e5a2fba40dbb16827c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x4b5ab61593a2401b1075b90c04cbcdd3f87ce011 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x844eb5c280f38c7462316aad3f338ef9bda62668 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xe936f0073549ad8b1fa53583600d629ba9375161 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x2f62f2b4c5fcd7570a709dec05d68ea19c82a9ec - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x381fe4eb128db1621647ca00965da3f9e09f4fac - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x97e7d56a0408570ba1a7852de36350f7713906ec - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xcd423f3ab39a11ff1d9208b7d37df56e902c932b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xe15e6583425700993bd08f51bf6e7b73cd5da91b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x69d91b94f0aaf8e8a2586909fa77a5c2c89818d5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xe42318ea3b998e8355a3da364eb9d48ec725eb45 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xad9ef19e289dcbc9ab27b83d2df53cdeff60f02d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x3b685307c8611afb2a9e83ebc8743dc20480716e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x7bea39867e4169dbe237d55c8242a8f2fcdcc387 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x7b1e5d984a43ee732de195628d20d05cfabc3cc7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x7858e59e0c01ea06df3af3d20ac7b0003275d4bf - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xae2a25cbdb19d0dc0dddd1d2f6b08a6e48c4a9a9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x21b8065d10f73ee2e260e5b47d3344d3ced7596e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x517f9dd285e75b599234f7221227339478d0fcc8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa43fe16908251ee70ef74718545e4fe6c5ccec9f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x0af81cd5d9c124b4859d65697a4cd10ee223746a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xca7c2771d248dcbe09eabe0ce57a62e18da178c0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x09d1d767edf8fa23a64c51fa559e0688e526812f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x7b73644935b8e68019ac6356c40661e1bc315860 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x180efc1349a69390ade25667487a826164c9c6e4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x9c4fe5ffd9a9fc5678cfbd93aa2d4fd684b67c4c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xbb2b8038a1640196fbe3e38816f3e67cba72d940 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x9ec9367b8c4dd45ec8e7b800b1f719251053ad60 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc91ef786fbf6d62858262c82c63de45085dea659 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x197d7010147df7b99e9025c724f13723b29313f8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x25647e01bd0967c1b9599fa3521939871d1d0888 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x2f0b1417aa42ebf0b4ca1154212847f6094d708d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x6ada49aeccf6e556bb7a35ef0119cc8ca795294a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x2a6c340bcbb0a79d3deecd3bc5cbc2605ea9259f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xda2d09fbbf8ee4b5051a0e9b562c5fcb4b393b18 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x48d20b3e529fb3dd7d91293f80638df582ab2daa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x4028daac072e492d34a3afdbef0ba7e35d8b55c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc2eab7d33d3cb97692ecb231a5d0e4a649cb539d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc5be99a02c6857f9eac67bbce58df5572498f40c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xe4b8583ccb95b25737c016ac88e539d0605949e8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x8dbee21e8586ee356130074aaa789c33159921ca - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x43de4318b6eb91a7cf37975dbb574396a7b5b5c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x9ff68f61ca5eb0c6606dc517a9d44001e564bb66 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa29fe6ef9592b5d408cca961d0fb9b1faf497d6d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x1b1137dd16faa651e38a9dfb5d9ffff7767fdf62 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x470e8de2ebaef52014a47cb5e6af86884947f08c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x8fb8e9921922d2ffb529a95d28a0d06d275d7a59 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xd3d2e2692501a5c9ca623199d38826e513033a17 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x97e1fcb93ae7267dbafad23f7b9afaa08264cfd8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa5e9c917b4b821e4e0a5bbefce078ab6540d6b5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x2cc846fff0b08fb3bffad71f53a60b4b6e6d6482 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x959873fb4fc11825fba83c80c4c632db1e936e15 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa7480aafa8ad2af3ce24ac6853f960ae6ac7f0c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc7e6b676bfc73ae40bcc4577f22aab1682c691c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x570febdf89c07f256c75686caca215289bb11cfc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x343fd171caf4f0287ae6b87d75a8964dc44516ab - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xcaa004418eb42cdf00cb057b7c9e28f0ffd840a5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xe3d3551bb608e7665472180a20280630d9e938aa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xb6b0c651c37ec4ca81c0a128420e02001a57fac2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x4e34da137f0b317c633838458e0c923a5e088752 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xfe9e7931e55c514c33d489c88582fa36e84bd8e3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x5281e311734869c64ca60ef047fd87759397efe6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x149148acc3b06b8cc73af3a10e84189243a35925 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x8ef79d6c328c25da633559c20c75f638a4863462 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x14af1804dbbf7d621ecc2901eef292a24a0260ea - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x80a9ae39310abf666a87c743d6ebbd0e8c42158e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc31e54c7a869b9fcbecc14363cf510d1c41fa443 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x2f5e87c9312fa29aed5c179e456625d79015299c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc6962004f452be9203591991d15f6b388e09e8d0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc6f780497a95e246eb9449f5e4770916dcd6396a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x641c00a822e8b671738d32a431a4fb6074e5c79d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x92c63d0e701caae670c9415d91c474f686298f00 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x1aeedd3727a6431b8f070c0afaa81cc74f273882 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xcda53b1f66614552f834ceef361a8d12a0b8dad8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x35218a1cbac5bbc3e57fd9bd38219d37571b3537 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x17c14d2c404d167802b16c450d3c99f88f2c4f4d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x468b88941e7cc0b88c1869d68ab6b570bcef62ff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xdbaeb7f0dfe3a0aafd798ccecb5b22e708f7852c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x149e36e72726e0bcea5c59d40df2c43f60f5a22d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xbaaf1fc002e31cb12b99e4119e5e350911ec575b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa67f72f21bd9f91db2da2d260590da5e6c437009 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x92fd143a8fa0c84e016c2765648b9733b0aa519e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x7cf803e8d82a50504180f417b8bc7a493c0a0503 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x81c48d31365e6b526f6bbadc5c9aafd822134863 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x446bf9748b4ea044dd759d9b9311c70491df8f29 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc82819f72a9e77e2c0c3a69b3196478f44303cf4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x50c7390dfdd3756139e6efb5a461c2eb7331ceb4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x1dfc1054e0e2a10e33c9ca21aad5aa8a1cce91e3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc91b7b39bbb2c733f0e7459348fd0c80259c8471 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x59d72ddb29da32847a4665d08ffc8464a7185fae - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x09ba302a3f5ad2bf8853266e271b005a5b3716fe - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa77d77c9773c35e910acc2e30cefe52b54a58414 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x8da66e470403b3d3eee66c67e2c61fda6e248ad1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x2f020e708811c054f146eebcc4d5a215fd4eec26 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x7e7fb3cceca5f2ac952edf221fd2a9f62e411980 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x68c685fd52a56f04665b491d491355a624540e85 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa8328bf492ba1b77ad6381b3f7567d942b000baf - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc0cf0f380ddb44dbcaf19a86d094c8bba3efa04a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa169d1ab5c948555954d38700a6cdaa7a4e0c3a0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x1862200e8e7ce1c0827b792d0f9546156f44f892 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x05bbaaa020ff6bea107a9a1e06d2feb7bfd79ed2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xd02a4969dc12bb889754361f8bcf3385ac1b2077 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc24f7d8e51a64dc1238880bd00bb961d54cbeb29 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x7c06736e41236fecd681dd3353aa77ecd19ea565 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc473e2aee3441bf9240be85eb122abb059a3b57c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x14353445c8329df76e6f15e9ead18fa2d45a8bb6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x2039f8c9cd32ba9cd2ea7e575d5b1abea93f7527 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xd3e11119d2680c963f1cdcffece0c4ade823fb58 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x8e295789c9465487074a65b1ae9ce0351172393f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x97bca422ec0ee4851f2110ea743c1cd0a14835a1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xbe3ad6a5669dc0b8b12febc03608860c31e2eef6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x56ebd63a756b94d3de9cea194896b4920b64fb01 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xe2ddd33585b441b9245085588169f35108f85a6e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x84436a2af97f37018db116ae8e1b691666db3d00 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x21b8065d10f73ee2e260e5b47d3344d3ced7596e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x517f9dd285e75b599234f7221227339478d0fcc8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa43fe16908251ee70ef74718545e4fe6c5ccec9f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x0af81cd5d9c124b4859d65697a4cd10ee223746a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xca7c2771d248dcbe09eabe0ce57a62e18da178c0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x09d1d767edf8fa23a64c51fa559e0688e526812f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x7b73644935b8e68019ac6356c40661e1bc315860 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x180efc1349a69390ade25667487a826164c9c6e4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x9c4fe5ffd9a9fc5678cfbd93aa2d4fd684b67c4c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xbb2b8038a1640196fbe3e38816f3e67cba72d940 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x9ec9367b8c4dd45ec8e7b800b1f719251053ad60 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc91ef786fbf6d62858262c82c63de45085dea659 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x197d7010147df7b99e9025c724f13723b29313f8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x25647e01bd0967c1b9599fa3521939871d1d0888 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x2f0b1417aa42ebf0b4ca1154212847f6094d708d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x6ada49aeccf6e556bb7a35ef0119cc8ca795294a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x2a6c340bcbb0a79d3deecd3bc5cbc2605ea9259f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xda2d09fbbf8ee4b5051a0e9b562c5fcb4b393b18 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x48d20b3e529fb3dd7d91293f80638df582ab2daa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x4028daac072e492d34a3afdbef0ba7e35d8b55c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc2eab7d33d3cb97692ecb231a5d0e4a649cb539d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc5be99a02c6857f9eac67bbce58df5572498f40c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xe4b8583ccb95b25737c016ac88e539d0605949e8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x8dbee21e8586ee356130074aaa789c33159921ca - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x43de4318b6eb91a7cf37975dbb574396a7b5b5c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x9ff68f61ca5eb0c6606dc517a9d44001e564bb66 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa29fe6ef9592b5d408cca961d0fb9b1faf497d6d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x1b1137dd16faa651e38a9dfb5d9ffff7767fdf62 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x470e8de2ebaef52014a47cb5e6af86884947f08c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x8fb8e9921922d2ffb529a95d28a0d06d275d7a59 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xd3d2e2692501a5c9ca623199d38826e513033a17 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x97e1fcb93ae7267dbafad23f7b9afaa08264cfd8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa5e9c917b4b821e4e0a5bbefce078ab6540d6b5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x2cc846fff0b08fb3bffad71f53a60b4b6e6d6482 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x959873fb4fc11825fba83c80c4c632db1e936e15 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa7480aafa8ad2af3ce24ac6853f960ae6ac7f0c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xc7e6b676bfc73ae40bcc4577f22aab1682c691c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x570febdf89c07f256c75686caca215289bb11cfc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x343fd171caf4f0287ae6b87d75a8964dc44516ab - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xcaa004418eb42cdf00cb057b7c9e28f0ffd840a5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xe3d3551bb608e7665472180a20280630d9e938aa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xb6b0c651c37ec4ca81c0a128420e02001a57fac2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x4e34da137f0b317c633838458e0c923a5e088752 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xfe9e7931e55c514c33d489c88582fa36e84bd8e3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x5281e311734869c64ca60ef047fd87759397efe6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x149148acc3b06b8cc73af3a10e84189243a35925 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x8ef79d6c328c25da633559c20c75f638a4863462 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x68f5c0a2de713a54991e01858fd27a3832401849 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x4533bad2dc588f0fadf8d2e72386d4cd6a19b519 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x85149247691df622eaf1a8bd0cafd40bc45154a9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x0392b358ce4547601befa962680bede836606ae2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x1c3140ab59d6caf9fa7459c6f83d4b52ba881d36 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xd1f1bad4c9e6c44dec1e9bf3b94902205c5cd6c3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x03af20bdaaffb4cc0a521796a223f7d85e2aac31 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x73b14a78a0d396c521f954532d43fd5ffe385216 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xac85eaf55e9c60ed40a683de7e549d23fdfbeb33 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x04f6c85a1b00f6d9b75f91fd23835974cc07e65c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x730691cdac3cbd4d41fc5eb9d8abbb0cea795b94 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x535541f1aa08416e69dc4d610131099fa2ae7222 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xfc1f3296458f9b2a27a0b91dd7681c4020e09d05 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x85c31ffa3706d1cce9d525a00f1c7d4a2911754c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xd52533a3309b393afebe3176620e8ccfb6159f8a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xff7fbdf7832ae524deda39ca402e03d92adff7a5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xb589969d38ce76d3d7aa319de7133bc9755fd840 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xf334f6104a179207ddacfb41fa3567feea8595c2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x1fb3cf6e48f1e7b10213e7b6d87d4c073c7fdb7b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xd4344ea0c5ade7e22b9b275f0bde7a145dec5a23 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x5b42a63d6741416ce9a7b9f4f16d8c9231ccddd4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x252cbdff917169775be2b552ec9f6781af95e7f6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x2ab22ac86b25bd448a4d9dc041bd2384655299c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xc858a329bf053be78d6239c4a4343b8fbd21472b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa73c628eaf6e283e26a7b1f8001cf186aa4c0e8e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xb533c12fb4e7b53b5524eab9b47d93ff6c7a456f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x2ae3d6096d8215ac2acddf30c60caa984ea5debe - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x19ea026886cbb7a900ecb2458636d72b5cae223b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x6f32061f59a21086c334d0d45f804089ce374aaf - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xfaf037caafa9620bfaebc04c298bf4a104963613 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xadb35413ec50e0afe41039eac8b930d313e94fa4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xe9e3893921de87b1194a8108f9d70c24bde71c27 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xf1f199342687a7d78bcc16fce79fa2665ef870e1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xf44acaa38be5e965c5ddf374e7a2ba270e580684 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x36e42931a765022790b797963e42c5522d6b585a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x5adba6c5589c50791dd65131df29677595c7efa7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x3249e3e3e4133ee18e65347daf586610cc265f54 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xca1b837c87c6563910c2befa48834fa2a8c3d72d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x6ef7b14bcd8d989cef8f8ec8ba4bf371b2ac95fd - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x37ffd11972128fd624337ebceb167c8c0a5115ff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xe62bd99a9501ca33d98913105fc2bec5bae6e5dd - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xb2ac2e5a3684411254d58b1c5a542212b782114d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xb0efaf46a1de55c54f333f93b1f0641e73bc16d0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xd0fa3b5264ccde31e8b094b86bca4a1e97d3c603 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xad4c666fc170b468b19988959eb931a3676f0e9f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x790fde1fd6d2568050061a88c375d5c2e06b140b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xaefc1edaede6adadcdf3bb344577d45a80b19582 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa8a5356ee5d02fe33d72355e4f698782f8f199e8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x55bc964fe3b0c8cc2d4c63d65f1be7aef9bb1a3c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x95d9d28606ee55de7667f0f176ebfc3215cfd9c0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x21b8065d10f73ee2e260e5b47d3344d3ced7596e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x517f9dd285e75b599234f7221227339478d0fcc8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa43fe16908251ee70ef74718545e4fe6c5ccec9f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x0af81cd5d9c124b4859d65697a4cd10ee223746a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xca7c2771d248dcbe09eabe0ce57a62e18da178c0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x09d1d767edf8fa23a64c51fa559e0688e526812f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x7b73644935b8e68019ac6356c40661e1bc315860 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x180efc1349a69390ade25667487a826164c9c6e4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x9c4fe5ffd9a9fc5678cfbd93aa2d4fd684b67c4c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xbb2b8038a1640196fbe3e38816f3e67cba72d940 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x9ec9367b8c4dd45ec8e7b800b1f719251053ad60 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xc91ef786fbf6d62858262c82c63de45085dea659 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x197d7010147df7b99e9025c724f13723b29313f8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x25647e01bd0967c1b9599fa3521939871d1d0888 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x2f0b1417aa42ebf0b4ca1154212847f6094d708d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x6ada49aeccf6e556bb7a35ef0119cc8ca795294a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x2a6c340bcbb0a79d3deecd3bc5cbc2605ea9259f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xda2d09fbbf8ee4b5051a0e9b562c5fcb4b393b18 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x48d20b3e529fb3dd7d91293f80638df582ab2daa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x4028daac072e492d34a3afdbef0ba7e35d8b55c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xc2eab7d33d3cb97692ecb231a5d0e4a649cb539d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xc5be99a02c6857f9eac67bbce58df5572498f40c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xe4b8583ccb95b25737c016ac88e539d0605949e8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x8dbee21e8586ee356130074aaa789c33159921ca - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x43de4318b6eb91a7cf37975dbb574396a7b5b5c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x9ff68f61ca5eb0c6606dc517a9d44001e564bb66 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa29fe6ef9592b5d408cca961d0fb9b1faf497d6d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x1b1137dd16faa651e38a9dfb5d9ffff7767fdf62 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x470e8de2ebaef52014a47cb5e6af86884947f08c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x8fb8e9921922d2ffb529a95d28a0d06d275d7a59 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xd3d2e2692501a5c9ca623199d38826e513033a17 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x97e1fcb93ae7267dbafad23f7b9afaa08264cfd8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa5e9c917b4b821e4e0a5bbefce078ab6540d6b5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x2cc846fff0b08fb3bffad71f53a60b4b6e6d6482 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x959873fb4fc11825fba83c80c4c632db1e936e15 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa7480aafa8ad2af3ce24ac6853f960ae6ac7f0c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xc7e6b676bfc73ae40bcc4577f22aab1682c691c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x570febdf89c07f256c75686caca215289bb11cfc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x343fd171caf4f0287ae6b87d75a8964dc44516ab - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xcaa004418eb42cdf00cb057b7c9e28f0ffd840a5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xe3d3551bb608e7665472180a20280630d9e938aa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xb6b0c651c37ec4ca81c0a128420e02001a57fac2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x4e34da137f0b317c633838458e0c923a5e088752 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xfe9e7931e55c514c33d489c88582fa36e84bd8e3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x5281e311734869c64ca60ef047fd87759397efe6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x149148acc3b06b8cc73af3a10e84189243a35925 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x8ef79d6c328c25da633559c20c75f638a4863462 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x45dda9cb7c25131df268515131f647d726f50608 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x50eaedb835021e4a108b7290636d62e9765cc6d7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x167384319b41f7094e62f7506409eb38079abff8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa374094527e1673a86de625aa59517c5de346d32 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x86f1d8390222a3691c28938ec7404a1661e618e0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xeda1094f59a4781456734e5d258b95e6be20b983 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x847b64f9d3a95e977d157866447a5c0a5dfa0ee5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x94ab9e4553ffb839431e37cc79ba8905f45bfbea - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x0e44ceb592acfc5d3f09d996302eb4c499ff8c10 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x1e5bd2ab4c308396c06c182e1b7e7ba8b2935b83 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x9b08288c3be4f62bbf8d1c20ac9c5e6f9467d8b7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xb6e57ed85c4c9dbfef2a68711e9d6f36c56e0fcb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x3e31ab7f37c048fc6574189135d108df80f0ea26 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xd36ec33c8bed5a9f7b6630855f1533455b98a418 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xdac8a8e6dbf8c690ec6815e0ff03491b2770255d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xfe343675878100b344802a6763fd373fdeed07a4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x0a28c2f5e0e8463e047c203f00f649812ae67e4f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x88f3c15523544835ff6c738ddb30995339ad57d6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x98b9162161164de1ed182a0dfa08f5fbf0f733ca - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xeef1a9507b3d505f0062f2be9453981255b503c8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc4c06c9a239f94fc0a1d3e04d23c159ebe8316f1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x849ec65748107aedc518dbc42961f358ea1361a7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2db87c4831b2fec2e35591221455834193b50d1b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa4d8c89f0c20efbe54cba9e7e7a7e509056228d9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x642f28a89fa9d0fa30e664f71804bfdd7341d21f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2aceda63b5e958c45bd27d916ba701bc1dc08f7a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x781067ef296e5c4a4203f81c593274824b7c185d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x4ccd010148379ea531d6c587cfdd60180196f9b1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xd866fac7db79994d08c0ca2221fee08935595b4b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x941061770214613ba0ca3db9a700c39587bb89b6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa9077cdb3d13f45b8b9d87c43e11bce0e73d8631 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa01f64fa1b923dd9c5c7618b39a6ba8098a88863 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa830ff28bb7a46570a7e43dc24a35a663b9cfc2e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x8837a61644d523cbe5216dde226f8f85e3aa9be3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xca5d44977d6de1846530eb434167b208752fba7d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x4d05f2a005e6f36633778416764e82d1d12e7fbb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x41e64a5bc929fa8e6a9c8d7e3b81a13b21ff3045 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x3ea34cfc9322273311f7843826a2581c4a00fd39 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x785061ed819414dc4269d2a5d5974069c0daea96 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x3f5228d0e7d75467366be7de2c31d0d098ba2c23 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2e3f22e9a1c2470b2e293351f48c99e1fd788f32 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2a08c38c7e1fa969325e2b64047abb085dec3756 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xe6c36eed27c2e8ecb9a233bf12da06c9730b5955 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xefa98fdf168f372e5e9e9b910fcdfd65856f3986 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x76fa081e510f43ac8335efdb4db88c9ff1894413 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc6832ef0af793336aa44a936e54b992bff47e7cd - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x865f456479a21e2b3d866561d7171a3d0a7b112d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xbd934a7778771a7e2d9bf80596002a214d8c9304 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x9ab9f658104467604b5afa9a3e1df62f35f7b208 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x6e430d59ba145c59b73a6db674fe3d53c1f31cae - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x21b8065d10f73ee2e260e5b47d3344d3ced7596e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x517f9dd285e75b599234f7221227339478d0fcc8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa43fe16908251ee70ef74718545e4fe6c5ccec9f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x0af81cd5d9c124b4859d65697a4cd10ee223746a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xca7c2771d248dcbe09eabe0ce57a62e18da178c0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x09d1d767edf8fa23a64c51fa559e0688e526812f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x7b73644935b8e68019ac6356c40661e1bc315860 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x180efc1349a69390ade25667487a826164c9c6e4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x9c4fe5ffd9a9fc5678cfbd93aa2d4fd684b67c4c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xbb2b8038a1640196fbe3e38816f3e67cba72d940 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x9ec9367b8c4dd45ec8e7b800b1f719251053ad60 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc91ef786fbf6d62858262c82c63de45085dea659 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x197d7010147df7b99e9025c724f13723b29313f8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x25647e01bd0967c1b9599fa3521939871d1d0888 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2f0b1417aa42ebf0b4ca1154212847f6094d708d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x6ada49aeccf6e556bb7a35ef0119cc8ca795294a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2a6c340bcbb0a79d3deecd3bc5cbc2605ea9259f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xda2d09fbbf8ee4b5051a0e9b562c5fcb4b393b18 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x48d20b3e529fb3dd7d91293f80638df582ab2daa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x4028daac072e492d34a3afdbef0ba7e35d8b55c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc2eab7d33d3cb97692ecb231a5d0e4a649cb539d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc5be99a02c6857f9eac67bbce58df5572498f40c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xe4b8583ccb95b25737c016ac88e539d0605949e8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x8dbee21e8586ee356130074aaa789c33159921ca - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x43de4318b6eb91a7cf37975dbb574396a7b5b5c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x9ff68f61ca5eb0c6606dc517a9d44001e564bb66 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa29fe6ef9592b5d408cca961d0fb9b1faf497d6d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x1b1137dd16faa651e38a9dfb5d9ffff7767fdf62 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x470e8de2ebaef52014a47cb5e6af86884947f08c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x8fb8e9921922d2ffb529a95d28a0d06d275d7a59 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xd3d2e2692501a5c9ca623199d38826e513033a17 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x97e1fcb93ae7267dbafad23f7b9afaa08264cfd8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa5e9c917b4b821e4e0a5bbefce078ab6540d6b5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2cc846fff0b08fb3bffad71f53a60b4b6e6d6482 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x959873fb4fc11825fba83c80c4c632db1e936e15 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa7480aafa8ad2af3ce24ac6853f960ae6ac7f0c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc7e6b676bfc73ae40bcc4577f22aab1682c691c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x570febdf89c07f256c75686caca215289bb11cfc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x343fd171caf4f0287ae6b87d75a8964dc44516ab - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xcaa004418eb42cdf00cb057b7c9e28f0ffd840a5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xe3d3551bb608e7665472180a20280630d9e938aa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xb6b0c651c37ec4ca81c0a128420e02001a57fac2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x4e34da137f0b317c633838458e0c923a5e088752 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xfe9e7931e55c514c33d489c88582fa36e84bd8e3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x5281e311734869c64ca60ef047fd87759397efe6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x149148acc3b06b8cc73af3a10e84189243a35925 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x8ef79d6c328c25da633559c20c75f638a4863462 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x9e37cb775a047ae99fc5a24dded834127c4180cd - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x48413707b70355597404018e7c603b261fcadf3f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xade9bcd4b968ee26bed102dd43a55f6a8c2416df - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xda679706ff21114ac9fac5198bff24543f357a16 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xba3f945812a83471d709bce9c3ca699a19fb46f7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xc9034c3e7f58003e6ae0c8438e7c8f4598d5acaa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x4c36388be6f416a29c8d8eee81c771ce6be14b18 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xa1b2457c0b627f97f6cc892946a382451e979014 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x4b0aaf3ebb163dd45f663b38b6d93f6093ebc2d3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xae2ce200bdb67c472030b31f602f0756c9aeb61c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x3bc5180d5439b500f381f9a46f15dd6608101671 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x5122e02898ece3bc62df8c1efdb29a9e914244d3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x24e1cbd6fed006ceed9af0dce688acc7951d57a9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x2556230ac694093d4d3b7b965a2f2d77d4c403a4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xdaca082c2c7d052a96fa83ea9d3a7b6839e39586 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xa555149210075702a734968f338d5e1cbd509354 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x10648ba41b8565907cfa1496765fa4d95390aa0d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x00bcec1526dae1e170a53017b8775a93b7810d7c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x20e068d76f9e90b90604500b84c7e19dcb923e7e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x6b93950a9b589bc32b82a5df4e5148f98a7fae27 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xd9caa6dbe6791fcb7fc9fb59d1a6b3dd8c1c2339 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x62e81e93136ac42a1ada48d4098f5f9e703e7455 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x84206d33845c9d811438b6fe4e7a0c634748dc50 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xd0b53d9277642d899df5c87a3966a349a798f224 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xcfa7c4bb565915f1c4f9475e2a0536d31efad776 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xa7de21f28ca460b45373b217cd4eb111c3faeff8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xb64dff20dd5c47e6dbb56ead80d23568006dec1e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xad4e969f4193878e5cc89cefb57faf6c7c0048da - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xdf5eb97e3e23ca7f5a5fd2264680377c211310ba - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xf16baaae8eb7b37f4280e72924479f69e7a61f32 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xe745a591970e0fa981204cf525e170a2b9e4fb93 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x64b74c66b9ba60ca668b781289767ae7298f37ae - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x17e1ebd791e7253a5e606fd94c5b66c14d873136 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x46715bd57b9ec01deadb35fe096fb44acda79414 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x3447accd4b8e735329d1065244aad2ed630f0122 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x2feb7f3ffc243f7de94d5ea5975533d301584e07 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x0d5959a52e7004b601f0be70618d01ac3cdce976 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x2170ca774e48a3f51559917ada6f9d7ae8f7bfea - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x62a76dfa8951aefcff787e790782db3633ebf422 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x8073679e0b3b2d1d665777cf1b2b5b1c2d3d2d0c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x143f1a6f3fb32e6ab3f22d3cc6b417b5c2197599 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x82ad659c2f152aad59bb37cbc5e7663a2de0c607 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xa4efe9e8e2a2d5a2ac46805f233b8e49d0e11955 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xfcc89a1f250d76de198767d33e1ca9138a7fb54b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x2faa2b42b782d578a160f61bb7cd763a17476730 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xdd44c0e83c2570062d1e6fdd440b4724862e8f31 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xe3930a14641786e123e7bbe842d701fa1cbfe2df - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x6d03360ce4764e862ed81660c1f76cc2711b14b6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xc055f66f228105072315247785c00299d0ce27e8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xcae1d141ab11cef0a415cf0440025e1e5e962e06 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x21b8065d10f73ee2e260e5b47d3344d3ced7596e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x517f9dd285e75b599234f7221227339478d0fcc8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xa43fe16908251ee70ef74718545e4fe6c5ccec9f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x0af81cd5d9c124b4859d65697a4cd10ee223746a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xca7c2771d248dcbe09eabe0ce57a62e18da178c0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x09d1d767edf8fa23a64c51fa559e0688e526812f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x7b73644935b8e68019ac6356c40661e1bc315860 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x180efc1349a69390ade25667487a826164c9c6e4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x9c4fe5ffd9a9fc5678cfbd93aa2d4fd684b67c4c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xbb2b8038a1640196fbe3e38816f3e67cba72d940 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x9ec9367b8c4dd45ec8e7b800b1f719251053ad60 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xc91ef786fbf6d62858262c82c63de45085dea659 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x197d7010147df7b99e9025c724f13723b29313f8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x25647e01bd0967c1b9599fa3521939871d1d0888 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x2f0b1417aa42ebf0b4ca1154212847f6094d708d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x6ada49aeccf6e556bb7a35ef0119cc8ca795294a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x2a6c340bcbb0a79d3deecd3bc5cbc2605ea9259f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xda2d09fbbf8ee4b5051a0e9b562c5fcb4b393b18 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x48d20b3e529fb3dd7d91293f80638df582ab2daa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x4028daac072e492d34a3afdbef0ba7e35d8b55c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xc2eab7d33d3cb97692ecb231a5d0e4a649cb539d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xc5be99a02c6857f9eac67bbce58df5572498f40c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xe4b8583ccb95b25737c016ac88e539d0605949e8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x8dbee21e8586ee356130074aaa789c33159921ca - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x43de4318b6eb91a7cf37975dbb574396a7b5b5c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x9ff68f61ca5eb0c6606dc517a9d44001e564bb66 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xa29fe6ef9592b5d408cca961d0fb9b1faf497d6d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x1b1137dd16faa651e38a9dfb5d9ffff7767fdf62 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x470e8de2ebaef52014a47cb5e6af86884947f08c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x8fb8e9921922d2ffb529a95d28a0d06d275d7a59 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xd3d2e2692501a5c9ca623199d38826e513033a17 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x97e1fcb93ae7267dbafad23f7b9afaa08264cfd8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xa5e9c917b4b821e4e0a5bbefce078ab6540d6b5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x2cc846fff0b08fb3bffad71f53a60b4b6e6d6482 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x959873fb4fc11825fba83c80c4c632db1e936e15 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xa7480aafa8ad2af3ce24ac6853f960ae6ac7f0c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xc7e6b676bfc73ae40bcc4577f22aab1682c691c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x570febdf89c07f256c75686caca215289bb11cfc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x343fd171caf4f0287ae6b87d75a8964dc44516ab - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xcaa004418eb42cdf00cb057b7c9e28f0ffd840a5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xe3d3551bb608e7665472180a20280630d9e938aa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xb6b0c651c37ec4ca81c0a128420e02001a57fac2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x4e34da137f0b317c633838458e0c923a5e088752 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xfe9e7931e55c514c33d489c88582fa36e84bd8e3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x5281e311734869c64ca60ef047fd87759397efe6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x149148acc3b06b8cc73af3a10e84189243a35925 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x8ef79d6c328c25da633559c20c75f638a4863462 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x0f338ec12d3f7c3d77a4b9fcc1f95f3fb6ad0ea6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x4eaa90264d6a3567228dcb5cfc242200da586437 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x6fe9e9de56356f7edbfcbb29fab7cd69471a4869 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xf420603317a0996a3fce1b1a80993eaef6f7ae1a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x47a90a2d92a8367a91efa1906bfc8c1e05bf10c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x41bf5eeae051fbd2e97b76b5f8f0fdcc1a1e526b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x28df0835942396b7a1b7ae1cd068728e6ddbbafd - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa3f3664a52f01b42557524bd14556e379daf5669 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x1fd22fa7274bafebdfb1881321709f1219744829 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xe39cfc1a2e51a09ecbd060a24ee4eef5a97697bb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x06396509195eb9e07c38a016694dc9ff535b128a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x5a1c486edefda2f09d3b349fadc38524f1743826 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x5bf1cf153c102a79d9e18b7fb7c79ba57fa70d0c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x2c3c320d49019d4f9a92352e947c7e5acfe47d68 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x4141325bac36affe9db165e854982230a14e6d48 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x17507bef4c3abc1bc715be723ee1baf571256e05 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x8149b92ea743cc382aada523b68b8834733b9015 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xc98f01bf2141e1140ef8f8cad99d4b021d10718f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x7f9d307973cdabe42769d9712df8ee1cc1a28d10 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x5c87da28a45e5089b762dcbbd86f743d14c54317 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x2cd97604ef77bbcb1fa0cff47545dff8ec7def08 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x7862d9b4be2156b15d54f41ee4ede2d5b0b455e4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x554548b404213c7efcdbab933f52edfe3c581834 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x63008c5ea4e47f5421e0e1428b1c5043a507d0d0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x0350ca994791c4b07a5b02b08aaf9d6fc8ab510e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x32776ed4d96ed069a2d812773f0ad8ad9ef83cf8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x84f3ca9b7a1579ff74059bd0e8929424d3fa330e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x5289a8dbf7029ee0b0498a84777ed3941d9acfec - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xb2bc284ab4c953b7f7a06d59c0ceb2de26405f22 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x508acf810857fefa86281499068ad5d19ebce325 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xccdfcd1aac447d5b29980f64b831c532a6a33726 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x4fb87838a29b37598099ef5aa6b3fbeeef987c50 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x515e94dc736b9d8b7d28ecf1cece0aba3d75da97 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xfd6e5b7c30538dff2752058e425ad01a56b831cc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xcb99fe720124129520f7a09ca3cbef78d58ed934 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xd2f21358c1549be193537b2a4c5dc7f0228ae011 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x93094ed1c907e4bca7eb041cb659da94f7e1b58e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xd37e6ecb991d1a0e7610c89666817665713362a7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x73234630bd159384c8d43f145407312d64614f43 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xad1ddf00c4ae50573e4dc98e6c5ee93baa04a0c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa765593c821f7df9ad81119509a37961e7ffa6c5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x9b501a7ad3087d603ceb34424b7b2a6c348ad0b7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xafebb7cfa1a15fcac4121b609b456cbce3137c20 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x0adaf134ae0c4583b3a38fc3168a83e33162651e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xf9878a5dd55edc120fde01893ea713a4f032229c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x84e47c7f2fe86f6b5efbe14fee46b8bb871b2e05 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xf3e5bec78654049990965f666b0612e116b94fb2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x33e59edd3214e97cb68450c6d3d6c167de072aba - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x2ca76c7e466e560e0cb11a91269bb953e41254bc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xbb124e35ab9e85f8d59ba83500e559dc052b9368 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x21b8065d10f73ee2e260e5b47d3344d3ced7596e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x517f9dd285e75b599234f7221227339478d0fcc8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa43fe16908251ee70ef74718545e4fe6c5ccec9f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x0af81cd5d9c124b4859d65697a4cd10ee223746a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xca7c2771d248dcbe09eabe0ce57a62e18da178c0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x09d1d767edf8fa23a64c51fa559e0688e526812f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x7b73644935b8e68019ac6356c40661e1bc315860 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x180efc1349a69390ade25667487a826164c9c6e4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x9c4fe5ffd9a9fc5678cfbd93aa2d4fd684b67c4c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xbb2b8038a1640196fbe3e38816f3e67cba72d940 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x9ec9367b8c4dd45ec8e7b800b1f719251053ad60 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xc91ef786fbf6d62858262c82c63de45085dea659 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x197d7010147df7b99e9025c724f13723b29313f8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x25647e01bd0967c1b9599fa3521939871d1d0888 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x2f0b1417aa42ebf0b4ca1154212847f6094d708d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x6ada49aeccf6e556bb7a35ef0119cc8ca795294a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x2a6c340bcbb0a79d3deecd3bc5cbc2605ea9259f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xda2d09fbbf8ee4b5051a0e9b562c5fcb4b393b18 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x48d20b3e529fb3dd7d91293f80638df582ab2daa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x4028daac072e492d34a3afdbef0ba7e35d8b55c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xc2eab7d33d3cb97692ecb231a5d0e4a649cb539d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xc5be99a02c6857f9eac67bbce58df5572498f40c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xe4b8583ccb95b25737c016ac88e539d0605949e8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x8dbee21e8586ee356130074aaa789c33159921ca - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x43de4318b6eb91a7cf37975dbb574396a7b5b5c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x9ff68f61ca5eb0c6606dc517a9d44001e564bb66 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa29fe6ef9592b5d408cca961d0fb9b1faf497d6d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x1b1137dd16faa651e38a9dfb5d9ffff7767fdf62 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x470e8de2ebaef52014a47cb5e6af86884947f08c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x8fb8e9921922d2ffb529a95d28a0d06d275d7a59 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xd3d2e2692501a5c9ca623199d38826e513033a17 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x97e1fcb93ae7267dbafad23f7b9afaa08264cfd8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa5e9c917b4b821e4e0a5bbefce078ab6540d6b5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x2cc846fff0b08fb3bffad71f53a60b4b6e6d6482 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x959873fb4fc11825fba83c80c4c632db1e936e15 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa7480aafa8ad2af3ce24ac6853f960ae6ac7f0c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xc7e6b676bfc73ae40bcc4577f22aab1682c691c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x570febdf89c07f256c75686caca215289bb11cfc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x343fd171caf4f0287ae6b87d75a8964dc44516ab - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xcaa004418eb42cdf00cb057b7c9e28f0ffd840a5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xe3d3551bb608e7665472180a20280630d9e938aa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xb6b0c651c37ec4ca81c0a128420e02001a57fac2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x4e34da137f0b317c633838458e0c923a5e088752 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xfe9e7931e55c514c33d489c88582fa36e84bd8e3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x5281e311734869c64ca60ef047fd87759397efe6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x149148acc3b06b8cc73af3a10e84189243a35925 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x8ef79d6c328c25da633559c20c75f638a4863462 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xd88d5f9e6c10e6febc9296a454f6c2589b1e8fae - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xb90fe7da36ac89448e6dfd7f2bb1e90a66659977 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xbd6313d0796984c578cae6bc5b5e23b27c5540c5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x1f18cd7d1c7ba0dbe3d9abe0d3ec84ce1ad10066 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x7da99753ff017f1b7afb2c8c0542718dc9f15f21 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x079e7a44f42e9cd2442c3b9536244be634e8f888 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x1c8dafd358d308b880f71edb5170b010b106ca60 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xbd0f6f34baa3c1329448a69bab90111a20756f01 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x3420720e561f3082f1e514a4545f0f2e0c955a5d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xea3fb6e3313a2a90757e4ca3d6749efd0107b0b6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xf130f72f8190f662522774c3367e6e8814f5e219 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x4a46c053bd5c10a959aea258228217b9d3405f3d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xb83258bf5940c98abf54f26c5a02710bd6b83b2c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x6a209c5329f0a225fa1890d4177823c096016f34 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xdb24905b1b080f65dedb0ad978aad5c76363d3c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xddff2cdad11898b901a661e32e9fa010780263a0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x72dd8fe09b5b493012e5816068dfc6fb26a2a9e6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x54fc722a66abfb6500a36d8b7b2646129d0e836a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x53b612b32233c80ec439a64325a29766ce95be7f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xe5edcbe72d1bc223097a1bed1fe6c0e404b4290c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xb928c37b8bd9754d321dc3d3c6ef374d332fe761 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x2d70cbabf4d8e61d5317b62cbe912935fd94e0fe - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x953e2937f0515c43ca7995e80c84aedcbbb9385e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x84394d80830ae963b599ded7d9149b90059f182f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa1777e082fa1746eb78dd9c1fbb515419cf6e538 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x112466c8b6e5abe42c78c47eb1b9d40baa3f943c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x9491d57c5687ab75726423b55ac2d87d1cda2c3f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x978799f1845c00c9a4d9fd2629b9ce18df66e488 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xdc55d1fd1c04e005051a40bd59c5f95623257bc5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x34757893070b0fc5de37aaf2844255ff90f7f1e0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x7faf167615419228f3f7d71d52d840dab154913c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa4d7b6a50dd4c55334ca6f175dbc6561f269d264 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x0ed413cefde954d8e5c54d981d7d182b587e98e3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x524375d0c6a04439128428f400b00eae81a2e9e4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x4b7a4530d56ff55a4dce089d917ede812e543307 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x84bb5b9bf1b6782c87cfa3e396f2f571c8e49646 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x723292eea7e1576ae482a5c317934054c0199e24 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x9b42940e8184d866aac6595a91f8d8952a59d3b9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x37622453c614f625d288151101ffe48fd222ced1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x4a94130b9e8eb0a0959c2c0f1ee9583213773fd9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x51514b3dc24afc1db95586242b99f0063bea17c5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xc130254e9196d48bbd9f91240390a6e8203132e9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x60ac25da2ada3be14a2a8c04e45b072bed965966 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x4e392a3883a84225260ff857318517eb50e5d128 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xca0aa06385a42242fe9523cd7015f6d01cd8f6b2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x3e448c17043ce1481bbe53c0fd19481bad8b98a6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x81060e6bf2a683f208b8799a33c7c09830cabed1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x463fe9f646b61ccfb43a022bf947075411cd71c7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x21b8065d10f73ee2e260e5b47d3344d3ced7596e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x517f9dd285e75b599234f7221227339478d0fcc8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa43fe16908251ee70ef74718545e4fe6c5ccec9f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x0af81cd5d9c124b4859d65697a4cd10ee223746a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xca7c2771d248dcbe09eabe0ce57a62e18da178c0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x09d1d767edf8fa23a64c51fa559e0688e526812f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x7b73644935b8e68019ac6356c40661e1bc315860 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x180efc1349a69390ade25667487a826164c9c6e4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x9c4fe5ffd9a9fc5678cfbd93aa2d4fd684b67c4c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xbb2b8038a1640196fbe3e38816f3e67cba72d940 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x9ec9367b8c4dd45ec8e7b800b1f719251053ad60 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xc91ef786fbf6d62858262c82c63de45085dea659 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x197d7010147df7b99e9025c724f13723b29313f8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x25647e01bd0967c1b9599fa3521939871d1d0888 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x2f0b1417aa42ebf0b4ca1154212847f6094d708d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x6ada49aeccf6e556bb7a35ef0119cc8ca795294a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x2a6c340bcbb0a79d3deecd3bc5cbc2605ea9259f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xda2d09fbbf8ee4b5051a0e9b562c5fcb4b393b18 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x48d20b3e529fb3dd7d91293f80638df582ab2daa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x4028daac072e492d34a3afdbef0ba7e35d8b55c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xc2eab7d33d3cb97692ecb231a5d0e4a649cb539d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xc5be99a02c6857f9eac67bbce58df5572498f40c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xe4b8583ccb95b25737c016ac88e539d0605949e8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x8dbee21e8586ee356130074aaa789c33159921ca - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x43de4318b6eb91a7cf37975dbb574396a7b5b5c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x9ff68f61ca5eb0c6606dc517a9d44001e564bb66 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa29fe6ef9592b5d408cca961d0fb9b1faf497d6d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x1b1137dd16faa651e38a9dfb5d9ffff7767fdf62 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x470e8de2ebaef52014a47cb5e6af86884947f08c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x8fb8e9921922d2ffb529a95d28a0d06d275d7a59 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xd3d2e2692501a5c9ca623199d38826e513033a17 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x97e1fcb93ae7267dbafad23f7b9afaa08264cfd8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa5e9c917b4b821e4e0a5bbefce078ab6540d6b5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x2cc846fff0b08fb3bffad71f53a60b4b6e6d6482 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x959873fb4fc11825fba83c80c4c632db1e936e15 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa7480aafa8ad2af3ce24ac6853f960ae6ac7f0c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xc7e6b676bfc73ae40bcc4577f22aab1682c691c6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x570febdf89c07f256c75686caca215289bb11cfc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x343fd171caf4f0287ae6b87d75a8964dc44516ab - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xcaa004418eb42cdf00cb057b7c9e28f0ffd840a5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xe3d3551bb608e7665472180a20280630d9e938aa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xb6b0c651c37ec4ca81c0a128420e02001a57fac2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x4e34da137f0b317c633838458e0c923a5e088752 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xfe9e7931e55c514c33d489c88582fa36e84bd8e3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x5281e311734869c64ca60ef047fd87759397efe6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x149148acc3b06b8cc73af3a10e84189243a35925 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x8ef79d6c328c25da633559c20c75f638a4863462 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x0f23d49bc92ec52ff591d091b3e16c937034496e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x0f23d49bc92ec52ff591d091b3e16c937034496e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xbf16ef186e715668aa29cef57e2fd7f9d48adfe6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x0f23d49bc92ec52ff591d091b3e16c937034496e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x5645dcb64c059aa11212707fbf4e7f984440a8cf - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x0f23d49bc92ec52ff591d091b3e16c937034496e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x3ad4913fa896391c9822a81d8d869cc0d783bdd7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x0f23d49bc92ec52ff591d091b3e16c937034496e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x0f23d49bc92ec52ff591d091b3e16c937034496e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x0f23d49bc92ec52ff591d091b3e16c937034496e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x7a415b19932c0105c82fdb6b720bb01b0cc2cae3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x9b3423373e6e786c9ac367120533abe4ee398373 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x4a25dbdf9629b1782c3e2c7de3bdce41f1c7f801 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xbe80225f09645f172b079394312220637c440a63 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x059615ebf32c946aaab3d44491f78e4f8e97e1d3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x435664008f38b0650fbc1c9fc971d0a3bc2f1e47 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x4b62fa30fea125e43780dc425c2be5acb4ba743b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xc3db44adc1fcdfd5671f555236eae49f4a8eea18 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xddd23787a6b80a794d952f5fb036d0b31a8e6aff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xa86aca6d7c393c06dcdc30473ea3d1b05c358dff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x1ffec7119e315b15852557f654ae0052f76e6ae1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x0f027d40c80d8f70f77d3884776531f80b21d20e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x69c66beafb06674db41b22cfc50c34a93b8d82a2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xeedff72a683058f8ff531e8c98575f920430fdc5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x811cfb75567a252bea23474e2ccd1286927bfe0a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x2caccf71bdf8fff97c06a46eca29b611b1a74b5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0xf07a84f0732dfe8eea0d3961bcd8f62c761ff508 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/ethereum/0x8c1c499b1796d7f3c2521ac37186b52de024e58c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xe5cf22ee4988d54141b77050967e1052bd9c7f7a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x7f580f8a02b759c350e6b8340e7c2d4b8162b6a9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x48b0ab72c2591849e678e7d6f272b75ef9b863f7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x74d0ae8b8e1fca6039707564704a25ad2ee036b0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x5969efdde3cf5c0d9a88ae51e47d721096a97203 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xe32efff8f8b5fdc53803405aa3f623f03f8a8767 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xe8629b6a488f366d27dad801d1b5b445199e2ada - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x066b28f0c160935cf285f75ed600967bf8417035 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xddd23787a6b80a794d952f5fb036d0b31a8e6aff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xa86aca6d7c393c06dcdc30473ea3d1b05c358dff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x1ffec7119e315b15852557f654ae0052f76e6ae1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x0f027d40c80d8f70f77d3884776531f80b21d20e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x69c66beafb06674db41b22cfc50c34a93b8d82a2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xeedff72a683058f8ff531e8c98575f920430fdc5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x811cfb75567a252bea23474e2ccd1286927bfe0a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x2caccf71bdf8fff97c06a46eca29b611b1a74b5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0xf07a84f0732dfe8eea0d3961bcd8f62c761ff508 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/arbitrum/0x8c1c499b1796d7f3c2521ac37186b52de024e58c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x146b020399769339509c98b7b353d19130c150ec - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xd28f71e383e93c570d3edfe82ebbceb35ec6c412 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xadab76dd2dca7ae080a796f0ce86170e482afb4a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x0fb07e6d6e1f52c839608e1436d2ea810cf07257 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xddd23787a6b80a794d952f5fb036d0b31a8e6aff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xa86aca6d7c393c06dcdc30473ea3d1b05c358dff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x1ffec7119e315b15852557f654ae0052f76e6ae1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x0f027d40c80d8f70f77d3884776531f80b21d20e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x69c66beafb06674db41b22cfc50c34a93b8d82a2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xeedff72a683058f8ff531e8c98575f920430fdc5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x811cfb75567a252bea23474e2ccd1286927bfe0a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x2caccf71bdf8fff97c06a46eca29b611b1a74b5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0xf07a84f0732dfe8eea0d3961bcd8f62c761ff508 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/optimism/0x8c1c499b1796d7f3c2521ac37186b52de024e58c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x95d2483d2a0fff034004f91c53d649623d993896 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x19c5505638383337d2972ce68b493ad78e315147 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc143161ed3ed8049bb63d8da42907c08a10e2269 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xc3286373599dd5af2a17a572ebb7561f05f88bec - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xbb98b3d2b18aef63a3178023a920971cf5f29be4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x647fb01a63de9a551b39c7915693b25e6bcec502 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa90c1c009dc8292bd04ced30f9b53a5ff7a806a0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xddd23787a6b80a794d952f5fb036d0b31a8e6aff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xa86aca6d7c393c06dcdc30473ea3d1b05c358dff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x1ffec7119e315b15852557f654ae0052f76e6ae1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x0f027d40c80d8f70f77d3884776531f80b21d20e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x69c66beafb06674db41b22cfc50c34a93b8d82a2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xeedff72a683058f8ff531e8c98575f920430fdc5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x811cfb75567a252bea23474e2ccd1286927bfe0a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x2caccf71bdf8fff97c06a46eca29b611b1a74b5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0xf07a84f0732dfe8eea0d3961bcd8f62c761ff508 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/polygon/0x8c1c499b1796d7f3c2521ac37186b52de024e58c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xfb765ff72a14735550f1d798a5efd1311f2ddee7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x3537f2a5f99f08f59eb1417073db1fadbebf0c74 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xde8ed0277ee0e84c25756a73ffa7374e4aeadf46 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xd8f3a72d2b2220a5067abe8c38aea57dc2d69a5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x7ec18abf80e865c6799069df91073335935c4185 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x14b1911dd6b451c2771661ae8cd70637d726c356 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x9ae8084c21752971d867597c07f2673765d949a1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xcfaf75a3d292c3535ea3acdb16ed2ee58c2bb091 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x8055e6de251e414e8393b20adab096afb3cf8399 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xffec10fe1355c2d8df4f62affcdeffdb04f06569 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xc16454420f100b2e771d8bc4c5b6200068129a34 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x046f405e4ae1d0e786eda4959adadbd417d13ad8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xeccb34691c06c1c9c31ceb2228b22cbd242b5879 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xe22a2dfaaaaec8a7b2b7acb4909eaaa5c5bd6e64 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xe2dda0911e227e73d9fd94745b851c8bc6504610 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x0f082a7870908f8cebbb2cd27a42a9225c19f898 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x69d667281778db0c3bc8177efea3a91ee95c3068 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x30d61bb28a6789f9f49d8c7fb198d63b6aba4b61 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x090f3fd9110621df127c3f9be5c6f58c02f2d5eb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xd56f086e7b796b313d49f2bc926fac4bdd2a2b0b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x7eb847a214192aab8fa1b503f4d4c9ddd2a08db6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x81b3bc0ef974c16d71b8614adb8c22ccc045da01 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xc9b44ca4159dbaf5722a3dc8618e9d4b5f39d5b2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xbeef35a63fc62a3334630d9d3b4db27093d95317 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x3d5d143381916280ff91407febeb52f2b60f33cf - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x68c9325cc268df8b9ed4a06429587f28471b5f84 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xa00cc1fb7ac185222294777c6b23a13c013f07ce - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x77021e63bcbd3c5296b0cdd8a3c3770fb0ea8fa2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xcc28456d4ff980cee3457ca809a257e52cd9cdb0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xec0b7e8e44c9d60efd67a89dba1d4a6e02a7a4a0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x0c8fed5dd65542ca5f0add1acab14c2e470c9110 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xd56da2b74ba826f19015e6b7dd9dae1903e85da1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x5482c2b11951bbb92b87858242e17abde802b398 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xd95bae63641d822dc591bd4aca7a64e53eac76f9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x06959273e9a65433de71f5a452d529544e07ddd0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x24bf2ee2e09477082d1ddf2f0603baa460b3f5f3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x56d8f846415e08c5e663d89505e79f522d33f947 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x548e923281f372d28a40287d3a2d30dce482fc66 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x9d744d3d905897608d24c1b8c1c7db0d30c36cd4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xddd23787a6b80a794d952f5fb036d0b31a8e6aff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xa86aca6d7c393c06dcdc30473ea3d1b05c358dff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x1ffec7119e315b15852557f654ae0052f76e6ae1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x0f027d40c80d8f70f77d3884776531f80b21d20e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x69c66beafb06674db41b22cfc50c34a93b8d82a2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xeedff72a683058f8ff531e8c98575f920430fdc5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x811cfb75567a252bea23474e2ccd1286927bfe0a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x2caccf71bdf8fff97c06a46eca29b611b1a74b5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0xf07a84f0732dfe8eea0d3961bcd8f62c761ff508 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/base/0x8c1c499b1796d7f3c2521ac37186b52de024e58c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xab46d39cb398fb3649ecba781180016fef75f50b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x25048028ad87484b7fce99bc4e22dcb6c3307470 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xdb2177fee5b0ebdc7b8038cb70f3964bb6d14143 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x42d749f736051d8933b118324cded52d1f92bec1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xb1a1b707b143b911c36e1a0f4f901c5017791aca - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x3319a81a316abd4c086f7048904e31ff86648b38 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x4a978a2d4fb7393063babfb0cee741b8bcd4dd4b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xea403e36fb592fdfdc342c38e94284ddbb0d2105 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xe3fb01794d6912f0773171e32e723471ee8df061 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x916d7f23ccbb1d10118dcfc6ad5a10b6446ff73e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xddd23787a6b80a794d952f5fb036d0b31a8e6aff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xa86aca6d7c393c06dcdc30473ea3d1b05c358dff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x1ffec7119e315b15852557f654ae0052f76e6ae1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x0f027d40c80d8f70f77d3884776531f80b21d20e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x69c66beafb06674db41b22cfc50c34a93b8d82a2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xeedff72a683058f8ff531e8c98575f920430fdc5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x811cfb75567a252bea23474e2ccd1286927bfe0a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x2caccf71bdf8fff97c06a46eca29b611b1a74b5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0xf07a84f0732dfe8eea0d3961bcd8f62c761ff508 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/bnb/0x8c1c499b1796d7f3c2521ac37186b52de024e58c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x6cde5f5a192fbf3fd84df983aa6dc30dbd9f8fac - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xd80d28850bebe6208433c298334392bc940b4fc7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x7f7c4335ccac291ddedcef4429a626c442b627ed - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x628cb3a5a206956423d158009612813b64b19dab - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x116361f4f45e310347b43cd098fdfa459760ea7f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x5dc631ad6c26bea1a59fbf2c2680cf3df43d249f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x1a810e0b6c2dd5629afa2f0c898b9512c6f78846 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xac1cb6d3d419da9ead0b53e62d6fb4bb53473523 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x0115d04a88990889471a88e85817aac9e961c07b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xd3409b7f3f54bb097433d0f4cd31c48ac33e569b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x493bfc1adb2e60805693197f23132350ffd2a04e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xcf4f103759770c21f945413781ca787620316988 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xb135ebde27d366b0d62e579bae4118cb991b820e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xecbc2f008c20729b9239317408367377c5473812 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x96e0c440d3377c2dfe4f2a82add0b045e46cbe64 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x6f5304c22ac77e228e8af4732ac6677c46e09030 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xcb037f27eb3952222810966e28e0ceb650c65cd9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xddd23787a6b80a794d952f5fb036d0b31a8e6aff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xa86aca6d7c393c06dcdc30473ea3d1b05c358dff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x1ffec7119e315b15852557f654ae0052f76e6ae1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x0f027d40c80d8f70f77d3884776531f80b21d20e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x69c66beafb06674db41b22cfc50c34a93b8d82a2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xeedff72a683058f8ff531e8c98575f920430fdc5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x811cfb75567a252bea23474e2ccd1286927bfe0a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x2caccf71bdf8fff97c06a46eca29b611b1a74b5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0xf07a84f0732dfe8eea0d3961bcd8f62c761ff508 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/pools/celo/0x8c1c499b1796d7f3c2521ac37186b52de024e58c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x7baece5d47f1bc5e1953fbe0e9931d54dab6d810 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x83abecf7204d5afc1bea5df734f085f2535a9976 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x4eefe02fce5b53ca33c7717bbd8ad3c9cb0609f1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xaf996125e98b5804c00ffdb4f7ff386307c99a00 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x7924a818013f39cf800f5589ff1f1f0def54f31f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xb2eb5849e2606f99fc492e9add0103c667f806d3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x53c6ca2597711ca7a73b6921faf4031eedf71339 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x4eefe02fce5b53ca33c7717bbd8ad3c9cb0609f1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xaf996125e98b5804c00ffdb4f7ff386307c99a00 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x7924a818013f39cf800f5589ff1f1f0def54f31f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xd35937ecd47b04a1474f8569f457fc5ac395921a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x4eefe02fce5b53ca33c7717bbd8ad3c9cb0609f1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xaf996125e98b5804c00ffdb4f7ff386307c99a00 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x7924a818013f39cf800f5589ff1f1f0def54f31f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x6b75f2189f0e11c52e814e09e280eb1a9a8a094a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xb372b5abdb7c2ab8ad9e614be9835a42d0009153 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xf369277650ad6654f25412ea8bfbd5942733babc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x4eefe02fce5b53ca33c7717bbd8ad3c9cb0609f1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xaf996125e98b5804c00ffdb4f7ff386307c99a00 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x7924a818013f39cf800f5589ff1f1f0def54f31f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x4898cf312fbff8814cab80a8d7f6ee5ad0dc73fb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x5e78afc6c804d4382bede3a0712d210e657e9b4f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x86b211ca7915a0c8d4659dd98242d9e801d88ab4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xb637f7c82fd774c280e23cebc725e7cd807c66d0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xd249c43faabc58d6dd4b0a4de598b5a956c5d8d7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x1fbae785ce68b79f7ed4f7b27c3af3ef0e0bc3d4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x3c1376fb8487da57d4ffb263d9d01b578c7b586b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x7b24bed19856f4bb1d4c0421cfb328026cd936bd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x7cf887a863d81e6a483ee947dee05cb51914923c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x588c8cf031809486f015908864ee8699b44017e4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x3987d38a4ff8520a8ef6bcc6f98d6da8bcd69b89 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x4eefe02fce5b53ca33c7717bbd8ad3c9cb0609f1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xaf996125e98b5804c00ffdb4f7ff386307c99a00 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x7924a818013f39cf800f5589ff1f1f0def54f31f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xde67d05242b18af00b28678db34feec883cc9cd6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x4eefe02fce5b53ca33c7717bbd8ad3c9cb0609f1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xaf996125e98b5804c00ffdb4f7ff386307c99a00 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x7924a818013f39cf800f5589ff1f1f0def54f31f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x4a5a8b0108f446df7c1c8a459fcfb54e844b7343 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xf6ba006abf768ab2d1b5bba2d22d9f13eb1269d4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x4eefe02fce5b53ca33c7717bbd8ad3c9cb0609f1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xaf996125e98b5804c00ffdb4f7ff386307c99a00 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x7924a818013f39cf800f5589ff1f1f0def54f31f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xcbe856765eeec3fdc505ddebf9dc612da995e593 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xcbe856765eeec3fdc505ddebf9dc612da995e593 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xc1738d90e2e26c35784a0d3e3d8a9f795074bca4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xcbe856765eeec3fdc505ddebf9dc612da995e593 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xda908c0bf14ad0b61ea5ebe671ac59b2ce091cbf + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x254aa3a898071d6a2da0db11da73b02b4646078f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xcbe856765eeec3fdc505ddebf9dc612da995e593 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x41824081f2e7beb83048bf52465ddd7c8e471da2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xa0c2ce1723b3939f47ad01a293292f2f75dc629d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xc42442f6402b68626e791a447d87b35cb1c6236e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x84537db6f6aaa2afdb71f325d14b9f5f7825bef1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x13933689ed2c6c66e83aed64336df14896efb7e2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xcbe856765eeec3fdc505ddebf9dc612da995e593 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x039df62583ddc1c5fda75db152b87113d863b6d6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xcbe856765eeec3fdc505ddebf9dc612da995e593 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x92c2fc5f306405eab0ff0958f6d85d7f8892cf4d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xcbe856765eeec3fdc505ddebf9dc612da995e593 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xc39e83fe4e412a885c0577c08eb53bdb6548004a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xdbac78be00503d10ae0074e5e5873a61fc56647c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xc1cd3d0913f4633b43fcddbcd7342bc9b71c676f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x6c4c7f46d9d4ef6bc5c9e155f011ad19fc4ef321 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xb2c86ff752f18499b70e8f642b3421405d50d6e9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x16588709ca8f7b84829b43cc1c5cb7e84a321b16 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xd0a4c8a1a14530c7c9efdad0ba37e8cf4204d230 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xf92f2e3fca01491baba0975264362cc38b1cab7b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x3e6e23198679419cd73bb6376518dcc5168c8260 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x531b6a4b3f962208ea8ed5268c642c84bb29be0b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x553e9c493678d8606d6a5ba284643db2110df823 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xe3170d65018882a336743a9c396c52ea4b9c5563 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x1385fc1fe0418ea0b4fcf7adc61fc7535ab7f80d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x5cd0ad98ba6288ed7819246a1ebc0386c32c314b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xe945683b3462d2603a18bdfbb19261c6a4f03ad1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xa1bf0e900fb272089c9fd299ea14bfccb1d1c2c0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xe46935ae80e05cdebd4a4008b6ccaa36d2845370 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x3041cbd36888becc7bbcbc0045e3b1f144466f5f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x0ad1e922e764df5ab6d636f5d21ecc2e41e827f0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xe945683b3462d2603a18bdfbb19261c6a4f03ad1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xa1bf0e900fb272089c9fd299ea14bfccb1d1c2c0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xe46935ae80e05cdebd4a4008b6ccaa36d2845370 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x3041cbd36888becc7bbcbc0045e3b1f144466f5f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x6b3a3d6ed64faf933a7a4b1bd44b2efba47614ac + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x4ce4a1a593ea9f2e6b2c05016a00a2d300c9ffd8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x0843e0f56b9e7fdc4fb95fabba22a01ef4088f41 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x8323d063b1d12acce4742f1e3ed9bc46d71f4222 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xe945683b3462d2603a18bdfbb19261c6a4f03ad1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xa1bf0e900fb272089c9fd299ea14bfccb1d1c2c0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xe46935ae80e05cdebd4a4008b6ccaa36d2845370 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x3041cbd36888becc7bbcbc0045e3b1f144466f5f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xe30e4dfdbb10949c27501922f845e20cfa579f09 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x7e02ae3f794ebade542c92973eb1c46d7e2e935d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xfa22d298e3b0bc1752e5ef2849cec1149d596674 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x8066ee17156e4184d69277e26fa8cbca3a845edf + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x418de8e0ab58abfe916a47821a055c59b9502deb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xfb9caae5a5c0ab91f68542124c05d1efbb97d151 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xb68606a75b117906e06caa0755896ad2b3dd0272 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x6e33c0f5e16b45114679eac217e0c0138cefcd2e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xd64fb39a5681908ad488b487d65f5d8479cb235c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xe945683b3462d2603a18bdfbb19261c6a4f03ad1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xa1bf0e900fb272089c9fd299ea14bfccb1d1c2c0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xe46935ae80e05cdebd4a4008b6ccaa36d2845370 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x3041cbd36888becc7bbcbc0045e3b1f144466f5f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x0217fc17c642d29b890bcf888e21be2378493e01 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x099d23a43da5a8a9282266dbefeaaef958150300 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xd92e0767473d1e3ff11ac036f2b1db90ad0ae55f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xe945683b3462d2603a18bdfbb19261c6a4f03ad1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xa1bf0e900fb272089c9fd299ea14bfccb1d1c2c0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xe46935ae80e05cdebd4a4008b6ccaa36d2845370 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x3041cbd36888becc7bbcbc0045e3b1f144466f5f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x40c547e7fd88f60d94788953b83d9342d8d133c6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x397433498c7befde4b4049b98a7ff081a2c17387 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xf9be03505869d719ba194757943575ed2af001f2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x18c40bb9281a07627ff25cea45b7511f68fd0076 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x270d89e983d9821a418bf193684736414fab78c5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xb125aa15ad943d96e813e4a06d0c34716f897e26 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x813c0decbb1097fff46d0ed6a39fb5f6a83043f4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x9a7ac628ba9f330341486380af729c8975388959 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xf2c9339945bff71dd0bffd3c142164112cd05dc6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x12a4619c0bd9710732fbc458e9baa73df6c3d35f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x96530dac7817f186390b64ba63d13becd079b28d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x18fc1e95adb68b556212ebbad777f3fbb644db98 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xabbeb324b090550ca6d15ec71019915813f54f90 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x86d708404d0db1d97843e66d4ed6b86d11be705b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xbfbba3de6a260c8374f8299c38898312c2d6e9a6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xe945683b3462d2603a18bdfbb19261c6a4f03ad1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xa1bf0e900fb272089c9fd299ea14bfccb1d1c2c0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xe46935ae80e05cdebd4a4008b6ccaa36d2845370 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x3041cbd36888becc7bbcbc0045e3b1f144466f5f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xe945683b3462d2603a18bdfbb19261c6a4f03ad1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xa1bf0e900fb272089c9fd299ea14bfccb1d1c2c0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xe46935ae80e05cdebd4a4008b6ccaa36d2845370 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x3041cbd36888becc7bbcbc0045e3b1f144466f5f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xd31d41dffa3589bb0c0183e46a1eed983a5e5978 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x391e8501b626c623d39474afca6f9e46c2686649 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xd0fc8ba7e267f2bc56044a7715a489d851dc6d78 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x4fd47e5102dfbf95541f64ed6fe13d4ed26d2546 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xe9033c0011f35547fa90d3f8a6ad4b666a590759 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x0c3561d3b72e17378d99684414aa8669daeb8bd0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x14653ce9f406ba7f35a7ffa43c81fa7ecd99c788 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x3204e9734a56a4d7c6f4f5822e14182d9d1a43c4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x43faefd4c0c25e969ac211cd97a4a51e52c729b7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xa652ab3be697c7a01fbdce4d73f8e8acd990251c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x29962083891241aad61ad97bae46d032c9c0c55c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x26bf3601b77be9c31b13b22ebca02914db9c7468 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x0d2edd335982f56662d772b93d86901eb9bd2ff9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xbaed273edd493930711fe88690ebd1f30f7f55ab + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x16033643947bf4d8a1ae37b055edf57cb183106a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xf59abf32c1e8c5d2c6e3faa2131533bbcd466194 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x0312187403bf72b8d2d80729894d6ac3300bd63f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x416fdbc4fb8d4d1f48d0d3778c59dfa5352e9b15 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x90908e414d3525e33733d320798b5681508255ea + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x5918aca9ae924e6eaaa3d293bb92bdec9ab79338 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x8270e64d22cf13e92c641c4006408c7d7e3ff341 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x16503510c58da73486950b72a12ead3d1d8355dd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x90908e414d3525e33733d320798b5681508255ea + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x7505159f644ddc5eae21c119e328d0d5bee574b0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xe870bfe4aacb6e234b645e535d26c53790d50e78 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x2e2d190ad4e0d7be9569baebd4d33298379b0502 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x90908e414d3525e33733d320798b5681508255ea + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xb834093d7e46f7644be45e77281394d31003e866 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xb5a1fd804342cfb679bd8ada75718bc3ec43097e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x90908e414d3525e33733d320798b5681508255ea + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x9e71e2b14d7e6d30811628ab0965f28e4e2edbce + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xa011da4a0c9261ecf4694bf73a74d113aa261133 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x7ab922c1bfdf7df977c7531c5782074d866f3adc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xe2d2050430e341a8f3988e2726e44d9370f8cd3a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xed66ba3ea44425805a085b1ca80d00467b055b38 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x40dade19adc198125ec237a2c48b3408568b2f81 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x166bc40da621d3cb978e24334f844b84ddef25f8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x76bf0abd20f1e0155ce40a62615a90a709a6c3d8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x90908e414d3525e33733d320798b5681508255ea + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x6948d6c8532c6b0006cb67c6fb9c399792c8ac91 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x90908e414d3525e33733d320798b5681508255ea + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x4e40cf4a7d8724e5adc2b791bbf9451d1e260b93 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x90908e414d3525e33733d320798b5681508255ea + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xc0067d751fb1172dbab1fa003efe214ee8f419b6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xc3d7aa944105d3fafe07fc1822102449c916a8d0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xd6b4cce96ddf8aab2e5750983af9a901f17fbc36 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x4cef551255ec96d89fec975446301b5c4e164c59 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xc0067d751fb1172dbab1fa003efe214ee8f419b6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xc3d7aa944105d3fafe07fc1822102449c916a8d0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xdd0c6bae8ad5998c358b823df15a2a4181da1b80 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xc0067d751fb1172dbab1fa003efe214ee8f419b6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xc3d7aa944105d3fafe07fc1822102449c916a8d0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xc0067d751fb1172dbab1fa003efe214ee8f419b6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xc3d7aa944105d3fafe07fc1822102449c916a8d0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x5e6ff2fa4ca244b6b33c7286d368120822eacc11 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x98efd62b4bfbde6393b18b063c506ce5a77f4810 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x3c5096df639262db0a6cd0172f08709d4161094b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xae31f0e673fc5f33cfc0e9abb426d8051404a7c5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xc0067d751fb1172dbab1fa003efe214ee8f419b6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xc3d7aa944105d3fafe07fc1822102449c916a8d0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xc0067d751fb1172dbab1fa003efe214ee8f419b6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xc3d7aa944105d3fafe07fc1822102449c916a8d0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xd10456ce05b9af05c8eede0f93ea8aa80a0daa2f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x065c22a16f6531706681fabbc8df135fe6eb1c2e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x8ab8d851c6b31d8a4d42fd7d3e47b20861b025f2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xc0067d751fb1172dbab1fa003efe214ee8f419b6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xc3d7aa944105d3fafe07fc1822102449c916a8d0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x2982d3295a0e1a99e6e88ece0e93ffdfc5c761ae + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xc593fe9193b745447e86b45ea0bf62565ee030cc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x88051b0eea095007d3bef21ab287be961f3d8598 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xaf21b0ec0197e63a5c6cc30c8e947eb8165c6212 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x9c84f58bb51fabd18698efe95f5bab4f33e96e8f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xb31273fd2dfc05e6fd91a3b8a2a681aeb0fbcf48 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xaf7b48ae2f4773fd44f9208cca3db5ae7bfa7e37 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xc2125a452115ff5a300cc2a6ffae99637f6e329d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xb08a8794a5d3ccca3725d92964696858d3201909 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xaf21b0ec0197e63a5c6cc30c8e947eb8165c6212 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x9c84f58bb51fabd18698efe95f5bab4f33e96e8f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xae99efe6b04bbe5b8b4ad567946fb84b35681abb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xaf21b0ec0197e63a5c6cc30c8e947eb8165c6212 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x9c84f58bb51fabd18698efe95f5bab4f33e96e8f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xaf21b0ec0197e63a5c6cc30c8e947eb8165c6212 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x9c84f58bb51fabd18698efe95f5bab4f33e96e8f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x6696710b8e3dc0d844c8b9244767962a4a61ad97 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xcde77ef185a8f886d03b109573cc1dcdcf3cf1f8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xaf21b0ec0197e63a5c6cc30c8e947eb8165c6212 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x9c84f58bb51fabd18698efe95f5bab4f33e96e8f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x35f5387decce5a234da1a32ca3c9e338a48bcf37 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x4178dd7eb2eb983ba7f7e41648cf91db6be20190 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xaf21b0ec0197e63a5c6cc30c8e947eb8165c6212 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x9c84f58bb51fabd18698efe95f5bab4f33e96e8f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xb6c8f9490314394cfc6edacb8717bfdc1eb8dab5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x1625fe58cdb3726e5841fb2bb367dde9aaa009b3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xb1ed164c736909ba7ddbc1feb7ced4eaad854a87 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x95faa9a91cd6c1c018e4b1a6fc4c89d4f1695e5d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xa143ccf73c25eec6f38bd1b741043ebea228b8e9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x2e067e0eab7fd31c01473c0f56f3295afb82e461 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xbc83c60e853398d263c1d88899cf5a8b408f9654 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xaf21b0ec0197e63a5c6cc30c8e947eb8165c6212 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x9c84f58bb51fabd18698efe95f5bab4f33e96e8f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x202a6012894ae5c288ea824cbc8a9bfb26a49b93 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x744159757cac173a7a3ecf5e97adb10d1a725377 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x127452f3f9cdc0389b0bf59ce6131aa3bd763598 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x5ced44f03ff443bbe14d8ea23bc24425fb89e3ed + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x5ced44f03ff443bbe14d8ea23bc24425fb89e3ed + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x2264ba9dc0b257c69eeae7782e8ff608cc65d6a7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x5ced44f03ff443bbe14d8ea23bc24425fb89e3ed + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x00a59c2d0f0f4837028d47a391decbffc1e10608 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x5ced44f03ff443bbe14d8ea23bc24425fb89e3ed + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xad6e8f6a34087bddfb03815e2c10e4f7bfd4395b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xd5bb156cb73bfca62f68dc3dff7e5ec4e305b861 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xc0d8f259578c985947a050802fb4857261af0bf3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x5ced44f03ff443bbe14d8ea23bc24425fb89e3ed + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x74f7a360eb36a46b675ea932ea07094a3ace441f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x626761cc5b9fafe4696bf8def4aa015576bb4bef + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x5ced44f03ff443bbe14d8ea23bc24425fb89e3ed + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xc767c0b2e2e56c455fd29f9ee9b6e6f035c71ed4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x625cb959213d18a9853973c2220df7287f1e5b7d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x5ced44f03ff443bbe14d8ea23bc24425fb89e3ed + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x7138eae57e8a214f7297e5e67bb6e183df3572d5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xc7bbec68d12a0d1830360f8ec58fa599ba1b0e9b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x840deeef2f115cf50da625f7368c24af6fe74410 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x69c7bd26512f52bf6f76fab834140d13dda673ca + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x69c7bd26512f52bf6f76fab834140d13dda673ca + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x69c7bd26512f52bf6f76fab834140d13dda673ca + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xda71299ff6bdac31bdcafde52a41d460f17e3ad9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xabebc245a9a47166ecd10933d43817c8ef6fb825 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x69c7bd26512f52bf6f76fab834140d13dda673ca + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x69c7bd26512f52bf6f76fab834140d13dda673ca + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xb007dda6ca7a57785ce04981c30a1934995a197a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x0de383928e4fcf0f90ad2d6a5ee18eb3b9d16a55 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x0a36df020fe3f132e6557899f272bf3d4591620e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x69c7bd26512f52bf6f76fab834140d13dda673ca + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x69c7bd26512f52bf6f76fab834140d13dda673ca + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x8c9d230d45d6cfee39a6680fb7cb7e8de7ea8e71 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xcb198a55e2a88841e855be4eacaad99422416b33 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x9b371948735f612be19195f5f6e5ebc03839cdaf + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xb3709d0e16b618b15ee4bcf82d19b9e7d4100914 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xe426e1305f5e6093864762bf9d2d8b44bc211c59 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x7b9a5bc920610f54881f2f6359007957de504862 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xfb82dd4d657033133eea6e5b7015042984c5825f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x92560c178ce069cc014138ed3c2f5221ba71f58a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x6ef7d514d75b5a5a3c500dba1b161a81e842e7a4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xac70bd92f89e6739b3a08db9b6081a923912f73d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x1ebcf8831b93450ea81b0619c5e05b98751c8322 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x470d0d72c975a7f328bd63808bfffd28194b3eb6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xa961f0473da4864c5ed28e00fcc53a3aab056c1b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x6ef7d514d75b5a5a3c500dba1b161a81e842e7a4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xa5b6d588ceb3aa1bf543d095038479188f884690 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x6ef7d514d75b5a5a3c500dba1b161a81e842e7a4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x6ef7d514d75b5a5a3c500dba1b161a81e842e7a4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xb1419a7f9e8c6e434b1d05377e0dbc4154e3de78 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x6ef7d514d75b5a5a3c500dba1b161a81e842e7a4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x70c132a2ddeccf0d76cc9b64a749ffe375a79a21 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x6ef7d514d75b5a5a3c500dba1b161a81e842e7a4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x6ef7d514d75b5a5a3c500dba1b161a81e842e7a4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x1b942ce8bf08290f740b9e825c91e07fcd0bfe75 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x5016cd7b785a773f7f3a3ff4035a1e7a76543946 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xf6c4e4f339912541d3f8ed99dba64a1372af5e5b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x4f122edcd91af8cda38c3a87158afa8687bab57c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xed3fe08bd12f24dad0f1a1e58610644debe374fb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x5016cd7b785a773f7f3a3ff4035a1e7a76543946 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xf6c4e4f339912541d3f8ed99dba64a1372af5e5b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x7bc815ca2c2115f896bb14b31b8196388c05e99b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x5016cd7b785a773f7f3a3ff4035a1e7a76543946 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xf6c4e4f339912541d3f8ed99dba64a1372af5e5b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xd29c2df656b2e4ae6b6817ccc2ebe932fc6a950b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x1f6082db7c8f4b199e17090cd5c8831a1dad1997 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x5016cd7b785a773f7f3a3ff4035a1e7a76543946 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xf6c4e4f339912541d3f8ed99dba64a1372af5e5b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xc64f886397988ff16d72123dbe3d46e5bf33ffac + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x0d2c430c6f7ef48ed34bf4aad0ec377e03cc53cf + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x5016cd7b785a773f7f3a3ff4035a1e7a76543946 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xf6c4e4f339912541d3f8ed99dba64a1372af5e5b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x2b11a34f52e354ef197f0a2397008699b875ae7e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x5016cd7b785a773f7f3a3ff4035a1e7a76543946 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xf6c4e4f339912541d3f8ed99dba64a1372af5e5b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xde27bdec962a74a72fa1c5ef50bff6f3da083e05 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x7766bdc5ff15d3aceb4d37914963aebaccf3de15 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x5016cd7b785a773f7f3a3ff4035a1e7a76543946 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xf6c4e4f339912541d3f8ed99dba64a1372af5e5b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x67ab7dc903a10838a0de8861dfdff3287cf98e5c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x88aaeed1fcfca2eda30749afa9ad45a75c80e292 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x2c8e9a1586ed822f79c0a241e1a4d48e839b3182 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x847165954680b989902e354f34d08b09afab3cd9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x590269935821d760c54b32d31db66ba47d4e53b4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x03d70bf9e6afbf8cac09ef0c45f9a00a841c2bed + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x8b238f615c1f312d22a65762bcf601a37f1eeec7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x5280d5e63b416277d0f81fae54bb1e0444cabdaa + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xf4e43a4a17d2820c7cf724e46844943931a47894 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x5ab53ee1d50eef2c1dd3d5402789cd27bb52c1bb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xe6ff8b9a37b0fab776134636d9981aa778c4e718 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x44af8d03393e498eec5fcfc7936ebc381f02974d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x4094915f7849b26e8d43dee1f7e3b7b477a0b5bb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xc3f5e0d4cdff86e85486cf6bd20cc0884df5f98e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x87428a53e14d24ab19c6ca4939b4df93b8996ca9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x9dbe5dffaeb4ac2e0ac14f8b4e08b3bc55de5232 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xc3576f38c32e95e36bbd8d91e6cbe646a3723110 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x8d58e202016122aae65be55694dbce1b810b4072 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xc3576f38c32e95e36bbd8d91e6cbe646a3723110 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x8d58e202016122aae65be55694dbce1b810b4072 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xa7bb0d95c6ba0ed0aca70c503b34bc7108589a47 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xbcfac19a0036ada56496316ee5cf388c2af2bf58 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x296b88b607ea3a03c821ca4dc34dd9e7e4efa041 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xc3576f38c32e95e36bbd8d91e6cbe646a3723110 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x8d58e202016122aae65be55694dbce1b810b4072 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x019c29d5c97f8cbaa67013e2cf4b6506a5cf183a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xc3576f38c32e95e36bbd8d91e6cbe646a3723110 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x8d58e202016122aae65be55694dbce1b810b4072 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x30442fcebbd75a5bb58377c0174d5ce637e297d7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x6c561b446416e1a00e8e93e221854d6ea4171372 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x0fb597d6cfe5be0d5258a7f017599c2a4ece34c7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xe9b7057f9b81a0120c09306d35f22859473f18cb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x8deb37b048f4b3c7bd61eca7dfccbef7cba726de + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x455fd3ae52a8ab80f319a1bf912457aa8296695a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xe11d03bef391ee0a4b670176e23eb44aad490f12 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xe7f850731fed6af4c36cce93eccfbcda0634a030 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xadad4ce0c68f50a19cf5063e0b91d701daab1df1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x5e9bb3d7682a9537db831060176c4247ab80d1ec + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xe9ed60539a8ea7a4da04ebfa524e631b1fd48525 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x0511791eb6fb175a1aaa645114f0f5c8689ec163 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xf3c7b93db3f28580b0fd10365e619eedceb40e76 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x58ecf9cec06bc58fde9280d348f79ed8f3d3046e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xedc7f0dfd9751ef95bb8786a3b130f490743bb0e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xc3576f38c32e95e36bbd8d91e6cbe646a3723110 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x8d58e202016122aae65be55694dbce1b810b4072 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x6bcb0ba386e9de0c29006e46b2f01f047ca1806e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xc3576f38c32e95e36bbd8d91e6cbe646a3723110 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x8d58e202016122aae65be55694dbce1b810b4072 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xc3576f38c32e95e36bbd8d91e6cbe646a3723110 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x8d58e202016122aae65be55694dbce1b810b4072 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x34a43471377dcce420ce8e3ffd9360b2e08fa7b4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x34a43471377dcce420ce8e3ffd9360b2e08fa7b4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x34a43471377dcce420ce8e3ffd9360b2e08fa7b4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x34a43471377dcce420ce8e3ffd9360b2e08fa7b4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x34a43471377dcce420ce8e3ffd9360b2e08fa7b4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x34a43471377dcce420ce8e3ffd9360b2e08fa7b4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x34a43471377dcce420ce8e3ffd9360b2e08fa7b4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x766854992bd5363ebeeff0113f5a5795796befab + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x9438a9d1bdeece02ed4431ac59613a128201e0b9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x0a63d3910ffc1529190e80e10855c4216407cc45 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x89084692453ab2305f5f8ac7d70d5efd37a86b8f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xb34a5657988da5b9888952c439756594613507aa + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x05efb437e4e97efea6450321eca8d7585a731369 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xc973c86afc23ed731ce1a14d7179003a1601205f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x0f44a1c2b66418f784607d2067fe695703809bff + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x0da6253560822973185297d5f32ff8fa38243afe + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x622270721fb38fde831ab23a8e177665557f6fa9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xa95b0f5a65a769d82ab4f3e82842e45b8bbaf101 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x622270721fb38fde831ab23a8e177665557f6fa9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x886b4f0cb357e0d6ec07b7a3985f346cc17ece7d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x622270721fb38fde831ab23a8e177665557f6fa9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x50defb73a76efe5d5d35cf267ffb02dfd6cd96bc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x622270721fb38fde831ab23a8e177665557f6fa9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x7aea2e8a3843516afa07293a10ac8e49906dabd1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x8c7080564b5a792a33ef2fd473fba6364d5495e5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x8f81b80d950e5996346530b76aba2962da5c9edb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x7bc0f74d8d94e8e9fdaa40bbc04cc44fb8e0f081 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x09c149c856e6fb6e40aa39209142411b554b1a41 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x622270721fb38fde831ab23a8e177665557f6fa9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x7ef0a523c49b1dd07e3593198c5260a95ad7859a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x622270721fb38fde831ab23a8e177665557f6fa9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x622270721fb38fde831ab23a8e177665557f6fa9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x15aa01580ae866f9ff4dbe45e06e307941d90c7b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x4548280ac92507c9092a511c7396cbea78fa9e49 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xe0554a476a092703abdb3ef35c80e0d76d32939f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xc555d55279023e732ccd32d812114caf5838fd46 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x421803da50d3932caa36bd1731d36a0e2af93542 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xc555d55279023e732ccd32d812114caf5838fd46 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xc555d55279023e732ccd32d812114caf5838fd46 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x258a4b7373f6863db5a17de191e0cebb1e0bbc8a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x45126b956401daaec92afba2a9953e14b16fb83f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xc555d55279023e732ccd32d812114caf5838fd46 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xa3eaa52b505cf61aadcfe21424d43a6847dd6331 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x722bcf6c16dadcc29914e4e64290c46aa1406de8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x1e1367dcebe168554e82552e0e659a4116926d10 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xc555d55279023e732ccd32d812114caf5838fd46 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x4d170f8714367c44787ae98259ce8adb72240067 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xc555d55279023e732ccd32d812114caf5838fd46 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xaa97f0689660ea15b7d6f84f2e5250b63f2b381a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xc555d55279023e732ccd32d812114caf5838fd46 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xb736330326cf379ecd918dba10614bd63c2713da + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xe3d4faff3179f0a664a3a84c3e1da3b90e27f186 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x50e7b9293aef80c304234e86c84a01be8401c530 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x87dddd2e152bf1955e7e03d9f23a9dcc163eebf6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xd9dd34576c7034beb0b11a99afffc49e91011235 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x394a9fcbab8599437d9ec4e5a4a0eb7cb1fd2f69 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xb3adde966b8a1a6f22a04914ee9fe0798e71fc5b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xa2d4a8e00daad32acace1a0dd0905f6aaf57e84e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x2392ae4ba6daf181ce7343d237b695cdf525e233 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xc2c390c6cd3c4e6c2b70727d35a45e8a072f18ca + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x95f4408736988549212db071b1c8d20f7c4e6304 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x52c77b0cb827afbad022e6d6caf2c44452edbc39 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x3dd2fdba71282083d440687cce9e4231aaac534e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xe4d9faddd9bca5d8393bee915dc56e916ab94d27 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x95f4408736988549212db071b1c8d20f7c4e6304 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x52c77b0cb827afbad022e6d6caf2c44452edbc39 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x9c92ed19a86986124447a73b27625230dd52f805 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x740601243a6aa25ce4ee2d196eef83ac3bec6c65 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x95f4408736988549212db071b1c8d20f7c4e6304 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x52c77b0cb827afbad022e6d6caf2c44452edbc39 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x95f4408736988549212db071b1c8d20f7c4e6304 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x52c77b0cb827afbad022e6d6caf2c44452edbc39 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xafbb6fcc92ddb091dbc13e9073c3360c7d9600cc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x95f4408736988549212db071b1c8d20f7c4e6304 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x52c77b0cb827afbad022e6d6caf2c44452edbc39 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xf54eba95d7f8dbe4bfeb0b6e038b3c2bedd3e40a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x05c0a0b84b6b67499c33e6403686f45cab063810 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x9169bf3657353e4b2b81c75e235f22bc299a7780 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x95f4408736988549212db071b1c8d20f7c4e6304 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x52c77b0cb827afbad022e6d6caf2c44452edbc39 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x95f4408736988549212db071b1c8d20f7c4e6304 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x52c77b0cb827afbad022e6d6caf2c44452edbc39 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xb0bb2c1d32c7b27f21eec4402c6d1c38795c090a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x534d3930edba2c0b90a7973549a0287141c987ef + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xf27d0dac09460b236d4d9e0da316fe9c3a99b4a2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x0c3fdf9c70835f9be9db9585ecb6a1ee3f20a6c7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xdd672b3b768a16b9bcb4ee1060d3e8221435beaa + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x0c3fdf9c70835f9be9db9585ecb6a1ee3f20a6c7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xa39fe8f7a00ce28b572617d3a0bc1c2b44110e79 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x0c3fdf9c70835f9be9db9585ecb6a1ee3f20a6c7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x0c3fdf9c70835f9be9db9585ecb6a1ee3f20a6c7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x0c3fdf9c70835f9be9db9585ecb6a1ee3f20a6c7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x96d5d78b179169ee0a0a0104dc514988f2a797fe + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x0c3fdf9c70835f9be9db9585ecb6a1ee3f20a6c7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xb466d5429d6ad9999bf112c225d9d7b15e96c658 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x0c3fdf9c70835f9be9db9585ecb6a1ee3f20a6c7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x8a35d2635aeca1aaf667d77ed9ff3b21e48ede24 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xe566e99d65b17974fd9db02e25e24ea8020f7a0e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x5c3edc45ae71a353c669cfa71e6488951dce4618 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xa7b3bcc6c88da2856867d29f11c67c3a85634882 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x543842cbfef3b3f5614b2153c28936967218a0e6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xc45a81bc23a64ea556ab4cdf08a86b61cdceea8b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xe333e366503f620e0242796431dc74fffd258e66 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x42161084d0672e1d3f26a9b53e653be2084ff19c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xe24f62341d84d11078188d83ca3be118193d6389 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x782dcc2cd3a65405baeb794269703e9c29a175cc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xae8d5b91fca627410a3bef77f55fcfe208409a40 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xa42eb1c1a212da9e24058c6afc0ea906fecb8351 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x0e3529cf622dc1141a31cfc0fc85f679f558c92b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x6f5ec7c65c2744a963064f6d49df0f4eea7d7d90 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x9a772018fbd77fcd2d25657e5c547baff3fd7d16 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xfc1505b3d4cd16bb2336394ad11071638710950f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x8e0a7d4018fb2674346d5742055174f899fe1826 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xf8aa1db87d84118b0b461e2135190ac27fc1859d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xe8f7c89c5efa061e340f2d2f206ec78fd8f7e124 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x56534741cd8b152df6d48adf7ac51f75169a83b2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x73a38006d23517a1d383c88929b2014f8835b38b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xf5d63f66a36be31a106631f276794223b8ce5280 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xcf0bb95967cd006f5eaa1463c9d710d1e1550a96 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xdc9bf303e72a5780c45d53fc12799164e5ba8271 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x1d4dab3f27c7f656b6323c1d6ef713b48a8f72f1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xafd8f9b89e2af8246523573a369010daf9489b12 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xbd045175d2a1451a015079f5f3f59ca5c05524ea + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x859ec3d336bb5508f6d87fea2d49c9294adae311 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x8544383f6f2eb43711fba8d918b30658856b9806 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x308c6fbd6a14881af333649f17f2fde9cd75e2a6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x704ad8d95c12d7fea531738faa94402725acb035 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x5166c1bd4603cf67dbb9a98940e38d2bd0a7f294 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xf215cedbae999571e4ba5d80c10b6e835f88d5ec + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x308c6fbd6a14881af333649f17f2fde9cd75e2a6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x704ad8d95c12d7fea531738faa94402725acb035 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xd4cb5566b5c16ef2f4a08b1438052013171212a2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x308c6fbd6a14881af333649f17f2fde9cd75e2a6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x704ad8d95c12d7fea531738faa94402725acb035 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x357faf5843c7fd7fb4e34fbeabdac16eabe8a5bc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x308c6fbd6a14881af333649f17f2fde9cd75e2a6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x704ad8d95c12d7fea531738faa94402725acb035 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x2bbfb5a2496f405d4094d4b854daeb9ce70d0029 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x308c6fbd6a14881af333649f17f2fde9cd75e2a6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x704ad8d95c12d7fea531738faa94402725acb035 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x3373a22cb07cb49651b82cf6f174ef434e4dbaa8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xc8d19b4ea42939a4b14260f0c8b4a0d6f70c8496 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x308c6fbd6a14881af333649f17f2fde9cd75e2a6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x704ad8d95c12d7fea531738faa94402725acb035 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xb2290db2f409201c33c507d266becabf19228dd1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x308c6fbd6a14881af333649f17f2fde9cd75e2a6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x704ad8d95c12d7fea531738faa94402725acb035 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x0c30062368eefb96bf3ade1218e685306b8e89fa + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x6f38e884725a116c9c7fbf208e79fe8828a2595f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xe612cb2b5644aef0ad3e922bae70a8374c63515f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xdef705a1864bcba65e4e275bffd58de21b5d44a0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x717358a47ac99f3cd233e723be331756b3951164 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x9166a0139cab9661e08779cd01b1358aaea7b95f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xc1a6fbedae68e1472dbb91fe29b51f7a0bd44f97 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x3a3dc4a26d1aceae12fd1026a5856f12d20658ea + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xa2375dad211fe6e538d29c98ec526246e38be4ec + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x4e4a4c4c46d3488ff35ff05a0233785a30f03ec4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x5d27fdd96c8e4028edbabf3d667be24769425199 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x1944ac04bd9fed9a2bcdb38b70c35949c864ec35 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x5e2cd0da3411449152010d8b7f2b624eb29cca59 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x85e8d0fddf559a57aac6404e7695142cd53eb808 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xead1cd21ddf8793debc9484a0b8d286230c9b5a3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xc4ecaf115cbce3985748c58dccfc4722fef8247c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x2f42df4af5312b492e9d7f7b2110d9c7bf2d9e4f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x021235b92a4f52c789f43a1b01453c237c265861 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xc6e291f54532f12391ab59d7af75453db2dd784a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xfe4fe5b4575c036ac6d5cccfe13660020270e27a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xfa7d79f971a70771e5e92bd80ab955edc8602f4d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x023b6298e2f9ae728b324757599f2a36e002a55a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x53d3e59faac08184720bcb2816f4cf5b36d6767d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x7e9cb8ad4a7683070e233f3eb1d07d87272b9b26 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xa213c82265cd3d94f972f735a4f5130e34df81bc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xf1fdc83c3a336bdbdc9fb06e318b08eaddc82ff4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x3d9228f1847b07e6b2c8eaaf393d5a4db2dbedc2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x9263bb7e2d3570593d80d087ea2cfc72882cfb2c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x360b9726186c0f62cc719450685ce70280774dc8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x9ec9620e1fda9c1e57c46782bc3232903cacb59b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x1112956589a2bea1b038732db4ea6b0c416ef130 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x663b1d43c27e41e5e512bf59010133997d1cd304 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x9ec9620e1fda9c1e57c46782bc3232903cacb59b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x1112956589a2bea1b038732db4ea6b0c416ef130 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xfea834a5c47b923add607cc5b96288d18ffb9c3f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x9ec9620e1fda9c1e57c46782bc3232903cacb59b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x1112956589a2bea1b038732db4ea6b0c416ef130 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x273d580e9ceadca5b2a8ceb5ebb38a70511377cb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x9ec9620e1fda9c1e57c46782bc3232903cacb59b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x1112956589a2bea1b038732db4ea6b0c416ef130 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x3b241fb91c65f42432ebdbca029e0b511c8a1707 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xe9a65059e895dd5d49806f6a71b63fed0ffffd4b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x01a1f5758c3a53057b6c819ec7331e39c167794a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x40fc7cda03139ebf7a0d3fc01f12b9d9a878cc92 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x11e26bbd1a5547895a50fc39a2d4c0025dec0bda + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x21cbb0e695b0ac79be756a87da690fd80bef4bff + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x68b27e9066d3aadc6078e17c8611b37868f96a1d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x9ec9620e1fda9c1e57c46782bc3232903cacb59b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x1112956589a2bea1b038732db4ea6b0c416ef130 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x2af64d33a47e7a98eafc20ce9f6af59927d10260 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x9ec9620e1fda9c1e57c46782bc3232903cacb59b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x1112956589a2bea1b038732db4ea6b0c416ef130 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x9ec9620e1fda9c1e57c46782bc3232903cacb59b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x1112956589a2bea1b038732db4ea6b0c416ef130 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xc4ce8e63921b8b6cbdb8fcb6bd64cc701fb926f2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x9febc984504356225405e26833608b17719c82ae + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x59c38b6775ded821f010dbd30ecabdcf84e04756 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x2aeee741fa1e21120a21e57db9ee545428e683c9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x67324985b5014b36b960273353deb3d96f2f18c2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x2aeee741fa1e21120a21e57db9ee545428e683c9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x67324985b5014b36b960273353deb3d96f2f18c2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x2aeee741fa1e21120a21e57db9ee545428e683c9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x67324985b5014b36b960273353deb3d96f2f18c2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xcec31e540163ddf45a394e00b11ae442ddc0d704 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x7f9121b4f4e040fd066e9dc5c250cf9b4338d5bc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x2aeee741fa1e21120a21e57db9ee545428e683c9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x67324985b5014b36b960273353deb3d96f2f18c2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x316f12517630903035a0e0b4d6e617593ee432ba + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x61928bf5f2895b682ecc9b13957aa5a5fe040cc0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x9399da51c1a85e64cce4b30b554875d2b89b2445 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x0962a51e121aa8371cd4bb0458b7e5a08c1cbd29 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xfbb6eed8e7aa03b138556eedaf5d271a5e1e43ef + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x2aeee741fa1e21120a21e57db9ee545428e683c9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x67324985b5014b36b960273353deb3d96f2f18c2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x913a4ed1636c474e6451b5e9249d94046a24bb33 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x8e3ecc0b261f1a4db62321090575eb299844f077 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x2aeee741fa1e21120a21e57db9ee545428e683c9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x67324985b5014b36b960273353deb3d96f2f18c2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x2aeee741fa1e21120a21e57db9ee545428e683c9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x67324985b5014b36b960273353deb3d96f2f18c2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x99950bae3d0b79b8bee86a8a208ae1b087b9dcb0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x948b54a93f5ad1df6b8bff6dc249d99ca2eca052 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x5738df8073ad05d0c0fcf60e358033268ebf16cc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xb771f724c504b329623b0ce9199907137670600e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x0da7096f14303eddd634c0241963c064e0244984 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x52f9d14bed8ce6536da063aaf274ae2747ef4853 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xc0f05732d1cda6f59487ceeef4390abcad86ea3e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xb771f724c504b329623b0ce9199907137670600e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x0da7096f14303eddd634c0241963c064e0244984 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x28117b7b8dba890041d7ebe646082af043533da2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0xb771f724c504b329623b0ce9199907137670600e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x0da7096f14303eddd634c0241963c064e0244984 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xf3ca4ade682c5b99507db9a72549318b8708f137 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xb771f724c504b329623b0ce9199907137670600e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0x0da7096f14303eddd634c0241963c064e0244984 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x9c087eb773291e50cf6c6a90ef0f4500e349b903 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x037818b04ac34ea8b54b6683b79ef24d23c0e7cb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xbf6ef625de5df898cc1d0f91868aae03976a2e2d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xfdbaf04326acc24e3d1788333826b71e3291863a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xc68b994e2147b8bcf18f82c201ac3ee1e97be33d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x47808ddbc91646b21b307fefbaf7ee200b004ccc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xb771f724c504b329623b0ce9199907137670600e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x0da7096f14303eddd634c0241963c064e0244984 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xafa5421fe7997c16e11458659f5a87d67f1e8651 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x26b4103c8da21725909955fe85f7f6249d05dd9e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x79dbd26d3c1e44171205f258aadfae84933b69b8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xb771f724c504b329623b0ce9199907137670600e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x0da7096f14303eddd634c0241963c064e0244984 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xb771f724c504b329623b0ce9199907137670600e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0x0da7096f14303eddd634c0241963c064e0244984 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x0f9e3c4b905e6292b33f5ef96af18054ded12ac8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0xb0e1a214130245d289ae425db7826576694a5b5f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x32a5746ba6826828716cc1a394bc33301ebc7656 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x0f725b113979e025c69da0ffce3fbf5b6063cc5c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x056c5ff8380625cc94efe865a4c178a33ed546f8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xda67d7c01c4c8f757c105c0890d94ac489952cd5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x4fe87203b27a105a772f195d3f30dea714d1ecf0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x670e77c361375be9013869ccc516027ccc90383f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xaec085e5a5ce8d96a7bdd3eb3a62445d4f6ce703 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x92d90f7f8413749bd4bea26dde4e29efc9e9a0b6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x2c114787d52e9f080464dbed8e285e07ec4e120f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x303b00d7a2ad12a480db7c04de5835ec9ccc37b0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x6f9d09253f99d2b6843b5ec62c23496c37327216 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x4cd15f2bc9533bf6fac4ae33c649f138cb601935 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x63d134fa19fbb35ad689dbb6b659879de1e7fb29 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x5cbddc44f31067df328aa7a8da03aca6f2edd2ad + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/optimism/0x72da5b3c28b8cee48158f469e0e9215607fe06d7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/polygon/0xa7cca1c4a7d4b70f687380e0454e5ae418db53b1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xd364eb55e17700b54bd75feb3f14582ed7a29444 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xb3fb7ccf7b681e9562c6da467db4859a8ef0b8de + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x0eb7fbe43045426938ddadc11dc41338e0907659 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xa23fab21d0653c231166b31cb6274ff45eba2ee5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0xf68001b66cb98345c05b2e3efdee1db8fc01a76c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0xa3adcaaf941a01eec47655c550dd5504637d029a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/ethereum/0x6dcba3657ee750a51a13a235b4ed081317da3066 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0xbbf3209130df7d19356d72eb8a193e2d9ec5c234 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/arbitrum/0x6de5072c06cbf37da96ccc0fc85c85ca82fe9d13 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/base/0x183ea22691c54806fe96555436dd312b6befac2f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/bnb/0x6f169193b181d9492f9bde038109cce6dfe19321 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/pools/celo/0xe9d448cc1ed83891ab5b381face53f0cadb3a8e5 + 2025-01-24T22:24:05.375Z 0.8 \ No newline at end of file diff --git a/apps/web/public/tokens-sitemap.xml b/apps/web/public/tokens-sitemap.xml index e727529afef..737f3300044 100644 --- a/apps/web/public/tokens-sitemap.xml +++ b/apps/web/public/tokens-sitemap.xml @@ -2,3182 +2,9427 @@ https://app.uniswap.org/explore/tokens/ethereum/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xdac17f958d2ee523a2206206994597c13d831ec7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x6982508145454ce325ddbe47a25d4ec3d2311933 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x6b175474e89094c44da98b954eedeac495271d0f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x6123b0049f904d730db3c36a31167d9d4121fa6b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xcf0c122c6b73ff809c693db761e7baebe62b6a2e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xfaba6f8e4a5e8ab82f62fe7c39859fa577269be3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x58cb30368ceb2d194740b144eab4c2da8a917dcb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x4c9edd5852cd905f086c759e8383e09bff1e68b3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xaaee1a9723aadb7afa2810263653a34ba2c21c7a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x514910771af9ca656af840dff83e8264ecf986ca - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x5b7533812759b45c2b44c19e320ba2cd2681b542 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xae78736cd615f374d3085123a210448e74fc6393 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xb9f599ce614feb2e1bbe58f180f370d05b39344e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd5f7838f5c461feff7fe49ea5ebaf7728bb0adfa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd31a59c85ae9d8edefec411d448f90841571b89c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x6a7eff1e2c355ad6eb91bebb5ded49257f3fed98 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x576e2bed8f7b46d34016198911cdf9886f78bea7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1258d60b224c0c5cd888d37bbf31aa5fcfb7e870 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x62d0a8458ed7719fdaf978fe5929c6d342b0bfce - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x77e06c9eccf2e797fd462a92b6d7642ef85b0a44 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x24fcfc492c1393274b6bcd568ac9e225bec93584 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x27702a26126e0b3702af63ee09ac4d1a084ef628 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd46ba6d942050d489dbd938a2c909a5d5039a161 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xbe9895146f7af43049ca1c1ae358b0541ea49704 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x72f713d11480dcf08b37e1898670e736688d218d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x0001a500a6b18995b03f44bb040a5ffc28e45cb0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x9e9fbde7c7a83c43913bddc8779158f1368f0413 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x5f98805a4e8be255a32880fdec7f6728c6568ba0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1ae7e1d0ce06364ced9ad58225a1705b3e5db92b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x046eee2cc3188071c02bfc1745a6b17c656e3f3d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x84018071282d4b2996272659d9c01cb08dd7327f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x12970e6868f88f6557b76120662c1b3e50a646bf - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xaea46a60368a7bd060eec7df8cba43b7ef41ad85 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xc01154b4ccb518232d6bbfc9b9e6c5068b766f82 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x5a98fcbea516cf06857215779fd812ca3bef1b32 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x102c776ddb30c754ded4fdcc77a19230a60d4e4f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x72e4f9f808c49a2a61de9c5896298920dc4eeea9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x467719ad09025fcc6cf6f8311755809d45a5e5f3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf19308f923582a6f7c465e5ce7a9dc1bec6665b1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x710287d1d39dcf62094a83ebb3e736e79400068a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf951e335afb289353dc249e82926178eac7ded78 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf017d3690346eb8234b85f74cee5e15821fee1f4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x8c282c35b5e1088bb208991c151182a782637699 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xeaa63125dd63f10874f99cdbbb18410e7fc79dd3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xde342a3e269056fc3305f9e315f4c40d917ba521 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x2dff88a56767223a5529ea5960da7a3f5f766406 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x626e8036deb333b408be468f951bdb42433cbf18 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xdd66781d0e9a08d4fbb5ec7bac80b691be27f21d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xb23d80f5fefcddaa212212f028021b41ded428cf - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xbaac2b4491727d78d2b78815144570b9f2fe8899 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf8ebf4849f1fa4faf0dff2106a173d3a6cb2eb3a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xb90b2a35c65dbc466b04240097ca756ad2005295 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1614f18fc94f47967a3fbe5ffcd46d4e7da3d787 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf1df7305e4bab3885cab5b1e4dfc338452a67891 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x91fbb2503ac69702061f1ac6885759fc853e6eae - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xa9e8acf069c58aec8825542845fd754e41a9489a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x2c95d751da37a5c1d9c5a7fd465c1d50f3d96160 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xe453c3409f8ad2b1fe1ed08e189634d359705a5b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x89d584a1edb3a70b3b07963f9a3ea5399e38b136 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x4507cef57c46789ef8d1a19ea45f4216bae2b528 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd1d2eb1b1e90b638588728b4130137d262c87cae - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xe92344b4edf545f3209094b192e46600a19e7c2d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x8a0a9b663693a22235b896f70a229c4a22597623 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1bbe973bef3a977fc51cbed703e8ffdefe001fed - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xa41d2f8ee4f47d3b860a149765a7df8c3287b7f0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x761d38e5ddf6ccf6cf7c55759d5210750b5d60f3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xc18360217d8f7ab5e7c516566761ea12ce7f9d72 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xe28b3b32b6c345a34ff64674606124dd5aceca30 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x168e209d7b2f58f1f24b8ae7b7d35e662bbf11cc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xb131f4a55907b10d1f0a50d8ab8fa09ec342cd74 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x3472a5a71965499acd81997a54bba8d852c6e53d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x7dd9c5cba05e151c895fde1cf355c9a1d5da6429 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x19efa7d0fc88ffe461d1091f8cbe56dc2708a84f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x14fee680690900ba0cccfc76ad70fd1b95d10e16 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x3c3a81e81dc49a522a592e7622a7e711c06bf354 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xa1290d69c65a6fe4df752f95823fae25cb99e5a7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x92f419fb7a750aed295b0ddf536276bf5a40124f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x2c06ba9e7f0daccbc1f6a33ea67e85bb68fbee3a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x3d658390460295fb963f54dc0899cfb1c30776df - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x8e870d67f660d95d5be530380d0ec0bd388289e1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x853d955acef822db058eb8505911ed77f175b99e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1294f4183763743c7c9519bec51773fb3acd78fd - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x4e15361fd6b4bb609fa63c81a2be19d873717870 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x695d38eb4e57e0f137e36df7c1f0f2635981246b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x40a7df3df8b56147b781353d379cb960120211d7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xaaef88cea01475125522e117bfe45cf32044e238 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x163f8c2467924be0ae7b5347228cabf260318753 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x30672ae2680c319ec1028b69670a4a786baa0f35 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xc944e90c64b2c07662a292be6244bdf05cda44a7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x15e6e0d4ebeac120f9a97e71faa6a0235b85ed12 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x7d225c4cc612e61d26523b099b0718d03152edef - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x82af49447d8a07e3bd95bd0d56f35241523fbab1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xaf88d065e77c8cc2239327c5edb3a432268e5831 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xff970a61a04b1ca14834a43f5de4533ebddb5cc8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x912ce59144191c1204e64559fe8253a0e49e6548 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x5979d7b546e38e414f7e9822514be443a4800529 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x35751007a407ca6feffe80b3cb397736d2cf4dbe - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xeb466342c4d449bc9f53a865d5cb90586f405215 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xf97f4df75117a78c1a5a0dbb814af92458539fb4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x9623063377ad1b27544c965ccd7342f7ea7e88c7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x539bde0d7dbd336b79148aa742883198bbf60342 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3082cc23568ea640225c2467653db90e9250aaa0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x18c11fd286c5ec11c3b683caa813b77f5163a122 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x289ba1701c2f088cf0faf8b3705246331cb8a839 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x4cb9a7ae498cedcbb5eae9f25736ae7d428c9d66 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x00cbcf7b3d37844e44b888bc747bdd75fcf4e555 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd79bb960dc8a206806c3a428b31bca49934d18d7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3096e7bfd0878cc65be71f8899bc4cfb57187ba3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x13ad51ed4f1b7e9dc168d8a00cb3f4ddd85efa60 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x4e352cf164e64adcbad318c3a1e222e9eba4ce42 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x11cdb42b0eb46d95f990bedd4695a6e3fa034978 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xba5ddd1f9d7f570dc94a51479a000e3bce967196 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xc8ccbd97b96834b976c995a67bf46e5754e2c48e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd07d35368e04a839dee335e213302b21ef14bb4a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x323665443cef804a3b5206103304bd4872ea4253 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x83d6c8c06ac276465e4c92e7ac8c23740f435140 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x87aaffdf26c6885f6010219208d5b161ec7609c0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x1b8d516e2146d7a32aca0fcbf9482db85fd42c3a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xafccb724e3aec1657fc9514e3e53a0e71e80622d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x4425742f1ec8d98779690b5a3a6276db85ddc01a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xec70dcb4a1efa46b8f2d97c310c9c4790ba5ffa8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3419875b4d3bca7f3fdda2db7a476a79fd31b4fe - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3b60ff35d3f7f62d636b067dd0dc0dfdad670e4e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x58b9cb810a68a7f3e1e4f8cb45d1b9b3c79705e8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xfa5ed56a203466cbbc2430a43c66b9d8723528e7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x95146881b86b3ee99e63705ec87afe29fcc044d9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x088cd8f5ef3652623c22d48b1605dcfe860cd704 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xbfd5206962267c7b4b4a8b3d76ac2e1b2a5c4d5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x6daf586b7370b14163171544fca24abcc0862ac5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x9d2f299715d94d8a7e6f5eaa8e654e8c74a988a7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x580e933d90091b9ce380740e3a4a39c67eb85b4c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x655a6beebf2361a19549a99486ff65f709bd2646 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x9e64d3b9e8ec387a9a58ced80b71ed815f8d82b5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x2297aebd383787a160dd0d9f71508148769342e3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x6694340fc020c5e6b96567843da2df01b2ce1eb6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x772598e9e62155d7fdfe65fdf01eb5a53a8465be - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x431402e8b9de9aa016c743880e04e517074d8cec - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd74f5255d557944cf7dd0e45ff521520002d5748 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x6fd58f5a2f3468e35feb098b5f59f04157002407 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x561877b6b3dd7651313794e5f2894b2f18be0766 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xf9ca0ec182a94f6231df9b14bd147ef7fb9fa17c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd77b108d4f6cefaa0cae9506a934e825becca46e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd56734d7f9979dd94fae3d67c7e928234e71cd4c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xf1264873436a0771e440e2b28072fafcc5eebd01 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x5575552988a3a80504bbaeb1311674fcfd40ad4b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x0341c0c0ec423328621788d4854119b97f44e391 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x764bfc309090e7f93edce53e5befa374cdcb7b8e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xaaa6c1e32c55a7bfa8066a6fae9b42650f262418 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x9e20461bc2c4c980f62f1b279d71734207a6a356 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x7fb7ede54259cb3d4e1eaf230c7e2b1ffc951e9a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3a18dcc9745edcd1ef33ecb93b0b6eba5671e7ca - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x000000000026839b3f4181f2cf69336af6153b99 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x8b0e6f19ee57089f7649a455d89d7bc6314d04e8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x31c91d8fb96bff40955dd2dbc909b36e8b104dde - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x25d887ce7a35172c62febfd67a1856f20faebb00 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd4d42f0b6def4ce0383636770ef773390d85c61a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xf8388c2b6edf00e2e27eef5200b1befb24ce141d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x619c82392cb6e41778b7d088860fea8447941f4c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x94025780a1ab58868d9b2dbbb775f44b32e8e6e5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xad4b9c1fbf4923061814dd9d5732eb703faa53d4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd7a892f28dedc74e6b7b33f93be08abfc394a360 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3269a3c00ab86c753856fd135d97b87facb0d848 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x4568ca00299819998501914690d6010ae48a59ba - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x21e60ee73f17ac0a411ae5d690f908c3ed66fe12 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xd3188e0df68559c0b63361f6160c57ad88b239d8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x2b41806cbf1ffb3d9e31a9ece6b738bf9d6f645f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xf19547f9ed24aa66b03c3a552d181ae334fbb8db - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x35e6a59f786d9266c7961ea28c7b768b33959cbb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x59a729658e9245b0cf1f8cb9fb37945d2b06ea27 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xb56c29413af8778977093b9b4947efeea7136c36 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x43ab8f7d2a8dd4102ccea6b438f6d747b1b9f034 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x1d987200df3b744cfa9c14f713f5334cb4bc4d5d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3404149e9ee6f17fb41db1ce593ee48fbdcd9506 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x080f6aed32fc474dd5717105dba5ea57268f46eb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xb5a628803ee72d82098d4bcaf29a42e63531b441 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x1622bf67e6e5747b81866fe0b85178a93c7f86e3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x7dd747d63b094971e6638313a6a2685e80c7fb2e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xa2f9ecf83a48b86265ff5fd36cdbaaa1f349916c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x17a8541b82bf67e10b0874284b4ae66858cb1fd5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xbcd4d5ac29e06e4973a1ddcd782cd035d04bc0b7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x42069d11a2cc72388a2e06210921e839cfbd3280 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xbbea044f9e7c0520195e49ad1e561572e7e1b948 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xe85b662fe97e8562f4099d8a1d5a92d4b453bf30 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x3d9907f9a368ad0a51be60f7da3b97cf940982d8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x4e51ac49bc5e2d87e0ef713e9e5ab2d71ef4f336 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x4200000000000000000000000000000000000006 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x7f5c764cbc14f9669b88837ca1490cca17c31607 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x4200000000000000000000000000000000000042 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x0b2c639c533813f4aa9d7837caf62653d097ff85 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x1f32b1c2345538c0c6f582fcb022739c4a194ebb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x68f180fcce6836688e9084f035309e29bf0a2095 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x94b008aa00579c1307b0ef2c499ad98a8ce58e58 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x8700daec35af8ff88c16bdf0418774cb3d7599b4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x920cf626a271321c151d027030d5d08af699456b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x6c84a8f1c29108f47a79964b5fe888d4f4d0de40 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x9e1028f5f1d5ede59748ffcee5532509976840e0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xeb466342c4d449bc9f53a865d5cb90586f405215 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x17aabf6838a6303fc6e9c5a227dc1eb6d95c829a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xf467c7d5a4a9c4687ffc7986ac6ad5a4c81e1404 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x76fb31fb4af56892a25e32cfc43de717950c9278 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xc5b001dc33727f8f26880b184090d3e252470d45 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x9560e827af36c94d2ac33a39bce1fe78631088db - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x9bcef72be871e61ed4fbbc7630889bee758eb81d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x50c5725949a6f0c72e6c4a641f24049a917db0cb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xf98dcd95217e15e05d8638da4c91125e59590b07 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x4b03afc91295ed778320c2824bad5eb5a1d852dd - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xc40f949f8a4e094d1b49a23ea9241d289b7b2819 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x323665443cef804a3b5206103304bd4872ea4253 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x50bce64397c75488465253c0a034b8097fea6578 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x296f55f8fb28e498b858d0bcda06d955b2cb3f97 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x2598c30330d5771ae9f983979209486ae26de875 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x0994206dfe8de6ec6920ff4d779b0d950605fb53 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xc3248a1bd9d72fa3da6e6ba701e58cbf818354eb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x6fd9d7ad17242c41f7131d257212c54a0e816691 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x14778860e937f509e651192a90589de711fb88a9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xdfa46478f9e5ea86d57387849598dbfb2e964b02 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x9b88d293b7a791e40d36a39765ffd5a1b9b5c349 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x3eb398fec5f7327c6b15099a9681d9568ded2e82 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x217d47011b23bb961eb6d93ca9945b7501a5bb11 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xbfd5206962267c7b4b4a8b3d76ac2e1b2a5c4d5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x1cef2d62af4cd26673c7416957cc4ec619a696a7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x9fd22a17b4a96da3f83797d122172c450381fb88 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0xaddb6a0412de1ba0f936dcaeb8aaa24578dcf3b2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x2791bca1f2de4661ed88a30c99a7a9449aa84174 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x3c499c542cef5e3811e1192ce70d8cc03d5c3359 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xc2132d05d31c914a87c6611c10748aeb04b58e8f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x61299774020da444af134c82fa83e3810b309991 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xd6df932a45c0f255f85145f286ea0b292b21c90b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x2ad2934d5bfb7912304754479dd1f096d5c807da - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xc3c7d422809852031b44ab29eec9f1eff2a58756 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x8f3cf7ad23cd3cadbd9735aff958023239c6a063 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x750e4c4984a9e0f12978ea6742bc1c5d248f40ed - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x111111517e4929d3dcbdfa7cce55d30d4b6bc4d6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xd0258a3fd00f38aa8090dfee343f10a9d4d30d3f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x430ef9263e76dae63c84292c3409d61c598e9682 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xb33eaad8d922b1083446dc23f610c2567fb5180f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xdc3326e71d45186f113a2f448984ca0e8d201995 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x311434160d7537be358930def317afb606c0d737 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe3f2b1b2229c0333ad17d03f179b87500e7c5e01 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xac0f66379a6d7801d7726d5a943356a172549adb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xf88332547c680f755481bf489d890426248bb275 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe5417af564e4bfda1c483642db72007871397896 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe261d618a959afffd53168cd07d12e37b26761db - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe0b52e49357fd4daf2c15e02058dce6bc0057db4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xbbba073c31bf03b8acf7c28ef0738decf3695683 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe238ecb42c424e877652ad82d8a939183a04c35f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x3b56a704c01d650147ade2b8cee594066b3f9421 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x5fe2b58c013d7601147dcdd68c143a77499f5531 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x172370d5cd63279efa6d502dab29171933a610af - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x53df32548214f51821cf1fe4368109ac5ddea1ff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xff76c0b48363a7c7307868a81548d340049b0023 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x6f8a06447ff6fcf75d803135a7de15ce88c1d4ec - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x50b728d8d964fd00c2d0aad81718b71311fef68a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x3a58a54c066fdc0f2d55fc9c89f0415c92ebf3c4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x03b54a6e9a984069379fae1a4fc4dbae93b3bccd - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xd93f7e271cb87c23aaa73edc008a79646d1f9912 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x200c234721b5e549c3693ccc93cf191f90dc2af9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x11cd37bb86f65419713f30673a480ea33c826872 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x8a16d4bf8a0a716017e8d2262c4ac32927797a2f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x190eb8a183d22a4bdf278c6791b152228857c033 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x2f6f07cdcf3588944bf4c42ac74ff24bf56e7590 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x235737dbb56e8517391473f7c964db31fa6ef280 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x0b220b82f3ea3b7f6d9a1d8ab58930c064a2b5bf - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x8bff1bd27e2789fe390acabc379c380a83b68e84 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xb58458c52b6511dc723d7d6f3be8c36d7383b4a8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x323665443cef804a3b5206103304bd4872ea4253 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x2760e46d9bb43dafcbecaad1f64b93207f9f0ed7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x18ec0a6e18e5bc3784fdd3a3634b31245ab704f6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x431d5dff03120afa4bdf332c61a6e1766ef37bdb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x6f7c932e7684666c9fd1d44527765433e01ff61d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xeee3371b89fc43ea970e908536fcddd975135d8a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe5b49820e5a1063f6f4ddf851327b5e8b2301048 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xaa3717090cddc9b227e49d0d84a28ac0a996e6ff - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x62a872d9977db171d9e213a5dc2b782e72ca0033 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x381caf412b45dac0f62fbeec89de306d3eabe384 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe0bceef36f3a6efdd5eebfacd591423f8549b9d5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x23d29d30e35c5e8d321e1dc9a8a61bfd846d4c5c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x282d8efce846a88b159800bd4130ad77443fa1a1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x74dd45dd579cad749f9381d6227e7e02277c944b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x714db550b574b3e927af3d93e26127d15721d4c2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xfa68fb4628dff1028cfec22b4162fccd0d45efb6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe631dabef60c37a37d70d3b4f812871df663226f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xdb725f82818de83e99f1dac22a9b5b51d3d04dd4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x3c59798620e5fec0ae6df1a19c6454094572ab92 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x0d0b8488222f7f83b23e365320a4021b12ead608 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xa380c0b01ad15c8cf6b46890bddab5f0868e87f3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x8a953cfe442c5e8855cc6c61b1293fa648bae472 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x45c32fa6df82ead1e2ef74d17b76547eddfaff89 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x11cd72f7a4b699c67f225ca8abb20bc9f8db90c7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x0c9c7712c83b3c70e7c5e11100d33d9401bdf9dd - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x77a6f2e9a9e44fd5d5c3f9be9e52831fc1c3c0a0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xbfc70507384047aa74c29cdc8c5cb88d0f7213ac - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xfcb54da3f4193435184f3f647467e12b50754575 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x9a6a40cdf21a0af417f1b815223fd92c85636c58 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe111178a87a3bff0c8d18decba5798827539ae99 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x82617aa52dddf5ed9bb7b370ed777b3182a30fd1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x2ab0e9e4ee70fff1fb9d67031e44f6410170d00e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xa486c6bc102f409180ccb8a94ba045d39f8fc7cb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xc4a206a306f0db88f98a3591419bc14832536862 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xf0059cc2b3e980065a906940fbce5f9db7ae40a7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x16eccfdbb4ee1a85a33f3a9b21175cd7ae753db4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x553d3d295e0f695b9228246232edf400ed3560b5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x14af1f2f02dccb1e43402339099a05a5e363b83c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x7bdf330f423ea880ff95fc41a280fd5ecfd3d09f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x8505b9d2254a7ae468c0e9dd10ccea3a837aef5c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe2aa7db6da1dae97c5f5c6914d285fbfcc32a128 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xb7b31a6bc18e48888545ce79e83e06003be70930 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x1631244689ec1fecbdd22fb5916e920dfc9b8d30 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xf6372cdb9c1d3674e83842e3800f2a62ac9f3c66 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x692ac1e363ae34b6b489148152b12e2785a3d8d6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x0266f4f08d82372cf0fcbccc0ff74309089c74d1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x7fbc10850cae055b27039af31bd258430e714c62 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xa3fa99a148fa48d14ed51d610c367c61876997f1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x9dbfc1cbf7a1e711503a29b4b5f9130ebeccac96 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x236aa50979d5f3de3bd1eeb40e81137f22ab794b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xf86df9b91f002cfeb2aed0e6d05c4c4eaef7cf02 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x4200000000000000000000000000000000000006 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x6921b130d297cc43754afba22e5eac0fbf8db75b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x5babfc2f240bc5de90eb7e19d789412db1dec402 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x532f27101965dd16442e59d40670faf5ebb142e4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x4ed4e862860bed51a9570b96d89af5e1b0efefed - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xac1bd2486aaf3b5c0fc3fd868558b082a531b2b4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x0d97f261b1e88845184f678e2d1e7a98d9fd38de - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8129b94753f22ec4e62e2c4d099ffe6773969ebc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x3f14920c99beb920afa163031c4e47a3e03b3e4a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x940181a94a35a4569e4529a3cdfb74e38fd98631 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x3419875b4d3bca7f3fdda2db7a476a79fd31b4fe - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xa067436db77ab18b1a315095e4b816791609897c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xafb89a09d82fbde58f18ac6437b3fc81724e4df6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x489fe42c267fe0366b16b0c39e7aeef977e841ef - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xdc46c1e93b71ff9209a0f8076a9951569dc35855 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x91f45aa2bde7393e0af1cc674ffe75d746b93567 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x236aa50979d5f3de3bd1eeb40e81137f22ab794b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xf6e932ca12afa26665dc4dde7e27be02a7c02e50 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x524d524b4c9366be706d3a90dcf70076ca037ae3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x5b5dee44552546ecea05edea01dcd7be7aa6144a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x2598c30330d5771ae9f983979209486ae26de875 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xfa980ced6895ac314e7de34ef1bfae90a5add21b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x469fda1fb46fcb4befc0d8b994b516bd28c87003 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x4e496c0256fb9d4cc7ba2fdf931bc9cbb7731660 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x27d2decb4bfc9c76f0309b8e88dec3a601fe25a8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xbfd5206962267c7b4b4a8b3d76ac2e1b2a5c4d5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x9e1028f5f1d5ede59748ffcee5532509976840e0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x3c3aa127e6ee3d2f2e432d0184dd36f2d2076b52 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xba5e6fa2f33f3955f0cef50c63dcc84861eab663 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x97c806e7665d3afd84a8fe1837921403d59f3dcc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8ee73c484a26e0a5df2ee2a4960b789967dd0415 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x00e57ec29ef2ba7df07ad10573011647b2366f6d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8f019931375454fe4ee353427eb94e2e0c9e0a8c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x93e6407554b2f02640ab806cd57bd83e848ec65d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x55d398326f99059ff775485246999027b3197955 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x2170ed0880ac9a755fd29b2688956bd959f933f8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xfdc66a08b0d0dc44c17bbd471b88f49f50cdd20f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xe9e7cea3dedca5984780bafc599bd69add087d56 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xfa54ff1a158b5189ebba6ae130ced6bbd3aea76e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x570a5d26f7765ecb712c0924e4de545b89fd43df - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x47c454ca6be2f6def6f32b638c80f91c9c3c5949 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xad86d0e9764ba90ddd68747d64bffbd79879a238 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xd691d9a68c887bdf34da8c36f63487333acfd103 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x1294f4183763743c7c9519bec51773fb3acd78fd - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xb04906e95ab5d797ada81508115611fee694c2b3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x111111111117dc0aa78b770fa6a738034120c302 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xcc42724c6683b7e57334c4e856f4c9965ed682bd - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x90c97f71e18723b0cf0dfa30ee176ab653e89f40 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x2b72867c32cf673f7b02d208b26889fed353b1f8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x031b41e504677879370e9dbcf937283a8691fa7f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x1ce0c2827e2ef14d5c4f29a091d735a204794041 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xcf3bb6ac0f6d987a5727e2d15e39c2d6061d5bec - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x8ff795a6f4d97e7887c79bea79aba5cc76444adf - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x2dff88a56767223a5529ea5960da7a3f5f766406 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x003d87d02a2a01e9e8a20f507c83e15dd83a33d1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x4b0f1812e5df2a09796481ff14017e6005508003 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xbf5140a22578168fd562dccf235e5d43a02ce9b1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xca1c644704febf4ab81f85daca488d1623c28e63 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x51e72dd1f2628295cc2ef931cb64fdbdc3a0c599 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xbbca42c60b5290f2c48871a596492f93ff0ddc82 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x555296de6a86e72752e5c5dc091fe49713aa145c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x0808bf94d57c905f1236212654268ef82e1e594e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x8457ca5040ad67fdebbcc8edce889a335bc0fbfb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xcebef3df1f3c5bfd90fde603e71f31a53b11944d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x90ed8f1dc86388f14b64ba8fb4bbd23099f18240 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x9840652dc04fb9db2c43853633f0f62be6f00f98 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xba2ae424d960c26247dd6c32edc70b295c744c43 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x0782b6d8c4551b9760e74c0545a9bcd90bdc41e5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xbe2b6c5e31f292009f495ddbda88e28391c9815e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x8f0528ce5ef7b51152a59745befdd91d97091d2f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xffeecbf8d7267757c2dc3d13d730e97e15bfdf7f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x0eb3a705fc54725037cc9e008bdede697f62f335 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xf21768ccbc73ea5b6fd3c687208a7c2def2d966e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x0000028a2eb8346cd5c0267856ab7594b7a55308 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x76a797a59ba2c17726896976b7b3747bfd1d220f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xc79d1fd14f514cd713b5ca43d288a782ae53eab2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xad29abb318791d579433d831ed122afeaf29dcfe - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x3203c9e46ca618c8c1ce5dc67e7e9d75f5da2377 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xdb021b1b247fe2f1fa57e0a87c748cc1e321f07f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x7083609fce4d1d8dc0c979aab8c869ea2c873402 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xc5f0f7b66764f6ec8c8dff7ba683102295e16409 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xe29142e14e52bdfbb8108076f66f49661f10ec10 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xb0d502e938ed5f4df2e681fe6e419ff29631d62b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x6730f7a6bbb7b9c8e60843948f7feb4b6a17b7f7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x1613957159e9b0ac6c80e824f7eea748a32a0ae2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/celo/0x471ece3750da237f93b8e339c536989b8978a438 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/celo/0x765de816845861e75a25fca122bb6898b8b1282a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/celo/0x66803fb87abd4aac3cbb3fad7c3aa01f6f3fb207 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/celo/0xd8763cba276a3738e6de85b4b3bf5fded6d6ca73 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/celo/0x37f750b7cc259a2f741af45294f6a16572cf5cad - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/celo/0xd71ffd0940c920786ec4dbb5a12306669b5b81ef - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/celo/0xe8537a3d056da446677b9e9d6c5db704eaab4787 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/celo/0x4f604735c1cf31399c6e711d5962b2b3e0225ad3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/celo/0x02de4766c272abc10bc88c220d214a26960a7e92 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/celo/0xceba9300f2b948710d2653dd7b07f33a8b32118c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/celo/0xc16b81af351ba9e64c1a069e3ab18c244a1e3049 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x728f30fa2f100742c7949d1961804fa8e0b1387d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x41ea5d41eeacc2d5c4072260945118a13bb7ebce - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf21661d0d1d76d3ecb8e1b9f1c923dbfffae4097 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xb0ecc6ac0073c063dcfc026ccdc9039cae2998e1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x00f932f0fe257456b32deda4758922e56a4f4b42 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xa4af354d466e8a68090dd9eb2cb7caf162f4c8c2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xba50933c268f567bdc86e1ac131be072c6b0b71a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd29da236dd4aac627346e1bba06a619e8c22d7c5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1bfce574deff725a3f483c334b790e25c8fa9779 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x9e18d5bab2fa94a6a95f509ecb38f8f68322abd3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xbf5495efe5db9ce00f80364c8b423567e58d2110 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x065b4e5dfd50ac12a81722fd0a0de81d78ddf7fb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x57e114b691db790c35207b2e685d4a43181e6061 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x0b7f0e51cd1739d6c96982d55ad8fa634dd43a9c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xc56c7a0eaa804f854b536a5f3d5f49d2ec4b12b8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x594daad7d77592a2b97b725a7ad59d7e188b5bfa - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x8355dbe8b0e275abad27eb843f3eaf3fc855e525 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x2a961d752eaa791cbff05991e4613290aec0d9ac - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x38e68a37e401f7271568cecaac63c6b1e19130b4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1131d427ecd794714ed00733ac0f851e904c8398 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x1495bc9e44af1f8bcb62278d2bec4540cf0c05ea - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x808507121b80c02388fad14726482e061b8da827 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x44971abf0251958492fee97da3e5c5ada88b9185 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x320623b8e4ff03373931769a31fc52a4e78b5d70 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x6e5970dbd6fc7eb1f29c6d2edf2bc4c36124c0c1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd40c688da9df74e03566eaf0a7c754ed98fbb8cc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x8afe4055ebc86bd2afb3940c0095c9aca511d852 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x9ce84f6a69986a83d92c324df10bc8e64771030f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xbe4d9c8c638b5f0864017d7f6a04b66c42953847 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x68bbed6a47194eff1cf514b50ea91895597fc91e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x69420e3a3aa9e17dea102bb3a9b3b73dcddb9528 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x7420b4b9a0110cdc71fb720908340c03f9bc03ec - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x03aa6298f1370642642415edc0db8b957783e8d6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd533a949740bb3306d119cc777fa900ba034cd52 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf14dd7b286ce197019cba54b189d2b883e70f761 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xa35923162c49cf95e6bf26623385eb431ad920d3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x8cefbeb2172a9382753de431a493e21ba9694004 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x120a3879da835a5af037bb2d1456bebd6b54d4ba - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x69457a1c9ec492419344da01daf0df0e0369d5d0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf6ce4be313ead51511215f1874c898239a331e37 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x73d7c860998ca3c01ce8c808f5577d94d545d1b4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xeff49b0f56a97c7fd3b51f0ecd2ce999a7861420 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x236501327e701692a281934230af0b6be8df3353 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x5026f006b85729a8b14553fae6af249ad16c9aab - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x66761fa41377003622aee3c7675fc7b5c1c2fac5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x9f9c8ec3534c3ce16f928381372bfbfbfb9f4d24 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xd8c978de79e12728e38aa952a6cb4166f891790f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x7122985656e38bdc0302db86685bb972b145bd3c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x582d872a1b094fc48f5de31d3b73f2d9be47def1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x504624040e0642921c2c266a9ac37cafbd8cda4e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xc548e90589b166e1364de744e6d35d8748996fe8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x4c11249814f11b9346808179cf06e71ac328c1b5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x423f4e6138e475d85cf7ea071ac92097ed631eea - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0x8390a1da07e376ef7add4be859ba74fb83aa02d5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xf94e7d0710709388bce3161c32b4eea56d3f91cc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/ethereum/0xaa95f26e30001251fb905d264aa7b00ee9df6c18 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x2416092f143378750bb29b79ed961ab195cceea5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x6c84a8f1c29108f47a79964b5fe888d4f4d0de40 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x71eeba415a523f5c952cc2f06361d5443545ad28 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x88a269df8fe7f53e590c561954c52fccc8ec0cfb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x429fed88f10285e61b12bdf00848315fbdfcc341 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xb299751b088336e165da313c33e3195b8c6663a6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xf0a479c9c3378638ec603b8b6b0d75903902550b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xb59c8912c83157a955f9d715e556257f432c35d7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xba0dda8762c24da9487f5fa026a9b64b695a07ea - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xc24a365a870821eb83fd216c9596edd89479d8d7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xa586b3b80d7e3e8d439e25fbc16bc5bcee3e2c85 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xef04804e1e474d3f9b73184d7ef5d786f3fce930 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x2e9a6df78e42a30712c10a9dc4b1c8656f8f2879 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x13a7dedb7169a17be92b0e3c7c2315b46f4772b3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0x1dd6b5f9281c6b4f043c02a83a46c2772024636c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xf525e73bdeb4ac1b0e741af3ed8a8cbb43ab0756 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xe4177c1400a8eee1799835dcde2489c6f0d5d616 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xed5740209fcf6974d6f3a5f11e295b5e468ac27c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/arbitrum/0xe10d4a4255d2d35c9e23e2c4790e073046fbaf5c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x10398abc267496e49106b07dd6be13364d10dc71 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x2218a117083f5b482b0bb821d27056ba9c04b1d3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x395ae52bb17aef68c2888d941736a71dc6d4e125 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/optimism/0x9a601c5bb360811d96a23689066af316a30c3027 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xbac3368b5110f3a3dda8b5a0f7b66edb37c47afe - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x1d3c629ca5c1d0ab3bdf74600e81b4145615df8e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xe9c21de62c5c5d0ceacce2762bf655afdceb7ab3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x658cda444ac43b0a7da13d638700931319b64014 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x3d2bd0e15829aa5c362a4144fdf4a1112fa29b5c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x3fb83a9a2c4408909c058b0bfe5b4823f54fafe2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x00e5646f60ac6fb446f621d146b6e1886f002905 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x12a4cebf81f8671faf1ab0acea4e3429e42869e7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x9ff62d1fc52a907b6dcba8077c2ddca6e6a9d3e1 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0xc61f39418cd27820b5d4e9ba4a7197eefaeb8b05 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x15b7c0c907e4c6b9adaaaabc300c08991d6cea05 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x7f67639ffc8c93dd558d452b8920b28815638c44 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/polygon/0x276c9cbaa4bdf57d7109a41e67bd09699536fa3d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x041fdf3f472d2c8a7ecc458fc3b7f543e6c57ef7 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x3c281a39944a2319aa653d81cfd93ca10983d234 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x96419929d7949d6a801a6909c145c8eef6a40431 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xfea9dcdc9e23a9068bf557ad5b186675c61d33ea - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xdb6e0e5094a25a052ab6845a9f1e486b9a9b3dde - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xcde172dc5ffc46d228838446c57c1227e0b82049 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xff0c532fdb8cd566ae169c1cb157ff2bdc83e105 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x9a26f5433671751c3276a065f57e5a02d2817973 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x3636a7734b669ce352e97780df361ce1f809c58c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x50c5725949a6f0c72e6c4a641f24049a917db0cb - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xe3086852a4b125803c815a158249ae468a3254ca - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xbeb0fd48c2ba0f1aacad2814605f09e08a96b94e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xbc45647ea894030a4e9801ec03479739fa2485f0 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x768be13e1680b5ebe0024c42c896e3db59ec0149 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x928a6a9fc62b2c94baf2992a6fba4715f5bb0066 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xbf4db8b7a679f89ef38125d5f84dd1446af2ea3b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xed899bfdb28c8ad65307fa40f4acab113ae2e14c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x1b6a569dd61edce3c383f6d565e2f79ec3a12980 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x76734b57dfe834f102fb61e1ebf844adf8dd931e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x4621b7a9c75199271f773ebd9a499dbd165c3191 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xaf07d812d1dcec20bf741075bc18660738d226dd - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x7f12d13b34f5f4f0a9449c16bcd42f0da47af200 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x55a6f6cb50db03259f6ab17979a4891313be2f45 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x968d6a288d7b024d5012c0b25d67a889e4e3ec19 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x7a8a5012022bccbf3ea4b03cd2bb5583d915fb1a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xcde90558fc317c69580deeaf3efc509428df9080 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x0028e1e60167b48a938b785aa5292917e7eaca8b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x76e7447bafa3f0acafc9692629b1d1bc937ca15d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x15ac90165f8b45a80534228bdcb124a011f62fee - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x4045b33f339a3027af80013fb5451fdbb01a4492 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xddf98aad8180c3e368467782cd07ae2e3e8d36a5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x698dc45e4f10966f6d1d98e3bfd7071d8144c233 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x3c8665472ec5af30981b06b4e0143663ebedcc1e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x18a8bd1fe17a1bb9ffb39ecd83e9489cfd17a022 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xba0dda8762c24da9487f5fa026a9b64b695a07ea - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x13741c5df9ab03e7aa9fb3bf1f714551dd5a5f8a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xebff2db643cf955247339c8c6bcd8406308ca437 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xfadb26be94c1f959f900bf88cd396b3e803481d6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x52c2b317eb0bb61e650683d2f287f56c413e4cf6 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x38d513ec43dda20f323f26c7bef74c5cf80b6477 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x33ad778e6c76237d843c52d7cafc972bb7cf8729 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x290814ad0fbd2b935f34d7b40306102313d4c63e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x5e432eecd01c12ee7071ee9219c2477a347da192 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xbdf5bafee1291eec45ae3aadac89be8152d4e673 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xff62ddfa80e513114c3a0bf4d6ffff1c1d17aadf - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8c81b4c816d66d36c4bf348bdec01dbcbc70e987 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x6b82297c6f1f9c3b1f501450d2ee7c37667ab70d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x42069babe14fb1802c5cb0f50bb9d2ad6fef55e2 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x72499bddb67f4ca150e1f522ca82c87bc9fb18c8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x0578d8a44db98b23bf096a382e016e29a5ce0ffe - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8fe815417913a93ea99049fc0718ee1647a2a07c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x7d12aeb5d96d221071d176980d23c213d88d9998 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xb166e8b140d35d9d8226e40c09f757bac5a4d87d - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8853f0c059c27527d33d02378e5e4f6d5afb574a - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xf3c052f2baab885c610a748eb01dfbb643ba835b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xcd1cffa8ebc66f1a2cf7675b48ba955ffcb82d8e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xde7a416ac821c77478340eebaa21b68297025ef3 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x2da56acb9ea78330f947bd57c54119debda7af71 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8972ab69d499b5537a31576725f0af8f67203d38 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x88faea256f789f8dd50de54f9c807eef24f71b16 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x42069de48741db40aef864f8764432bbccbd0b69 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x9a27c6759a6de0f26ac41264f0856617dec6bc3f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xfaa4f3bcfc87d791e9305951275e0f62a98bcb10 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xfd9fa4f785331ce88b5af8994a047ba087c705d8 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x21eceaf3bf88ef0797e3927d855ca5bb569a47fc - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x7d9ce55d54ff3feddb611fc63ff63ec01f26d15f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x4229c271c19ca5f319fb67b4bc8a40761a6d6299 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x80f45eacf6537498ecc660e4e4a2d2f99e195cf4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x1a475d06d967aeb686c98de80d079d72097aeacf - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x4fb9b20dafe45d91ae287f2e07b2e79709308178 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xd3741ac9b3f280b0819191e4b30be4ecd990771e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x09579452bc3872727a5d105f342645792bb8a82b - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x8a24d7260cd02d3dfd8eefb66bc17ad4b17d494c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xd88611a629265c9af294ffdd2e7fa4546612273e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x9a86980d3625b4a6e69d8a4606d51cbc019e2002 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x1c7a460413dd4e964f96d8dfc56e7223ce88cd85 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x776aaef8d8760129a0398cf8674ee28cefc0eab9 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x28e29ec91db66733a94ee8e3b86a6199117baf99 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xb9898511bd2bad8bfc23eba641ef97a08f27e730 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x76baa16ff15d61d32e6b3576c3a8c83a25c2f180 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x2816a491dd0b7a88d84cbded842a618e59016888 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0xa7ea9d5d4d4c7cf7dbde5871e6d108603c6942a5 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/base/0x586e10db93630a4d2da6c6a34ba715305b556f04 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xf486ad071f3bee968384d2e39e2d8af0fcf6fd46 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x76d36d44dc4595e8d2eb3ad745f175eda134284f - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x1fa4a73a3f0133f0025378af00236f3abdee5d63 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xb3ed0a426155b79b898849803e3b36552f7ed507 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x0ef4a107b48163ab4b57fca36e1352151a587be4 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x62694d43ccb9b64e76e38385d15e325c7712a735 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xa2b726b1145a4773f68593cf171187d8ebe4d495 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0xf275e1ac303a4c9d987a2c48b8e555a77fec3f1c - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/bnb/0x11a31b833d43853f8869c9eec17f60e3b4d2a753 - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z 0.8 https://app.uniswap.org/explore/tokens/celo/0x48065fbbe25f71c9282ddf5e1cd6d6a887483d5e - 2024-05-20T17:20:52.753Z + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xbadff0ef41d2a68f22de21eabca8a59aaf495cf0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1fdd61ef9a5c31b9a2abc7d39c139c779e8412af + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4ade2b180f65ed752b6f1296d0418ad21eb578c0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0c5cb676e38d6973837b9496f6524835208145a2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb69753c06bb5c366be51e73bfc0cc2e3dc07e371 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8143182a775c54578c8b7b3ef77982498866945d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x76e222b07c53d28b89b0bac18602810fc22b49a8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x18aaa7115705e8be94bffebde57af9bfc265b998 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7d8146cf21e8d7cbe46054e01588207b51198729 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xfe0c30065b384f05761f15d0cc899d4f9f9cc0eb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1ce270557c1f68cfb577b856766310bf8b47fd9c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x793a5d8b30aab326f83d20a9370c827fea8fdc51 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xff836a5821e69066c87e268bc51b849fab94240c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf4d2888d29d722226fafa5d9b24f9164c092421e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8ed97a637a790be1feff5e888d43629dc05408f6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x31c8eacbffdd875c74b94b077895bd78cf1e64a3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc55126051b22ebb829d00368f4b12bde432de5da + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8881562783028f5c1bcb985d2283d5e170d88888 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x67466be17df832165f8c80a5a120ccc652bd7e69 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd939212f16560447ed82ce46ca40a63db62419b5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x88417754ff7062c10f4e3a4ab7e9f9d9cbda6023 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x5afe3855358e112b5647b952709e6165e1c1eeee + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x02e7f808990638e9e67e1f00313037ede2362361 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd2bdaaf2b9cc6981fd273dcb7c04023bfbe0a7fe + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x112b08621e27e10773ec95d250604a041f36c582 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x32b053f2cba79f80ada5078cb6b305da92bde6e1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x5ac34c53a04b9aaa0bf047e7291fb4e8a48f2a18 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x26ebb8213fb8d66156f1af8908d43f7e3e367c1d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xe3b9cfb8ea8a4f1279fbc28d3e15b4d2d86f18a0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8207c1ffc5b6804f6024322ccf34f29c3541ae26 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x255f1b39172f65dc6406b8bee8b08155c45fe1b6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x092baadb7def4c3981454dd9c0a0d7ff07bcfc86 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x53bcf6698c911b2a7409a740eacddb901fc2a2c6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x2ac2b254bc18cd4999f64773a966e4f4869c34ee + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x17fc002b466eec40dae837fc4be5c67993ddbd6f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xc8a4eea31e9b6b61c406df013dd4fec76f21e279 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x498bf2b1e120fed3ad3d42ea2165e9b73f99c1e5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xe4dddfe67e7164b0fe14e218d80dc4c08edc01cb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x7c8a1a80fdd00c9cccd6ebd573e9ecb49bfa2a59 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x1debd73e752beaf79865fd6446b0c970eae7732f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xaf5db6e1cc585ca312e8c8f7c499033590cf5c98 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x65559aa14915a70190438ef90104769e5e890a00 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x7fb688ccf682d58f86d7e38e03f9d22e7705448b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x73cb180bf0521828d8849bc8cf2b920918e23032 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x2e3d870790dc77a83dd1d18184acc7439a53f475 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0xa00e3a3511aac35ca78530c85007afcd31753819 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x528cdc92eab044e1e39fe43b9514bfdab4412b98 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x4f604735c1cf31399c6e711d5962b2b3e0225ad3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x1c954e8fe737f99f68fa1ccda3e51ebdb291948c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xf50d05a1402d0adafa880d36050736f9f6ee7dee + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xab0b2ddb9c7e440fac8e140a89c0dbcbf2d7bbff + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x8bc3ec2e7973e64be582a90b08cadd13457160fe + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x64060ab139feaae7f06ca4e63189d86adeb51691 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x5ec03c1f7fa7ff05ec476d19e34a22eddb48acdc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x9627a3d6872be48410fcece9b1ddd344bf08c53e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x1ed02954d60ba14e26c230eec40cbac55fa3aeea + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x8d3419b9a18651f3926a205ee0b1acea1e7192de + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xb56d0839998fd79efcd15c27cf966250aa58d6d3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x81f91fe59ee415735d59bd5be5cca91a0ea4fa69 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x87c211144b1d9bdaa5a791b8099ea4123dc31d21 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf4210f93bc68d63df3286c73eba08c6414f40c0d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xece7b98bd817ee5b1f2f536daf34d0b6af8bb542 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x4c96a67b0577358894407af7bc3158fc1dffbeb5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x70737489dfdf1a29b7584d40500d3561bd4fe196 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x39353a32eceafe4979a8606512c046c3b6398cc4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x92fb1b7d9730b2f1bd4e2e91368c1eb6fdd2a009 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x174e33ef2effa0a4893d97dda5db4044cc7993a3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xfdc944fb59201fb163596ee5e209ebc8fa4dcdc5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x388e543a5a491e7b42e3fbcd127dd6812ea02d0d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x56a38e7216304108e841579041249feb236c887b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1804e3db872eed4141e482ff74c56862f2791103 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x9de16c805a3227b9b92e39a446f9d56cf59fe640 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xb8d98a102b0079b69ffbc760c8d857a31653e56e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x5d6812722c3693078e4a0dbe3e9affc27a0b2768 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x255f1b39172f65dc6406b8bee8b08155c45fe1b6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc2fe011c3885277c7f0e7ffd45ff90cadc8ecd12 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc1ffaef4e7d553bbaf13926e258a1a555a363a07 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x4e73420dcc85702ea134d91a262c8ffc0a72aa70 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xecaf81eb42cd30014eb44130b89bcd6d4ad98b92 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x4eae52907dba9c370e9ee99f0ce810602a4f2c63 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x25d887ce7a35172c62febfd67a1856f20faebb00 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x382ea807a61a418479318efd96f1efbc5c1f2c21 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6468e79a80c0eab0f9a2b574c8d5bc374af59414 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x3106a0a076bedae847652f42ef07fd58589e001f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd015422879a1308ba557510345e944b912b9ab73 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x5de8ab7e27f6e7a1fff3e5b337584aa43961beef + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xcf078da6e85389de507ceede0e3d217e457b9d49 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1bbf25e71ec48b84d773809b4ba55b6f4be946fb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7039cd6d7966672f194e8139074c3d5c4e6dcf65 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x943af17c37207c9d7a27d12cb5055542a0b7afa8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6d68015171eaa7af9a5a0a103664cf1e506ff699 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6942806d1b2d5886d95ce2f04314ece8eb825833 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x949d48eca67b17269629c7194f4b727d4ef9e5d6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9361adf2b72f413d96f81ff40d794b47ce13b331 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x3bb1be077f3f96722ae92ec985ab37fd0a0c4c51 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xdbb7a34bf10169d6d2d0d02a6cbb436cf4381bfa + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x66bff695f3b16a824869a8018a3a6e3685241269 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x85d19fb57ca7da715695fcf347ca2169144523a7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x069d89974f4edabde69450f9cf5cf7d8cbd2568d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0fe13ffe64b28a172c58505e24c0c111d149bd47 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x111111111117dc0aa78b770fa6a738034120c302 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xdc7ac5d5d4a9c3b5d8f3183058a92776dc12f4f3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x482702745260ffd69fc19943f70cffe2cacd70e9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc555d625828c4527d477e595ff1dd5801b4a600e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9eec1a4814323a7396c938bc86aec46b97f1bd82 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x87d73e916d7057945c9bcd8cdd94e42a6f47f776 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x067def80d66fb69c276e53b641f37ff7525162f6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xdd157bd06c1840fa886da18a138c983a7d74c1d7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xe80772eaf6e2e18b651f160bc9158b2a5cafca65 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xb6093b61544572ab42a0e43af08abafd41bf25a6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x35ca1e5a9b1c09fa542fa18d1ba4d61c8edff852 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x83e60b9f7f4db5cdb0877659b1740e73c662c55b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x4d01397994aa636bdcc65c9e8024bc497498c3bb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xc3abc47863524ced8daf3ef98d74dd881e131c38 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x4d15a3a2286d883af0aa1b3f21367843fac63e07 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xfb7f8a2c0526d01bfb00192781b7a7761841b16c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x3809dcdd5dde24b37abe64a5a339784c3323c44f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x85955046df4668e1dd369d2de9f3aeb98dd2a369 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x554cd6bdd03214b10aafa3e0d4d42de0c5d2937b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x4318cb63a2b8edf2de971e2f17f77097e499459d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xab9cb20a28f97e189ca0b666b8087803ad636b3c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x6a8ec2d9bfbdd20a7f5a4e89d640f7e7ceba4499 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x0169ec1f8f639b32eec6d923e24c2a2ff45b9dd6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xe161be4a74ab8fa8706a2d03e67c02318d0a0ad6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x4d58608eff50b691a3b76189af2a7a123df1e9ba + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x420b0fa3de2efcf2b2fd04152eb1df36a09717cd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1cd38856ee0fdfd65c757e530e3b1de3061008d3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xfad8cb754230dbfd249db0e8eccb5142dd675a0d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xda761a290e01c69325d12d82ac402e5a73d62e81 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xafb5d4d474693e68df500c9c682e6a2841f9661a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0b3e328455c4059eeb9e3f84b5543f74e24e7e1b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xfc5462143a3178cf044e97c491f6bcb5e38f173e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xed1978d01d4a8a9d6a43ac79403d5b8dfbed739b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xba71cb8ef2d59de7399745793657838829e0b147 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x10c1b6f768e13c624a4a23337f1a5ba5c9be0e4b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1b1514c76c54ce8807d7fdedf85c664eee734ece + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x58cd93c4a91c3940109fa27d700f5013b18b5dc2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xea6f7e7e0f46a9e0f4e2048eb129d879f609d632 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x30d19fb77c3ee5cfa97f73d72c6a1e509fa06aef + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xe2dca969624795985f2f083bcd0b674337ba130a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xbb7d61d2511fd2e63f02178ca9b663458af9fc63 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x59f4f336bf3d0c49dbfba4a74ebd2a6ace40539a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x62d0a8458ed7719fdaf978fe5929c6d342b0bfce + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb8fda5aee55120247f16225feff266dfdb381d4c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xca530408c3e552b020a2300debc7bd18820fb42f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x3ffeea07a27fab7ad1df5297fa75e77a43cb5790 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xcfeb09c3c5f0f78ad72166d55f9e6e9a60e96eec + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x467bccd9d29f223bce8043b84e8c8b282827790f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x2077d81d0c5258230d5a195233941547cb5f0989 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa0bbbe391b0d0957f1d013381b643041d2ca4022 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd1b89856d82f978d049116eba8b7f9df2f342ff3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x62f03b52c377fea3eb71d451a95ad86c818755d1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x3927fb89f34bbee63351a6340558eebf51a19fb8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xacd2c239012d17beb128b0944d49015104113650 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x86b69f38bea3e02f68ff88534bc61ec60e772b19 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6873c95307e13beb58fb8fcddf9a99667655c9e4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x18084fba666a33d37592fa2633fd49a74dd93a88 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6e79b51959cf968d87826592f46f819f92466615 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x80ee5c641a8ffc607545219a3856562f56427fe9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0414d8c87b271266a5864329fb4932bbe19c0c49 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf57e7e7c23978c3caec3c3548e3d615c346e79ff + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xb0ffa8000886e57f86dd5264b9582b2ad87b2b91 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x1c986661170c1834db49c3830130d4038eeeb866 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x9ed7e4b1bff939ad473da5e7a218c771d1569456 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x7f9a7db853ca816b9a138aee3380ef34c437dee0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x371c7ec6d8039ff7933a2aa28eb827ffe1f52f07 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xb1bc21f748ae2be95674876710bc6d78235480e0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xadf5dd3e51bf28ab4f07e684ecf5d00691818790 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x1eba7a6a72c894026cd654ac5cdcf83a46445b08 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x38022a157b95c52d43abcac9bd09f028a1079105 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xd2507e7b5794179380673870d88b22f94da6abe0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xc708d6f2153933daa50b2d0758955be0a93a8fec + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x0052074d3eb1429f39e5ea529b54a650c21f5aa4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x4e78011ce80ee02d2c3e649fb657e45898257815 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x7583feddbcefa813dc18259940f76a02710a8905 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xe78aee6ccb05471a69677fb74da80f5d251c042b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x04f177fcacf6fb4d2f95d41d7d3fee8e565ca1d0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xa6da8c8999c094432c77e7d318951d34019af24b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x6d3b8c76c5396642960243febf736c6be8b60562 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x7cf7132ede0ca592a236b6198a681bb7b42dd5ae + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x3afeae00a594fbf2e4049f924e3c6ac93296b6e8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0a93a7be7e7e426fc046e204c44d6b03a302b631 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc9b6ef062fab19d3f1eabc36b1f2e852af1acd18 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1754e5aadce9567a95f545b146a616ce34eead53 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xdb173587d459ddb1b9b0f2d6d88febef039304a2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x10a7a84c91988138f8dbbc82a23b02c8639e2552 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x92af6f53febd6b4c6f5293840b6076a1b82c4bc2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xeb9e49fb4c33d9f6aefb1b03f9133435e24c0ec6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1b2c141479757b8643a519be4692904088d860b2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x4d25e94291fe8dcfbfa572cbb2aaa7b755087c91 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x8e0e798966382e53bfb145d474254cbe065c17dc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x4b6f82a4ed0b9e3767f53309b87819a78d041a7f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x004aa1586011f3454f487eac8d0d5c647d646c69 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x741777f6b6d8145041f73a0bddd35ae81f55a40f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xc6c58f600917de512cd02d2b6ed595ab54b4c30f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x03aa6298f1370642642415edc0db8b957783e8d6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x3ee2200efb3400fabb9aacf31297cbdd1d435d47 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x0d8ce2a99bb6e3b7db580ed848240e4a0f9ae153 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xa697e272a73744b343528c3bc4702f2565b2f422 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x301af3eff0c904dc5ddd06faa808f653474f7fcc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x776f9987d9deed90eed791cbd824d971fd5ccf09 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xf7de7e8a6bd59ed41a4b5fe50278b3b7f31384df + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x19e6bfc1a6e4b042fb20531244d47e252445df01 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x4338665cbb7b2485a8855a139b75d5e34ab0db94 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x2940566eb50f15129238f4dc599adc4f742d7d8e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xbb73bb2505ac4643d5c0a99c2a1f34b3dfd09d11 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x4ea98c1999575aaadfb38237dd015c5e773f75a2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/celo/0x1d18d0386f51ab03e7e84e71bda1681eba865f1f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x57b96d4af698605563a4653d882635da59bf11af + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd33526068d116ce69f19a9ee46f0bd304f21a51f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x2a5fa016ffb20c70e2ef36058c08547f344677aa + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xbe0ed4138121ecfc5c0e56b40517da27e6c5226b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9fd9278f04f01c6a39a9d1c1cd79f7782c6ade08 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x054c9d4c6f4ea4e14391addd1812106c97d05690 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7613c48e0cd50e42dd9bf0f6c235063145f6f8dc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x614da3b37b6f66f7ce69b4bbbcf9a55ce6168707 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x069e4aa272d17d9625aa3b6f863c7ef6cfb96713 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x24da31e7bb182cb2cabfef1d88db19c2ae1f5572 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7d4a23832fad83258b32ce4fd3109ceef4332af4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb58e61c3098d85632df34eecfb899a1ed80921cb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x67c4d14861f9c975d004cfb3ac305bee673e996e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x69babe9811cc86dcfc3b8f9a14de6470dd18eda4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x32f0d04b48427a14fb3cbc73db869e691a9fec6f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4cff49d0a19ed6ff845a9122fa912abcfb1f68a6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x51cb253744189f11241becb29bedd3f1b5384fdb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xcf4c91ecafc43c9f382db723ba20b82efa852821 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6968676661ac9851c38907bdfcc22d5dd77b564d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0d438f3b5175bebc262bf23753c1e53d03432bde + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb98d4c97425d9908e66e53a6fdf673acca0be986 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x68a47fe1cf42eba4a030a10cd4d6a1031ca3ca0a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8a370c951f34e295b2655b47bb0985dd08d8f718 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x525574c899a7c877a11865339e57376092168258 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd9a442856c234a39a81a089c06451ebaa4306a72 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x1c43d05be7e5b54d506e3ddb6f0305e8a66cd04e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xb766039cc6db368759c1e56b79affe831d0cc507 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x18c14c2d707b2212e17d1579789fc06010cfca23 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xe0ee18eacafddaeb38f8907c74347c44385578ab + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x56659245931cb6920e39c189d2a0e7dd0da2d57b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xb6a5ae40e79891e4deadad06c8a7ca47396df21c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x04565fe9aa3ae571ada8e1bebf8282c4e5247b2a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf8a99f2bf2ce5bb6ce4aafcf070d8723bc904aa2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x3b9728bd65ca2c11a817ce39a6e91808cceef6fd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x6797b6244fa75f2e78cdffc3a4eb169332b730cc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xe2c86869216ac578bd62a4b8313770d9ee359a05 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x47b464edb8dc9bc67b5cd4c9310bb87b773845bd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x28a730de97dc62a8c88363e0b1049056f1274a70 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xba5ede8d98ab88cea9f0d69918dde28dc23c2553 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x8319767a7b602f88e376368dca1b92d38869b9b4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x461ee40928677644b8195662ab91bcdaae6ef105 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x24569d33653c404f90af10a2b98d6e0030d3d267 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x22222bd682745cf032006394750739684e45a5f8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x9124577428c5bd73ad7636cbc5014081384f29d6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xaa6cccdce193698d33deb9ffd4be74eaa74c4898 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xe095780ba2a64a4efa7a74830f0b71656f0b0ad4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xb59c8912c83157a955f9d715e556257f432c35d7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x7771450ece9c61430953d2646f995e33a06c91f5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc48823ec67720a04a9dfd8c7d109b2c3d6622094 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x9ec02756a559700d8d9e79ece56809f7bcc5dc27 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x3593d125a4f7849a1b059e64f4517a86dd60c95d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xb0ffa8000886e57f86dd5264b9582b2ad87b2b91 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6985884c4392d348587b19cb9eaaf157f13271cd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa045fe936e26e1e1e1fb27c1f2ae3643acde0171 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xbeef698bd78139829e540622d5863e723e8715f1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x426a688ee72811773eb64f5717a32981b56f10c1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x873259322be8e50d80a4b868d186cc5ab148543a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x661c70333aa1850ccdbae82776bb436a0fcfeefb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0a2c375553e6965b42c135bb8b15a8914b08de0c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6fba952443be1de22232c824eb8d976b426b3c38 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1abaea1f7c830bd89acc67ec4af516284b1bc33c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb60fdf036f2ad584f79525b5da76c5c531283a1b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x5a3e6a77ba2f983ec0d371ea3b475f8bc0811ad5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x55296f69f40ea6d20e478533c15a6b08b654e758 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1a7e4e63778b4f12a199c062f3efdd288afcbce8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x45804880de22913dafe09f4980848ece6ecbaf78 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xe5018913f2fdf33971864804ddb5fca25c539032 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x6985884c4392d348587b19cb9eaaf157f13271cd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x2c650dab03a59332e2e0c0c4a7f726913e5028c1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x9aee3c99934c88832399d6c6e08ad802112ebeab + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x439c0cf1038f8002a4cad489b427e217ba4b42ad + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x6985884c4392d348587b19cb9eaaf157f13271cd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x6985884c4392d348587b19cb9eaaf157f13271cd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x6985884c4392d348587b19cb9eaaf157f13271cd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xb79dd08ea68a908a97220c76d19a6aa9cbde4376 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x4b61e2f1bbdee6d746209a693156952936f1702c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x7480527815ccae421400da01e052b120cc4255e9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x7466de7bb8b5e41ee572f4167de6be782a7fa75d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x298d411511a05dc1b559ed8f79c56bee06687b14 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x8e16d46cb2da01cdd49601ec73d7b0344969ae33 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x18dd5b087bca9920562aff7a0199b96b9230438b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x37f0c2915cecc7e977183b8543fc0864d03e064c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x37f24b26bcefbfac7f261b97f8036da98f81a299 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xacb5b33ce55ba7729e38b2b59677e71c0112f0d9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x6985884c4392d348587b19cb9eaaf157f13271cd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xc71b5f631354be6853efe9c3ab6b9590f8302e81 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7e744bbb1a49a44dfcc795014a4ba618e418fbbe + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0c04ff41b11065eed8c9eda4d461ba6611591395 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x636bd98fc13908e475f56d8a38a6e03616ec5563 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x590246bfbf89b113d8ac36faeea12b7589f7fe5b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x80034f803afb1c6864e3ca481ef1362c54d094b9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x73fbd93bfda83b111ddc092aa3a4ca77fd30d380 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xff33a6b3dc0127862eedd3978609404b22298a54 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc770eefad204b5180df6a14ee197d99d808ee52d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa0385e7283c83e2871e9af49eec0966088421ddd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb2617246d0c6c0087f18703d576831899ca94f01 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xba386a4ca26b85fd057ab1ef86e3dc7bdeb5ce70 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9ebb0895bd9c7c9dfab0d8d877c66ba613ac98ea + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd12a99dbc40036cec6f1b776dccd2d36f5953b94 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8ab2ff0116a279a99950c66a12298962d152b83c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x420698cfdeddea6bc78d59bc17798113ad278f9d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa8c8cfb141a3bb59fea1e2ea6b79b5ecbcd7b6ca + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd8e8438cf7beed13cfabc82f300fb6573962c9e3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb1c9d42fa4ba691efe21656a7e6953d999b990c4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xdadeca1167fe47499e53eb50f261103630974905 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xa05245ade25cc1063ee50cf7c083b4524c1c4302 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x4fafad147c8cd0e52f83830484d164e960bdc6c3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x4dd9077269dd08899f2a9e73507125962b5bc87f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x8931ee05ec111325c1700b68e5ef7b887e00661d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x26f1bb40ea88b46ceb21557dc0ffac7b7c0ad40f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x642e993fa91ffe9fb24d39a8eb0e0663145f8e92 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0c41f1fc9022feb69af6dc666abfe73c9ffda7ce + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf7ccb8a6e3400eb8eb0c47619134f7516e025215 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x2416092f143378750bb29b79ed961ab195cceea5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf0268c5f9aa95baf5c25d646aabb900ac12f0800 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0c067fc190cde145b0c537765a78d4e19873a5cc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xbe5614875952b1683cb0a2c20e6509be46d353a4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x87a0233a8cb4392ec3eb8fa467817fc0b6a326dd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xdfbea88c4842d30c26669602888d746d30f9d60d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xb6fe221fe9eef5aba221c348ba20a1bf5e73624c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x80b3455e1db60b4cba46aba12e8b1e256dd64979 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x747747e47a48c669be384e0dfb248eee6ba04039 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/celo/0x50e85c754929840b58614f48e29c64bc78c58345 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x02f92800f57bcd74066f5709f1daa1a4302df875 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x967da4048cd07ab37855c090aaf366e4ce1b9f48 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x729031b3995538ddf6b6bce6e68d5d6fdeb3ccb5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x97a9a15168c22b3c137e6381037e1499c8ad0978 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x5faa989af96af85384b8a938c2ede4a7378d9875 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4691937a7508860f876c9c0a2a617e7d9e945d4b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x037a54aab062628c9bbae1fdb1583c195585fe41 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xcb8b5cd20bdcaea9a010ac1f8d835824f5c87a04 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xdfb8be6f8c87f74295a87de951974362cedcfa30 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x354a6da3fcde098f8389cad84b0182725c6c91de + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x3f56e0c36d275367b8c502090edf38289b3dea0d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x6f9590958ce2beaf9c92a3a8fca6d1ddf310e052 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x3e5d9d8a63cc8a88748f229999cf59487e90721e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0xecc68d0451e20292406967fe7c04280e5238ac7d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xf1c1a3c2481a3a8a3f173a9ab5ade275292a6fa3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xb5e0cfe1b4db501ac003b740665bf43192cc7853 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xffa188493c15dfaf2c206c97d8633377847b6a52 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xb5c064f955d8e7f38fe0460c556a72987494ee17 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x4f604735c1cf31399c6e711d5962b2b3e0225ad3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xf0949dd87d2531d665010d6274f06a357669457a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x14e5386f47466a463f85d151653e1736c0c50fc3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xadac33f543267c4d59a8c299cf804c303bc3e4ac + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xcfa3ef56d303ae4faaba0592388f19d7c3399fb4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x67ce18961c3269ca03c2e5632f1938cc53e614a1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x48164ea5df090e80a0eaee1147e466ea28669221 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x3054e8f8fba3055a42e5f5228a2a4e2ab1326933 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x42069d11a2cc72388a2e06210921e839cfbd3280 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x74ff3cbf86f95fea386f79633d7bc4460d415f34 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x2d6a3893966dda77749cc7e4003ab15f5cfa3cc1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x51b75da3da2e413ea1b8ed3eb078dc712304761c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x8ad5b9007556749de59e088c88801a3aaa87134b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xbd97693278f1948c59f65f130fd87e7ff7c61d11 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x3992b27da26848c2b19cea6fd25ad5568b68ab98 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x34980c35353a8d7b1a1ba02e02e387a8383e004a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xdebd6e2da378784a69dc6ec99fe254223b312287 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/celo/0x456a3d042c0dbd3db53d5489e98dfb038553b0d0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/celo/0x9995cc8f20db5896943afc8ee0ba463259c931ed + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x30d20208d987713f46dfd34ef128bb16c404d10f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x19848077f45356b21164c412eff3d3e4ff6ebc31 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x53206bf5b6b8872c1bb0b3c533e06fde2f7e22e4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x07ddacf367f0d40bd68b4b80b4709a37bdc9f847 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xbdbe9f26918918bd3f43a0219d54e5fda9ce1bb3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb9d09bc374577dac1ab853de412a903408204ea8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xe72b141df173b999ae7c1adcbf60cc9833ce56a8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x214549b0317564de15770561221433fb3e8c995c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc82e3db60a52cf7529253b4ec688f631aad9e7c2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf3dcbc6d72a4e1892f7917b7c43b74131df8480e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x62e3b3c557c792c4a70765b3cdb5b56b1879f82d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x2598c30330d5771ae9f983979209486ae26de875 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd4f4d0a10bcae123bb6655e8fe93a30d01eebd04 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xa0995d43901551601060447f9abf93ebc277cec2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x40379a439d4f6795b6fc9aa5687db461677a2dba + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x433cde5a82b5e0658da3543b47a375dffd126eb6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x619c4bbbd65f836b78b36cbe781513861d57f39d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1e0bb24ed6c806c01ef2f880a4b91adb90099ea7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0dd7913197bfb6d2b1f03f9772ced06298f1a644 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xfbb75a59193a3525a8825bebe7d4b56899e2f7e1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc3de830ea07524a0761646a6a4e4be0e114a3c83 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x3792dbdd07e87413247df995e692806aa13d3299 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x527856315a4bcd2f428ea7fa05ea251f7e96a50a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x292fcdd1b104de5a00250febba9bc6a5092a0076 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd749b369d361396286f8cc28a99dd3425ac05619 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xfe3e6a25e6b192a42a44ecddcd13796471735acf + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa1faa113cbe53436df28ff0aee54275c13b40975 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8802269d1283cdb2a5a329649e5cb4cdcee91ab6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0000bdaa645097ef80f9d475f341d0d107a45b3a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x683a4ac99e65200921f556a19dadf4b0214b5938 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x36c7188d64c44301272db3293899507eabb8ed43 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8a2279d4a90b6fe1c4b30fa660cc9f926797baa2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf418588522d5dd018b425e472991e52ebbeeeeee + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6135177a17e02658df99a07a2841464deb5b8589 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xcf91b70017eabde82c9671e30e5502d312ea6eb2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x45080a6531d671ddff20db42f93792a489685e32 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x790814cd782983fab4d7b92cf155187a865d9f18 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9e6be44cc1236eef7e1f197418592d363bedcd5a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xaa7a9ca87d3694b5755f213b5d04094b8d0f0a6f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x69ee720c120ec7c9c52a625c04414459b3185f23 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x408e41876cccdc0f92210600ef50372656052a38 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x5cf04716ba20127f1e2297addcf4b5035000c9eb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8290333cef9e6d528dd5618fb97a76f268f3edd4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1929761e87667283f087ea9ab8370c174681b4e9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x888888848b652b3e3a0f34c96e00eec0f3a23f72 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf944e35f95e819e752f3ccb5faf40957d311e8c5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1f70300bce8c2302780bd0a153ebb75b8ca7efcb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x3de81ce90f5a27c5e6a5adb04b54aba488a6d14e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xc87b37a581ec3257b734886d9d3a581f5a9d056c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x1a6b3a62391eccaaa992ade44cd4afe6bec8cff1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x65c936f008bc34fe819bce9fa5afd9dc2d49977f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x07d65c18cecba423298c0aeb5d2beded4dfd5736 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x51fc0f6660482ea73330e414efd7808811a57fa2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xcbe94d75ec713b7ead84f55620dc3174beeb1cfe + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xd3144ff5f388d36c0a445686c08540296d8b209b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x433e39ce74aef8f409182541269e417ad9b56011 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xb1a03eda10342529bbf8eb700a06c60441fef25d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x6b9bb36519538e0c073894e964e90172e1c0b41f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x689644b86075ed61c647596862c7403e1c474dbf + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x9a6d24c02ec35ad970287ee8296d4d6552a31dbe + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x506beb7965fc7053059006c7ab4c62c02c2d989f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x31b28012f61fc3600e1c076bafc9fd997fb2da90 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xd7d919ea0c33a97ad6e7bd4f510498e2ec98cb78 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xef553b6914dbd17567393f7e55fbd773fff7d0cb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xe642657e4f43e6dcf0bd73ef24008394574dee28 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf8b1b47aa748f5c7b5d0e80c726a843913eb573a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xd064c53f043d5aee2ac9503b13ee012bf2def1d0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xfc60aa1ffca50ce08b3cdec9626c0bb9e9b09bec + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x82c8f48ac694841360de84d649a0d48d239b61f8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x7d89e05c0b93b24b5cb23a073e60d008fed1acf9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x7546e0d4d947a15f914e33de6616ffed826f45ef + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x9a5350edf28c1f93bb36d6e94b5c425fde8e222d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xaa076b62efc6f357882e07665157a271ab46a063 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6a6aa13393b7d1100c00a57c76c39e8b6c835041 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x07040971246a73ebda9cf29ea1306bb47c7c4e76 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6df0e641fc9847c0c6fde39be6253045440c14d3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x2b640a99991dea2916205ecdc9f9c58f80017ed8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x38e4adb44ef08f22f5b5b76a8f0c2d0dcbe7dca1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x42069cc15f5befb510430d22ff1c9a1b3ae22cfe + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x89fd2d8fd8d937f55c89b7da3ceed44fa27e4a81 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x76bc677d444f1e9d57daf5187ee2b7dc852745ae + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa0084063ea01d5f09e56ef3ff6232a9e18b0bacd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4abd5745f326932b1b673bfa592a20d7bb6bc455 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xe53ec727dbdeb9e2d5456c3be40cff031ab40a55 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf43f21384d03b5cbbddd58d2de64071e4ce76ab0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x33349b282065b0284d756f0577fb39c158f935e6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x33c88d4cac6ac34f77020915a2a88cd0417dc069 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xdce765f021410b3266aa0053c93cb4535f1e12e0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xb50a8e92cb9782c9b8f3c88e4ee8a1d0aa2221d7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x0a84edf70f30325151631ce7a61307d1f4d619a3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xc11158c5da9db1d553ed28f0c2ba1cbedd42cfcb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0xb0b195aefa3650a6908f15cdac7d92f8a5791b0b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xdc4f4ed9872571d5ec8986a502a0d88f3a175f1e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x9beec80e62aa257ced8b0edd8692f79ee8783777 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf95e1c0a67492720ca22842122fe7fa63d5519e5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xca8e8d244f0d219a6fc9e4793c635cea98d0399c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x6a4f69da1e2fb2a9b11d1aad60d03163fe567732 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0718f45bbf4781ce891e4e18182f025725f0fc95 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x132bbda4a40d4d6288be49b637ec2c113b5d7600 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x9aaae745cf2830fb8ddc6248b17436dc3a5e701c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x24fcfc492c1393274b6bcd568ac9e225bec93584 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x21fd16cd0ef24a49d28429921e335bb0c1bfadb3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa469b7ee9ee773642b3e93e842e5d9b5baa10067 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8c19f7854b27758ddffdcdc8908f22bf55e00736 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xf2ae0038696774d65e67892c9d301c5f2cbbda58 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x6bc40d4099f9057b23af309c08d935b890d7adc0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xee2a03aa6dacf51c18679c516ad5283d8e7c2637 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7f911119435d8ded9f018194b4b6661331379a3d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x777be1c6075c20184c4fd76344b7b0b7c858fe6b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x812ba41e071c7b7fa4ebcfb62df5f45f6fa853ee + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x881d4c8618d68872fa404518b2460ea839a02a6a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xba2ae4e0a9c6ecaf172015aa2cdd70a21f5a290b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1caf237d7a2d103e3e9b1855988c01ac10344600 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7d4a7be025652995364e0e232063abd9e8d65e6e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x620aa20875ec1144126ea47fb27ecfe6e10d0c56 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xfae103dc9cf190ed75350761e95403b7b8afa6c0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xae7ab96520de3a18e5e111b5eaab095312d7fe84 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x04c154b66cb340f3ae24111cc767e0184ed00cc6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x70e8de73ce538da2beed35d14187f6959a8eca96 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xfb7b4564402e5500db5bb6d63ae671302777c75a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6810e776880c02933d47db1b9fc05908e5386b96 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x11e969e9b3f89cb16d686a03cd8508c9fc0361af + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x8b5d1d8b3466ec21f8ee33ce63f319642c026142 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x3ed03e95dd894235090b3d4a49e0c3239edce59e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xb3f13b0c61d65d67d7d6215d70c89533ee567a91 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xfea31d704deb0975da8e77bf13e04239e70d7c28 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x66e535e8d2ebf13f49f3d49e5c50395a97c137b1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x9a06db14d639796b25a6cec6a1bf614fd98815ec + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x7fdd7419428955dbf36d4176af5a8f09ad29d1f3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x8c9037d1ef5c6d1f6816278c7aaf5491d24cd527 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xa9f5031b54c44c3603b4300fde9b8f5cd18ad06f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x57f5fbd3de65dfc0bd3630f732969e5fb97e6d37 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x9ef1139e6b420cc929dd912a5a7adeced6f12e91 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x120edc8e391ba4c94cb98bb65d8856ae6ec1525f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xd7ea82d19f1f59ff1ae95f1945ee6e6d86a25b96 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x2c9ab600d71967ff259c491ad51f517886740cbc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xf4c8e32eadec4bfe97e0f595add0f4450a863a11 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x8c49a510756224e887b3d99d00d959f2d86dda1c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7777cec341e7434126864195adef9b05dcc3489c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x19af07b52e5faa0c2b1e11721c52aa23172fe2f5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb7109df1a93f8fe2b8162c6207c9b846c1c68090 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xbbc2ae13b23d715c30720f079fcd9b4a74093505 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x595832f8fc6bf59c85c527fec3740a1b7a361269 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7316d973b0269863bbfed87302e11334e25ea565 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x2be8e422cb4a5a7f217a8f1b0658952a79132f28 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x83e6f1e41cdd28eaceb20cb649155049fac3d5aa + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xbabe3ce7835665464228df00b03246115c30730a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x2e6a60492fb5b58f5b5d08c7cafc75e740e6dc8e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc08e7e23c235073c6807c2efe7021304cb7c2815 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x955d5c14c8d4944da1ea7836bd44d54a8ec35ba1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x3540abe4f288b280a0740ad5121aec337c404d15 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xfe8526a77a2c3590e5973ba81308b90bea21fbff + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd807f7e2818db8eda0d28b5be74866338eaedb86 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x4186bfc76e2e237523cbc30fd220fe055156b41f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xd5d3aa404d7562d09a848f96a8a8d5d65977bf90 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xa3f751662e282e83ec3cbc387d225ca56dd63d3a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xd24157aa1097486dc9d7cf094a7e15026e566b5d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xbed0b9240bdbcc8e33f66d2ca650a5ef60a5bab0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x5d559ea7bb2dae4b694a079cb8328a2145fd32f6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x97b959385dfdcaf252223838746beb232ac601aa + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x18e692c03de43972fe81058f322fa542ae1a5e2c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x38029c62dfa30d9fd3cadf4c64e9b2ab21dbda17 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x4507cef57c46789ef8d1a19ea45f4216bae2b528 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/celo/0x73f93dcc49cb8a239e2032663e9475dd5ef29a08 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x9e523234d36973f9e38642886197d023c88e307e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x5de758bba013e58dae2693aea3f0b12b31a3023d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1001271083c249bd771e1bb76c22d935809a61ee + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9d39a5de30e57443bff2a8307a4256c8797a3497 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf3768d6e78e65fc64b8f12ffc824452130bd5394 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf2ec4a773ef90c58d98ea734c0ebdb538519b988 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0f2d719407fdbeff09d87557abb7232601fd9f29 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x180000dda70eb7fb7f3e10e52e88ce88f46e3b3a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xed89fc0f41d8be2c98b13b7e3cd3e876d73f1d30 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x17c50d62e6e8d20d2dc18e9ad79c43263d0720d9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x3b50805453023a91a8bf641e279401a0b23fa6f9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xfd03723a9a3abe0562451496a9a394d2c4bad4ab + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xfe67a4450907459c3e1fff623aa927dd4e28c67a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc5fb36dd2fb59d3b98deff88425a3f425ee469ed + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x6b021b3f68491974be6d4009fee61a4e3c708fd6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x7ae9ab13fc8945323b778b3f8678145e80ec2efb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xbc4c97fb9befaa8b41448e1dfcc5236da543217f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x93919784c523f39cacaa98ee0a9d96c3f32b593e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xd55fce7cdab84d84f2ef3f99816d765a2a94a509 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x32e0f9d26d1e33625742a52620cc76c1130efde6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x9b700b043e9587dde9a0c29a9483e2f8fa450d54 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0b1594b0e896bf165d925956e0df733b8443af6a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x891502ba08132653151f822a3a430198f1844115 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc702b80a1bebac118cab22ce6f2978ef59563b3f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1287a235474e0331c0975e373bdd066444d1bd35 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xab36452dbac151be02b16ca17d8919826072f64a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xcc7ff230365bd730ee4b352cc2492cedac49383e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xa9b038285f43cd6fe9e16b4c80b4b9bccd3c161b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x77be1ba1cd2d7a63bffc772d361168cc327dd8bc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x00000000efe302beaa2b3e6e1b18d08d69a9012a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd101dcc414f310268c37eeb4cd376ccfa507f571 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd09eb9099fac55edcbf4965e0a866779ca365a0c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7b0df1cd724ec34ec9bc4bd19749b01afb490761 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x71297312753ea7a2570a5a3278ed70d9a75f4f44 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9e32b13ce7f2e80a01932b42553652e053d6ed8e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6942040b6d25d6207e98f8e26c6101755d67ac89 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x3301ee63fb29f863f2333bd4466acb46cd8323e6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xfefe157c9d0ae025213092ff9a5cb56ab492bab8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x44108f0223a3c3028f5fe7aec7f9bb2e66bef82f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1121acc14c63f3c872bfca497d10926a6098aac5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf1376bcef0f78459c0ed0ba5ddce976f1ddf51f4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xce722f60f35c37ab295adc4e6ba45bcc7ca89dd6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x614577036f0a024dbc1c88ba616b394dd65d105a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x93fa0b88c0c78e45980fa74cdd87469311b7b3e4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xe22c452bd2ade15dfc8ad98286bc6bdf0c9219b7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x00000000000451f49c692bfc24971cacea2db678 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x00000000702749f73e5210b08b0a3d440078f888 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x86f65121804d2cdbef79f9f072d4e0c2eebabc08 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x127e47aba094a9a87d084a3a93732909ff031419 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x52b492a33e447cdb854c7fc19f1e57e8bfa1777d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x55027a5b06f4340cc4c82dcc74c90ca93dcb173e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x32b133add6d99d085ff23f522662b546b70d54a1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x2ad3d80c917ddbf08acc04277f379e00e4d75395 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc73dc7ae7a4fa40517aafa941ae1ee436b91a12c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x9f235d23354857efe6c541db92a9ef1877689bcb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0c90c756350fb803a7d5d9f9ee5ac29e77369973 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xac12f930318be4f9d37f602cbf89cd33e99aa9d4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x1c45366641014069114c78962bdc371f534bc81c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc328a59e7321747aebbc49fd28d1b32c1af8d3b2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x90edf25b14393350f0c1b5b12b6cb3cd3781fb4a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x590f820444fa3638e022776752c5eef34e2f89a6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1fdb29ad49330b07ae5a87483f598aa6b292039e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4a220e6096b25eadb88358cb44068a3248254675 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xabd4c63d2616a5201454168269031355f4764337 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4c1b1302220d7de5c22b495e78b72f2dd2457d45 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x050c24dbf1eec17babe5fc585f06116a259cc77a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x57211299bc356319ba5ca36873eb06896173f8bc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xfde4c96c8593536e31f229ea8f37b2ada2699bb2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf9b738c2e7adc4f299c57afd0890b925a5efea6f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x04c0599ae5a44757c0af6f9ec3b93da8976c150a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x99b2b1a2adb02b38222adcd057783d7e5d1fcc7d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf9569cfb8fd265e91aa478d86ae8c78b8af55df4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xa3d1a8deb97b111454b294e2324efad13a9d8396 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xd85eff20288ca72ea9eecffb428f89ee5066ca5c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x13f4196cc779275888440b3000ae533bbbbc3166 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x160452f95612699d1a561a70eeeeede67c6812af + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x5ce12f6d9f2fcaf0b11494a1c39e09eeb16ca7e8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x6894cde390a3f51155ea41ed24a33a4827d3063d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6db6fdb5182053eecec778afec95e0814172a474 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc0cfbe1602dd586349f60e4681bf4badca584ec9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x289ff00235d2b98b0145ff5d4435d3e92f9540a6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xcb76314c2540199f4b844d4ebbc7998c604880ca + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd7cfdb3cdc33dbeb9e9a4c95b61953cf12a008b3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xce176825afc335d9759cb4e323ee8b31891de747 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8f2bf2f59cdf7be4aee71500b9419623202b8636 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x744d70fdbe2ba4cf95131626614a1763df805b9e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x52e6654aee5d59e13ae30b48f8f5dbeb97f708cd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x38f9bf9dce51833ec7f03c9dc218197999999999 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x7189fb5b6504bbff6a852b13b7b82a3c118fdc27 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x38f9bf9dce51833ec7f03c9dc218197999999999 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x8349314651ede274f8c5fef01aa65ff8da75e57c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x38f9bf9dce51833ec7f03c9dc218197999999999 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x1adcef5c780d8895ac77e6ee9239b4b3ecb76da2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x38f9bf9dce51833ec7f03c9dc218197999999999 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x917f39bb33b2483dd19546b1e8d2f09ce481ee44 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x8b67f2e56139ca052a7ec49cbcd1aa9c83f2752a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x029c58a909fbe3d4be85a24f414dda923a3fde0f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x655a51e6803faf50d4ace80fa501af2f29c856cf + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x9ca5dfa3b0b187d7f53f4ef83ca435a2ec2e4070 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xb68a20b9e9b06fde873897e12ab3372ce48f1a8a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x0203d275d2a65030889af45ed91d472be3948b92 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa00453052a36d43a99ac1ca145dfe4a952ca33b8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8236a87084f8b84306f72007f36f2618a5634494 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xbc5ca3c518c8a2930947661237b1b562e34f22b7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xfd0205066521550d7d7ab19da8f72bb004b4c341 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x880226cbcce551eeafd18c9a9e883c85811b82fc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xfc21540d6b89667d167d42086e1feb04da3e9b21 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x41d06390b935356b46ad6750bda30148ad2044a4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8149745670881d99700078ede5903a1a7bebe262 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xcf01a5c02c9b9dd5bf73a5a56bcdbc9dca483d43 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xae0fe8474cf5b1b412b3e4327a1c535ea12b77b7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc98d64da73a6616c42117b582e832812e7b8d57f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x70c0b83501a3989d4f8a8693581bb7010194abb5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x80122c6a83c8202ea365233363d3f4837d13e888 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x455e53cbb86018ac2b8092fdcd39d8444affc3f6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x58aea10748a00d1781d6651f9d78a414ea32ca46 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x406d59819bc2aef682f4ff2769085c98a264f97b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xc4ce1d6f5d98d65ee25cf85e9f2e9dcfee6cb5d6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x94025780a1ab58868d9b2dbbb775f44b32e8e6e5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xf33687811f3ad0cd6b48dd4b39f9f977bd7165a2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xa88594d404727625a9437c3f886c7643872296ae + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x7e72d6410803c40e73806f2a72e3eade5d075cc0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x31ea904a7eca45122890deb8da3473a2081bc9d1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x48c6740bcf807d6c47c864faeea15ed4da3910ab + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc5fecc3a29fb57b5024eec8a2239d4621e111cbe + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x184cff0e719826b966025f93e05d8c8b0a79b3f9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0c2e08e459fc43ddd1e2718c122f566473f59665 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1a3a8cf347b2bf5890d3d6a1b981c4f4432c8661 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8baf5d75cae25c7df6d1e0d26c52d19ee848301a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x28561b8a2360f463011c16b6cc0b0cbef8dbbcad + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0fd10b9899882a6f2fcb5c371e17e70fdee00c38 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7a58c0be72be218b41c608b7fe7c5bb630736c71 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xddaf27167929cd045a7d97d09a4fa1046ece3d89 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x375e104af98872e5b4fe951919e504a47db1757c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x5408d3883ec28c2de205064ae9690142b035fed2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1bb4afbf2ce0c9ec86e6414ad4ba4d9aab1c0de4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7391425ca7cee3ee03e09794b819291a572af83e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x38e382f74dfb84608f3c1f10187f6bef5951de93 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xbea269038eb75bdab47a9c04d0f5c572d94b93d5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf41a7b7c79840775f70a085c1fc5a762bbc6b180 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x13654df31871b5d01e5fba8e6c21a5d0344820f5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x4d840b741bc05fde325d4ec0b4cfcd0cea237e4e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x49b1be61a8ca3f9a9f178d6550e41e00d9162159 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf5bc3439f53a45607ccad667abc7daf5a583633f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0a953dd9fc813fefaf6015b804c9dfa0624690c0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x44ec807ce2f4a6f2737a92e985f318d035883e47 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xfb6115445bff7b52feb98650c87f44907e58f802 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x117a123ded97cd125837d9ac19592b77d806fa88 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd9fcd98c322942075a5c3860693e9f4f03aae07b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x240cd7b53d364a208ed41f8ced4965d11f571b7a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb8d6196d71cdd7d90a053a7769a077772aaac464 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xcbde0453d4e7d748077c1b0ac2216c011dd2f406 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x786f112c9a6bc840cdc07cfd840105efd6ef2d4b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0bffdd787c83235f6f0afa0faed42061a4619b7a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1c43cd666f22878ee902769fccda61f401814efb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1b54a6fa1360bd71a0f28f77a1d6fba215d498c3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb528edbef013aff855ac3c50b381f253af13b997 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x888888ae2c4a298efd66d162ffc53b3f2a869888 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4cd27e18757baa3a4fe7b0ab7db083002637a6c5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x240d6faf8c3b1a7394e371792a3bf9d28dd65515 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x41b1f9dcd5923c9542b6957b9b72169595acbc5c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd1f2586790a5bd6da1e443441df53af6ec213d83 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8de5b80a0c1b02fe4976851d030b36122dbb8624 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x391cf4b21f557c935c7f670218ef42c21bd8d686 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8bd35250918ed056304fa8641e083be2c42308bb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc3960227e41c3f54e9b399ce216149dea5315c34 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x59062301fb510f4ea2417b67404cb16d31e604ba + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x75ec618a817eb0a4a7e44ac3dfc64c963daf921a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x7e7a7c916c19a45769f6bdaf91087f93c6c12f78 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x21ccbc5e7f353ec43b2f5b1fb12c3e9d89d30dca + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x87eee96d50fb761ad85b1c982d28a042169d61b1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x3c720206bfacb2d16fa3ac0ed87d2048dbc401fc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x8d60fb5886497851aac8c5195006ecf07647ba0d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xcb327b99ff831bf8223cced12b1338ff3aa322ff + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf544251d25f3d243a36b07e7e7962a678f952691 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xa7296cefae8477a81e23230ca5d3a3d6f49d3764 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x051fb509e4a775fabd257611eea1efaed8f91359 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xae2bddbcc932c2d2cf286bad0028c6f5074c77b5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1dd2d631c92b1acdfcdd51a0f7145a50130050c4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xd3c68968137317a57a9babeacc7707ec433548b4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x7f6f6720a73c0f54f95ab343d7efeb1fa991f4f7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xf3527ef8de265eaa3716fb312c12847bfba66cef + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x8888888888f004100c0353d657be6300587a6ccd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xe2a59d5e33c6540e18aaa46bf98917ac3158db0d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xfa2ad87e35fc8d3c9f57d73c4667a4651ce6ad2f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xec53bf9167f50cdeb3ae105f56099aaab9061f83 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb3912b20b3abc78c15e85e13ec0bf334fbb924f7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x16a3543fa6b32cac3b0a755f64a729e84f89a75c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf1c9acdc66974dfb6decb12aa385b9cd01190e38 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0da2082905583cedfffd4847879d0f1cf3d25c36 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb0ffa8000886e57f86dd5264b9582b2ad87b2b91 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xec9333e7dadeebf82d290d6cb12e66cc30ce46b0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x898843fb909e3562c82f2b96f4e3d0693af041df + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xaf05ce8a2cef336006e933c02fc89887f5b3c726 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x13e4b8cffe704d3de6f19e52b201d92c21ec18bd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xaeb3607ec434454ceb308f5cd540875efb54309a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x2a3bff78b79a009976eea096a51a948a3dc00e34 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4298e4ad48be89bf63a6fdc470a4b4fe9ce633b1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa117000000f279d81a1d3cc75430faa017fa5a2e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x339058ca41e17b55b6dd295373c5d3cbe8000cd9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa3d4bee77b05d4a0c943877558ce21a763c4fa29 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x362bc847a3a9637d3af6624eec853618a43ed7d2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7a65cb87f596caf31a4932f074c59c0592be77d7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa21af1050f7b26e0cff45ee51548254c41ed6b5c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x284b25d8f199125da962abc9ee6e6b1b6715cae3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8fac8031e079f409135766c7d5de29cf22ef897c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf280b16ef293d8e534e370794ef26bf312694126 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x69af81e73a73b40adf4f3d4223cd9b1ece623074 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x888c1a341ce9d9ae9c2d2a75a72a7f0d2551a2dc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x465dbc39f46f9d43c581a5d90a43e4a0f2a6ff2d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x44e18207b6e98f4a786957954e462ed46b8c95be + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x70c29e99ca32592c0e88bb571b87444bb0e08e33 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8c7ac134ed985367eadc6f727d79e8295e11435c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6aa56e1d98b3805921c170eb4b3fe7d4fda6d89b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x81db1949d0e888557bc632f7c0f6698b1f8c9106 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x2de1218c31a04e1040fc5501b89e3a58793b3ddf + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x30ae41d5f9988d359c733232c6c693c0e645c77e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x1fc01117e196800f416a577350cb1938d10501c2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x3212dc0f8c834e4de893532d27cc9b6001684db0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0xd0cf4de352ac8dcce00bd6b93ee73d3cb272edc3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x75e6b648c91d222b2f6318e8ceeed4b691d5323f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x2a06a17cbc6d0032cac2c6696da90f29d39a1a29 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x6668d4a6605a27e5ee51eda040581155eddc6666 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x2dc90fa3a0f178ba4bee16cac5d6c9a5a7b4c6cb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x9c7beba8f6ef6643abd725e45a4e8387ef260649 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x0cf8e180350253271f4b917ccfb0accc4862f262 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x42069026eac8eee0fd9b5f7adfa4f6e6d69a2b39 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x340d2bde5eb28c1eed91b2f790723e3b160613b7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xec21890967a8ceb3e55a3f79dac4e90673ba3c2e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6900f7b42fb4abb615c938db6a26d73a9afbed69 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4c44a8b7823b80161eb5e6d80c014024752607f2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x103143acf2e717acf8f021823e86a1dbfe944fb5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6969f3a3754ab674b48b7829a8572360e98132ba + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x562e362876c8aee4744fc2c6aac8394c312d215d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd0ebfe04adb5ef449ec5874e450810501dc53ed5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x2597342ff387b63846eb456419590781c4bfcdaf + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4e6221c07dae8d3460a46fa01779cf17fdd72ad8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb612bfc5ce2fb1337bd29f5af24ca85dbb181ce2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc0e10854ab40b2e59a5519c481161a090f1162a0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa7f4195f10f1a62b102bd683eab131d657a6c6e4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7e7ef0ee0305c1c195fcae22fd7b207a813eef86 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xb6212b633c941e9be168c4b9c2d9e785f1cd42fb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x139052115f8b1773cf7dcba6a553f922a2e54f69 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x3f94618ad346f34f43e27f0cf46decbb0d396b1b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf56b3b3972f2f154555a0b62ff5a22b7b2a3c90b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc08cd26474722ce93f4d0c34d16201461c10aa8c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x080c169cd58122f8e1d36713bf8bcbca45176905 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x50da645f148798f68ef2d7db7c1cb22a6819bb2c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xea1d649ddc8e2a6e6ee40b89b2997518476cafa5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xa4080f1778e69467e905b8d6f72f6e441f9e9484 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb60acd2057067dc9ed8c083f5aa227a244044fd6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd0dfca0b404e866dc9a3038bd2a545c6735d9fa9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x18a8d75f70eaead79b5a55903d036ce337f623a5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xebb66a88cedd12bfe3a289df6dfee377f2963f12 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9343e24716659a3551eb10aff9472a2dcad5db2d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xfa3e941d1f6b7b10ed84a0c211bfa8aee907965e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x85bea4ee627b795a79583fcede229e198aa57055 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0c03ce270b4826ec62e7dd007f0b716068639f7b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x19706c142d33376240e418d6385f05691a5fa8e2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb3e41d6e0ea14b43bc5de3c314a408af171b03dd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x634769eb87542eaf41c0008c05d5d8f5d8bec3a5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd3c5bdbc6de5ea3899a28f6cd419f29c09fa749f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9dfad1b7102d46b1b197b90095b5c4e9f5845bba + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc8f69a9b46b235de8d0b77c355fff7994f1b090f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x5200b34e6a519f289f5258de4554ebd3db12e822 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x69fd9281a920717ee54193a1c130b689ef341933 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x5d56b6581d2e7e7574adce2dc593f499a53d7505 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x168168db04def453b7e8bfaff1e0102a3e810485 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1f19d846d99a0e75581913b64510fe0e18bbc31f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x571d9b73dc04ed88b4e273e048c8d4848f83b779 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xca5ca9083702c56b481d1eec86f1776fdbd2e594 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x99f40b01ba9c469193b360f72740e416b17ac332 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0xc6bdfc4f2e90196738873e824a9efa03f7c64176 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x06480acaae64bcfa6da8fd176f60982584385090 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0c5142bc58f9a61ab8c3d2085dd2f4e550c5ce0b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc734635cd30e882037c3f3de1ebccf9fa9d27d9f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x65e570b560027f493f2b1907e8e8e3b9546053bd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xd1917629b3e6a72e6772aab5dbe58eb7fa3c2f33 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x9e81f6495ba29a6b4d48bddd042c0598fa8abc9f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x2075f6e2147d4ac26036c9b4084f8e28b324397d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x01aac2b594f7bdbec740f0f1aa22910ebb4b74ab + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xef433ebb8ba7a486ce21b854f093b9a3f4e696bc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x2bb84fd8f7ed0ffae3da36ad60d4d7840bdeeada + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xad86b91a1d1db15a4cd34d0634bbd4ecacb5b61a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4d224452801aced8b2f0aebe155379bb5d594381 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf63e309818e4ea13782678ce6c31c1234fa61809 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xe0151763455a8a021e64880c238ba1cff3787ff0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x44ff8620b8ca30902395a7bd3f2407e1a091bf73 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x5640e0560e6afd6a9f4ddb41230d0201d181fea7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x88ee7a3537667958d040216d9dc1752d1274d838 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x39d5313c3750140e5042887413ba8aa6145a9bd2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xba2a3dad197d6fee75471215efd5c30c8c854e11 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x3dd77d53f4fa9b3435b3a2ff6bb408771e6800e6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xf929de51d91c77e42f5090069e0ad7a09e513c73 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x74885b4d524d497261259b38900f54e6dbad2210 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0xc55e93c62874d8100dbd2dfe307edc1036ad5434 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x9c9e5fd8bbc25984b178fdce6117defa39d2db39 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xaa53b93608c88ee55fad8db4c504fa20e52642ad + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x55cd6469f597452b5a7536e2cd98fde4c1247ee4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xfe550bffb51eb645ea3b324d772a19ac449e92c5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x314d7f9e2f55b430ef656fbb98a7635d43a2261e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x3b54eb78fc8103462f86976b06916fa46078b124 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1d4731111bd2a50ab3dd5178574e6f3698270ffc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x7a2c5e7788e55ec0a7ba4aeec5b3da322718fb5e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x814fe70e85025bec87d4ad3f3b713bdcaac0579b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9b69667f602f15ef2d09a9a18489c788e327461e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8808434a831efea81170a56a9ddc57cc9e6de1d8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xe0c8b298db4cffe05d1bea0bb1ba414522b33c1b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x230ea9aed5d08afdb22cd3c06c47cf24ad501301 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x35d8949372d46b7a3d5a56006ae77b215fc69bc0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x535887989b9edffb63b1fd5c6b99a4d45443b49a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9ee8c380e1926730ad89e91665ff27063b13c90a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb8a914a00664e9361eae187468eff94905dfbc15 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xda2e903b0b67f30bf26bd3464f9ee1a383bbbe5f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xd6cf874e24a9f5f43075142101a6b13735cdd424 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x8c92e38eca8210f4fcbf17f0951b198dd7668292 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x9a33406165f562e16c3abd82fd1185482e01b49a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x7f65323e468939073ef3b5287c73f13951b0ff5b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x5597ce42b315f29e42071d231dcd0158da35b77b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0a14ef61afb32e5ca672e021784f71705ac14908 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0f1cfd0bb452db90a3bfc0848349463010419ab2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf3708859c178709d5319ad5405bc81511b72b9e9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xadf734e8d910d01e6528240898d895af6c22e2de + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x78a087d713be963bf307b18f2ff8122ef9a63ae9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x4287105ffac106eb98a71cab46586906181e35ff + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xb8e564b206032bbcda2c3978bc371da52152f72e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x3ecced5b416e58664f04a39dd18935eb71d33b15 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/celo/0x71e26d0e519d14591b9de9a0fe9513a398101490 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/celo/0x105d4a9306d2e55a71d2eb95b81553ae1dc20d7b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x420110d74c4c3ea14043a09e81fad53e1932f54c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd6203889c22d9fe5e938a9200f50fdffe9dd8e02 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0a6e7ba5042b38349e437ec6db6214aec7b35676 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6f40d4a6237c257fff2db00fa0510deeecd303eb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x3b991130eae3cca364406d718da22fa1c3e7c256 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x555907a0b5c32df0feb35401187aed60a9191d74 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4947b72fed037ade3365da050a9be5c063e605a7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xe9732d4b1e7d3789004ff029f032ba3034db059c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x556c3cbdca77a7f21afe15b17e644e0e98e64df4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x81f8f0bb1cb2a06649e51913a151f0e7ef6fa321 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xe69ccaaaea33ebfe5b76e0dd373cd9a1a31fd410 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9aab071b4129b083b01cb5a0cb513ce7eca26fa5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x5ff0d2de4cd862149c6672c99b7edf3b092667a3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x96a5399d07896f757bd4c6ef56461f58db951862 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x0d5105ec5bbbf17dba7a87e1aed2c2c15394a9e2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x00000000ea00f3f4000e7ed5ed91965b19f1009b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x5117f4ad0bc70dbb3b05bf39a1ec1ee40dd67654 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x4be87c766a7ce11d5cc864b6c3abb7457dcc4cc9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x16a500aec6c37f84447ef04e66c57cfc6254cf92 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x9f6abbf0ba6b5bfa27f4deb6597cc6ec20573fda + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x5465145a47260d5e715733997333a175d97285bb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x93890f346c5d02c3863a06657bc72555dc72c527 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x1d1498166ddceee616a6d99868e1e0677300056f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x1d734a02ef1e1f5886e66b0673b71af5b53ffa94 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x4c3bf0a3de9524af68327d1d2558a3b70d17d42a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x36912b5cf63e509f18e53ac98b3012fa79e77bf5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x858c50c3af1913b0e849afdb74617388a1a5340d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x92dc4ab92eb16e781559e612f349916988013d5a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x548f93779fbc992010c07467cbaf329dd5f059b7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xd1412d909f67b8db7505ddfcf26cf2303f4b1bb4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xfb1aaba03c31ea98a3eec7591808acb1947ee7ac + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9562e2063122eaa4d7c2d786e7ca2610d70ca8b8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x699ec925118567b6475fe495327ba0a778234aaa + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x37d299d9900209c3566254cfe59bfe6ff8f8c295 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x128f3e482f5bd5f08fe1b216e60ec0a6013deab9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x554fb3b6c1cf4a3cef49779ced321ca51c667d7d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8578a8716013c390b95db73065922f512783e2cf + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf5809f3348ff40906bb509f936aba43e6d1961ab + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x11920f139a3121c2836e01551d43f95b3c31159c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x45940000009600102a1c002f0097c4a500fa00ab + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x4debfb9ed639144cf1e401674af361ffffcefb58 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x0cfc9a713a5c17bc8a5ff0379467f6558bacd0e0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0fd7a301b51d0a83fcaf6718628174d527b373b6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1bc0c42215582d5a085795f4badbac3ff36d1bcb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x3c4b6cd7874edc945797123fce2d9a871818524b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x64cb1bafc59bf93aeb90676885c63540cf4f4106 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xe8aae6251c6cf39927b0ff31399030c60bec798f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x3d1d651761d535df881740ab50ba4bd8a2ec2c00 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x8216e8143902a8fe0b676006bc25eb23829c123d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xce7de646e7208a4ef112cb6ed5038fa6cc6b12e3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x947950bcc74888a40ffa2593c5798f11fc9124c4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x9f9bb3d5af7cc774f9b6adf66e32859b5a998952 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xba41ddf06b7ffd89d1267b5a93bfef2424eb2003 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7a56e1c57c7475ccf742a1832b028f0456652f97 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x58d97b57bb95320f9a05dc918aef65434969c2b2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc785698504a70be37d0e939a4c5326f8eddd5beb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4955f6641bf9c8c163604c321f4b36e988698f75 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x473f4068073cd5b2ab0e4cc8e146f9edc6fb52cc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x16c22a91c705ec3c2d5945dbe2aca37924f1d2ed + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xac1d3d7a8878e655cbb063d58e453540641f4117 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb72e76ccf005313868db7b48070901a44629da98 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xa71e2738704e367798baa2755af5a10499634953 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x8697841b82c71fcbd9e58c15f6de68cd1c63fd02 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x7dff72693f6a4149b17e7c6314655f6a9f7c8b33 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x650af3c15af43dcb218406d30784416d64cfb6b2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x3c8b650257cfb5f272f799f5e2b4e65093a11a05 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xe4feab21b42919c5c960ed2b4bdffc521e26881f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xc3ec80343d2bae2f8e680fdadde7c17e71e114ea + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x9c2c5fd7b07e95ee044ddeba0e97a665f142394f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0db510e79909666d6dec7f5e49370838c16d950f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x599f07567656e6961e20fa6a90685d393808c192 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x4f9fd6be4a90f2620860d680c0d4d5fb53d1a825 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1185cb5122edad199bdbc0cbd7a0457e448f23c7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xbaa5cc21fd487b8fcc2f632f3f4e8d37262a0842 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xb488fcb23333e7baa28d1dfd7b69a5d3a8bfeb3a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x2c8c89c442436cc6c0a77943e09c8daf49da3161 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x91ad1b44913cd1b8241a4ff1e2eaa198da6bf4c9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xa0a2e84f6f19c09a095d4a83ac8de5a32d303a13 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1db0c569ebb4a8b57ac01833b9792f526305e062 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x8a638ea79f71f3b91bdc96bbdf9fb27c93013d60 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x731814e491571a2e9ee3c5b1f7f3b962ee8f4870 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x2c002ffec41568d138acc36f5894d6156398d539 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x33d13d537609841ce6c42d6fd775dc33e3833411 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x11d41056ff636107dd710ec4ea772490a710cdb7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x2859e4544c4bb03966803b044a93563bd2d0dd4d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x77777feddddffc19ff86db637967013e6c6a116c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xfd418e42783382e86ae91e445406600ba144d162 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4f7d2d728ce137dd01ec63ef7b225805c7b54575 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x2e44f3f609ff5aa4819b323fd74690f07c3607c4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x19e1f2f837a3b90ebd0730cb6111189be0e1b6d6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd55210bb6898c021a19de1f58d27b71f095921ee + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x823556202e86763853b40e9cde725f412e294689 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4d1c297d39c5c1277964d0e3f8aa901493664530 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x864cb5194722d5a1596f4be8b899916d30dad8d8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x4a24b101728e07a52053c13fb4db2bcf490cabc3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x79ead7a012d97ed8deece279f9bc39e264d7eef9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xd566c529b33ecf15170f600d4b1ab12468c8efc6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x3b7e1ce09afe2bb3a23919afb65a38e627cfbe97 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xaa404804ba583c025fa64c9a276a6127ceb355c6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x1a3acf6d19267e2d3e7f898f42803e90c9219062 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x6b2504a03ca4d43d0d73776f6ad46dab2f2a4cfd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x98d59767cd1335071a4e9b9d3482685c915131e8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x354d6890caa31a5e28b6059d46781f40880786a6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x30121d81f4407474a6d93f5c3060f14aaa098a61 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x5d9c2457a10d455e0ad8e28e40cc28eacf27a06a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xac27fa800955849d6d17cc8952ba9dd6eaa66187 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xe2b1dc2d4a3b4e59fdf0c47b71a7a86391a8b35a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xd2699f9fddc04d262a819808f561c153098c2408 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x23a96680ccde03bd4bdd9a3e9a0cb56a5d27f7c9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x3c5fdf0ee37d62c774025599e3b692d027746e24 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf31e6d62bfc485857af2186eb3d8ee94b4379fed + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xcf3c8be2e2c42331da80ef210e9b1b307c03d36a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x306227d964511a260d14563fbfa82aa75db404b2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc00e94cb662c3520282e6f5717214004a7f26888 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0c4785ee3ca8bf1fb90c772703210bd346aa3413 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xe41d2489571d322189246dafa5ebde1f4699f498 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7fd4d7737597e7b4ee22acbf8d94362343ae0a79 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x3567aa22cd3ab9aef23d7e18ee0d7cf16974d7e6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf107edabf59ba696e38de62ad5327415bd4d4236 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x06450dee7fd2fb8e39061434babcfc05599a6fb8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9cf0ed013e67db12ca3af8e7506fe401aa14dad6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x33333333fede34409fb7f67c6585047e1f653333 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xc760f9782f8cea5b06d862574464729537159966 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x1b7ad346b6ff2d196daa8e78aed86baa6d7e3b02 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0xff733b2a3557a7ed6697007ab5d11b79fdd1b76b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x05f52cc483c50c2a7e25a13dac17d736fa50f259 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xafb755c5f2ea2aadbae693d3bf2dc2c35158dc04 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x101a023270368c0d50bffb62780f4afd4ea79c35 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x3562ddf1f5ce2c02ef109e9d5a72e2fdb702711d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x20d704099b62ada091028bcfc44445041ed16f09 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x161e113b8e9bbaefb846f73f31624f6f9607bd44 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xa6f774051dfb6b54869227fda2df9cb46f296c09 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x50ce4129ca261ccde4eb100c170843c2936bc11b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xbdf317f9c153246c429f23f4093087164b145390 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x08c81699f9a357a9f0d04a09b353576ca328d60d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xb33ff54b9f7242ef1593d2c9bcd8f9df46c77935 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x589864a9892b1a736ae70a91824ab4dc591fd8cd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xd98832e8a59156acbee4744b9a94a9989a728f36 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x478e03d45716dda94f6dbc15a633b0d90c237e2f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x2676e4e0e2eb58d9bdb5078358ff8a3a964cedf5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1c4cca7c5db003824208adda61bd749e55f463a3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x749e5334752466cda899b302ed4176b8573dc877 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x63cb9a22cbc00bf9159429e9dede4b88c3dba8ce + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x2f20cf3466f80a5f7f532fca553c8cbc9727fef6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x2c24497d4086490e7ead87cc12597fb50c2e6ed6 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x4f81837c2f4a189a0b69370027cc2627d93785b4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x252d223d0550bc6c137b003d90bc74f5341a2818 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x72ff5742319ef07061836f5c924ac6d72c919080 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x2ab0e9e4ee70fff1fb9d67031e44f6410170d00e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x8c907e0a72c3d55627e853f4ec6a96b0c8771145 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xc748673057861a797275cd8a068abb95a902e8de + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x62d7c4e3566f7f4033fc8e01b4d8e9bbc01c0760 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x109ba5f0230b7b39e4a8ab56e7361db89fa0e108 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x82a605d6d9114f4ad6d5ee461027477eeed31e34 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0bb217e40f8a5cb79adf04e1aab60e5abd0dfc1e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf411903cbc70a74d22900a5de66a2dda66507255 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xdd3b11ef34cd511a2da159034a05fcb94d806686 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4ec1b60b96193a64acae44778e51f7bff2007831 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x78965b1c638a7ff408d1697a96d7b8e47bb7c75f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x60222751504796934bddee8218f9725f0c95d2c1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1ccb4b14a11e0f2994a7ecbbd4cc69632f4c7c76 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc7dcca0a3e69bd762c8db257f868f76be36c8514 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9cdf242ef7975d8c68d5c1f5b6905801699b1940 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xadd39272e83895e7d3f244f696b7a25635f34234 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0000000000c5dc95539589fbd24be07c6c14eca4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xcab254f1a32343f11ab41fbde90ecb410cde348a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x95ed629b028cf6aadd1408bb988c6d1daabe4767 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa6c0c097741d55ecd9a3a7def3a8253fd022ceb9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd888a5460fffa4b14340dd9fe2710cbabd520659 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x683989afc948477fd38567f8327f501562c955ac + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x946fb08103b400d1c79e07acccdef5cfd26cd374 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7076de6ff1d91e00be7e92458089c833de99e22e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xadf7c35560035944e805d98ff17d58cde2449389 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x62b9c7356a2dc64a1969e19c23e4f579f9810aa7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xd19b72e027cd66bde41d8f60a13740a26c4be8f3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x66a1e37c9b0eaddca17d3662d6c05f4decf3e110 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf477ac7719e2e659001455cdda0cc8f3ad10b604 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xe16e2548a576ad448fb014bbe85284d7f3542df5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x330bd769382cfc6d50175903434ccc8d206dcae5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xb08d8becab1bf76a9ce3d2d5fa946f65ec1d3e83 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x8b21e9b7daf2c4325bf3d18c1beb79a347fe902a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xd9a9b4d466747e1ebcb7aeb42784452f40452367 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x306fd3e7b169aa4ee19412323e1a5995b8c1a1f4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x9cb74c8032b007466865f060ad2c46145d45553d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x333333c465a19c85f85c6cfbed7b16b0b26e3333 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xb9a5f238dc61eebe820060226c8143cd24624771 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc48cddc6f2650bdb13dcf6681f61ba07209b5299 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xfb42da273158b0f642f59f2ba7cc1d5457481677 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x6f35720b272bf23832852b13ae9888c706e1a379 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x4498cd8ba045e00673402353f5a4347562707e7d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1035ae3f87a91084c6c5084d0615cc6121c5e228 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x3639e6f4c224ebd1bf6373c3d97917d33e0492bb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x8bfac1b375bf2894d6f12fb2eb48b1c1a7916789 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xd27c288fd69f228e0c02f79e5ecadff962e05a2b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x62ff28a01abd2484adb18c61f78f30fb2e4a6fdb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x315b8c9a1123c10228d469551033440441b41f0b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1d008f50fb828ef9debbbeae1b71fffe929bf317 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xeec468333ccc16d4bf1cef497a56cf8c0aae4ca3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x20dd04c17afd5c9a8b3f2cdacaa8ee7907385bef + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x25e0a7767d03461eaf88b47cd9853722fe05dfd3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x22af33fe49fd1fa80c7149773dde5890d3c76f3b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xbc1852f8940991d91bd2b09a5abb5e7b8092a16c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x06a63c498ef95ad1fa4fff841955e512b4b2198a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xeb6d78148f001f3aa2f588997c5e102e489ad341 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xa4dc5a82839a148ff172b5b8ba9d52e681fd2261 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xef22cb48b8483df6152e1423b19df5553bbd818b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf83759099dc88f75fc83de854c41e0d9e83ada9b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x844c03892863b0e3e00e805e41b34527044d5c72 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xc9de725a4be9ab74b136c29d4731d6bebd7122e8 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x59e69094398afbea632f8bd63033bdd2443a3be1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x15f9eb4b9beafa9db35341c5694c0b6573809808 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x29cbd0510eec0327992cd6006e63f9fa8e7f33b7 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xcb1592591996765ec0efc1f92599a19767ee5ffa + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x26e550ac11b26f78a04489d5f20f24e3559f7dd9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x50327c6c5a14dcade707abad2e27eb517df87ab5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc575bd129848ce06a460a19466c30e1d0328f52c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x47000a7b27a75d44ffadfe9d0b97fa04d569b323 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x2196b84eace74867b73fb003aff93c11fce1d47a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xc4441c2be5d8fa8126822b9929ca0b81ea0de38e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x421b05cf5ce28cb7347e73e2278e84472f0e4a88 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xcdbddbdefb0ee3ef03a89afcd714aa4ef310d567 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf4308b0263723b121056938c2172868e408079d0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8cedb0680531d26e62abdbd0f4c5428b7fdc26d5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x49fb8ad7578148e17c3ef0c344ce23a66ed372c4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x40e3d1a4b2c47d9aa61261f5606136ef73e28042 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x60d95823f795f1972dbdbcd886955095e36e04cd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x761a3557184cbc07b7493da0661c41177b2f97fa + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x64c5cba9a1bfbd2a5faf601d91beff2dcac2c974 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x02f92800f57bcd74066f5709f1daa1a4302df875 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x291a50e611035b6562a2374b8b44de70aa8d7896 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x999faf0af2ff109938eefe6a7bf91ca56f0d07e1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x1a5b0aaf478bf1fda7b934c76e7692d722982a6d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x680447595e8b7b3aa1b43beb9f6098c79ac2ab3f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xc1eb7689147c81ac840d4ff0d298489fc7986d52 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x60bf4e7cf16ff34513514b968483b54beff42a81 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/optimism/0x5df7abe3c51c01dcf6d1f1f9a0ab4dc3759869b9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xfe049f59963545bf5469f968e04c9646d6e2c2c5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc0041ef357b183448b235a8ea73ce4e4ec8c265f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x12e377989a87da0f9b9166f0f875c9069eaa776c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xfc48314ad4ad5bd36a84e8307b86a68a01d95d9c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0521aaa7c96e25afee79fdd4f1bb48f008ae4eac + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x7a5f5ccd46ebd7ac30615836d988ca3bd57412b3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x20ef84969f6d81ff74ae4591c331858b20ad82cd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x4d70f1058b73198f12a76c193aef5db5dd75babd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x9239e9f9e325e706ef8b89936ece9d48896abbe3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xca73ed1815e5915489570014e024b7ebe65de679 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x79dacb99a8698052a9898e81fdf883c29efb93cb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x2f6c17fa9f9bc3600346ab4e48c0701e1d5962ae + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xba5e66fb16944da22a62ea4fd70ad02008744460 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x2b0772bea2757624287ffc7feb92d03aeae6f12d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc841b4ead3f70be99472ffdb88e5c3c7af6a481a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf8f97a79a3fa77104fab4814e3ed93899777de0d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf0d7cb351589c4b1520bf8d31afc87f7fb839c85 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x511ef9ad5e645e533d15df605b4628e3d0d0ff53 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x625bb9bb04bdca51871ed6d07e2dd9034e914631 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x291a8da3c42b7d7f00349d6f1be3c823a2b3fca4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf09034487c84954d49ae04bf6817148ffc2edb83 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1e2093ab84768948c6176db5ad98c909ce97f368 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x64fcc3a02eeeba05ef701b7eed066c6ebd5d4e51 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc796e499cc8f599a2a8280825d8bda92f7a895e0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xbdb0e1c40a76c5113a023d685b419b90b01e3d61 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x76c71f1703fbf19ffdcf3051e1e684cb9934510f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc655c331d1aa7f96c252f1f40ce13d80eac53504 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x85645b86243886b7c7c1da6288571f8bea6fc035 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x623cd3a3edf080057892aaf8d773bbb7a5c9b6e9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xab964f7b7b6391bd6c4e8512ef00d01f255d9c0d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x6112b8714221bbd96ae0a0032a683e38b475d06c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc2eeca228ebac45c339cc5e522dd3a10638155f1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x018dd3a0dd7f213cc822076b3800816d3ce1ed86 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x446c9033e7516d820cc9a2ce2d0b7328b579406f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x73a15fed60bf67631dc6cd7bc5b6e8da8190acf5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4448726b23483927c492f09c1dbfdffd3967b452 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xeeacc51af745846ddf46012b46c6910ea9b12898 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x25931894a86d47441213199621f1f2994e1c39aa + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x94a8b4ee5cd64c79d0ee816f467ea73009f51aa0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1a4e7febd24b6689704b10685857d8b30885f05e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8248270620aa532e4d64316017be5e873e37cc09 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xca7af58da871736994ce360f51ec6cd28351a3df + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xca4f53e6117623992126a9a45ce61682fe8678df + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x79bbf4508b1391af3a0f4b30bb5fc4aa9ab0e07c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xd2a530170d71a9cfe1651fb468e2b98f7ed7456b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xbf7970d56a150cd0b60bd08388a4a75a27777777 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xb87904db461005fc716a6bf9f2d451c33b10b80b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x708383ae0e80e75377d664e4d6344404dede119a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x2c89bbc92bd86f8075d1decc58c7f4e0107f286b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x288f4eb27400fa220d14b864259ad1b7f77c1594 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x2d57c47bc5d2432feeedf2c9150162a9862d3ccf + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x91da780bc7f4b7cf19abe90411a2a296ec5ff787 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xb89d354ad1b0d95a48b3de4607f75a8cd710c1ba + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x79bbf4508b1391af3a0f4b30bb5fc4aa9ab0e07c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x6263ad921e11ab47ae85f1daa725b8b3581baed3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x57edc3f1fd42c0d48230e964b1c5184b9c89b2ed + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xa608512bbc9934e4b1ddecf0f5fb38b6ad93308d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x9e6a46f294bb67c20f1d1e7afb0bbef614403b55 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x767a739d1a152639e9ea1d8c1bd55fdc5b217d7f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xfbecd19292b1effeaa7b2e61f5101ddb6744a1fb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf04d220b8136e2d3d4be08081dbb565c3c302ffd + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xce1eab31756a48915b7e7bb79c589835aac6242d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xd1d7aa941c71fd95e9d31bbd81937b3e71bd6231 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x53ae20d42e16626dc41c7842d9ce876358082370 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x5ab3d4c385b400f3abb49e80de2faf6a88a7b691 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xc438b0c0e80a8fa1b36898d1b36a3fc2ec371c54 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xbe35071605277d8be5a52c84a66ab1bc855a758d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x8899ec96ed8c96b5c86c23c3f069c3def75b6d97 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa2cd3d43c775978a96bdbf12d733d5a1ed94fb18 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb6aaa0efdfac186652e3b31a6f07a9a74d1b5a75 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6b0b3a982b4634ac68dd83a4dbf02311ce324181 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x32f4768fc4a238a58fc9da408d9a0da4333012e4 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x0721b3c9f19cfef1d622c918dcd431960f35e060 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x0caadd427a6feb5b5fc1137eb05aa7ddd9c08ce9 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x77b7787a09818502305c95d68a2571f090abb135 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x9f07f8a82cb1af1466252e505b7b7ddee103bc91 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xdb298285fe4c5410b05390ca80e8fbe9de1f259b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x4cfe63294dac27ce941d42a778a37f2b35fea21b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xdf7837de1f2fa4631d716cf2502f8b230f1dcc32 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xce899f26928a2b21c6a2fddd393ef37c61dba918 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x21e00ff5374a0b803e0dc13a72800aca95b4b09e + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xe4a7b54c0a30da69c04dc54b89868c185ff382bc + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xf857b2764095b9a5f57c3e71f82f297fe4e45334 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x9c632e6aaa3ea73f91554f8a3cb2ed2f29605e0c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x097b1b242d3ed90e191c5f83a62f41abe16f6ceb + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x504a26cf29674bc77a9341e73f88ccecc864034c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0c1dc73159e30c4b06170f2593d3118968a0dca5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x42e07fa3d31190731368ca2f88d12d80139dca42 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x3a46ed8fceb6ef1ada2e4600a522ae7e24d2ed18 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x4b361e60cf256b926ba15f157d69cac9cd037426 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xdd3acdbdc7b358df453a6cb6bca56c92aa5743aa + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x78ec15c5fd8efc5e924e9eebb9e549e29c785867 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x164ffdae2fe3891714bc2968f1875ca4fa1079d0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x98f4779fccb177a6d856dd1dfd78cd15b7cd2af5 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0xabe8e5cabe24cb36df9540088fd7ce1175b9bc52 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/bnb/0x80a78a9b6b1272fdb612b39181bf113706024875 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x7da2641000cbb407c329310c461b2cb9c70c3046 + 2025-01-18T00:50:03.630Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xfeac2eae96899709a43e252b6b92971d32f9c0f9 + 2025-01-18T00:50:03.630Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x0f51bb10119727a7e5ea3538074fb341f56b09ad + 2025-01-18T00:50:03.630Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x15700b564ca08d9439c58ca5053166e8317aa138 + 2025-01-18T00:50:03.630Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x59a529070fbb61e6d6c91f952ccb7f35c34cf8aa + 2025-01-18T00:50:03.630Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x1010107b4757c915bc2f1ecd08c85d1bb0be92e0 + 2025-01-18T00:50:03.630Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x3845badade8e6dff049820680d1f14bd3903a5d0 + 2025-01-18T00:50:03.630Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x6f365eb3686ee95bdefbae71f1728d62c0af7ab1 + 2025-01-18T00:50:03.630Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x85f17cf997934a597031b2e18a9ab6ebd4b9f6a4 + 2025-01-18T00:50:03.630Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xcc4304a31d09258b0029ea7fe63d032f52e44efe + 2025-01-18T00:50:03.630Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x1196c6704789620514fd25632abe15f69a50bc4f + 2025-01-18T00:50:03.630Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x7475fa4c36344f1d633964f02564f37162299194 + 2025-01-18T00:50:03.630Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x543ba622733bc9a7bfadd1d07b6c35ae1f9659d9 + 2025-01-18T00:50:03.630Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x20fd4c5396f7d9686f9997e0f10991957f7112fc + 2025-01-18T00:50:03.630Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x0b3ae50babe7ffa4e1a50569cee6bdefd4ccaee0 + 2025-01-18T00:50:03.630Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf1bb41f9ed87e6c7e1f70e921b7b4bee1df7ae9c + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x97ad75064b20fb2b2447fed4fa953bf7f007a706 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xad0d1436dd45dbd6d8e50ac82240b72f52d7ea89 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xa0ef786bf476fe0810408caba05e536ac800ff86 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xb5130f4767ab0acc579f25a76e8f9e977cb3f948 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xbb0e17ef65f82ab018d8edd776e8dd940327b28b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x8a60e489004ca22d775c5f2c657598278d17d9c2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4c1746a800d224393fe2470c70a35717ed4ea5f1 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0xf34960d9d60be18cc1d5afc1a6f012a723a28811 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x9be89d2a4cd102d8fecc6bf9da793be995c22541 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/ethereum/0x4eddb15a0abfa2c349e8065af9214e942d9a6d36 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x37a645648df29205c6261289983fb04ecd70b4b3 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x1cd9a56c8c2ea913c70319a44da75e99255aa46f + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x6b43732a9ae9f8654d496c0a075aa4aa43057a0b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/arbitrum/0x6d7187220f769bde541ff51dd37ee07416f861d2 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0x2f3e306d9f02ee8e8850f9040404918d0b345207 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/polygon/0xecdcb5b88f8e3c15f95c720c51c71c9e2080525d + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0xa1832f7f4e534ae557f9b5ab76de54b1873e498b + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x514d8e8099286a13486ef6c525c120f51c239b52 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x4837b18a6d7af6159c8665505b90a2ed393255e0 + 2025-01-24T22:24:05.375Z + 0.8 + + + https://app.uniswap.org/explore/tokens/base/0x6bfdb6f4e65ead27118592a41eb927cea6956198 + 2025-01-24T22:24:05.375Z 0.8 \ No newline at end of file diff --git a/apps/web/scripts/delete-unused-assets.sh b/apps/web/scripts/delete-unused-assets.sh new file mode 100644 index 00000000000..28865f706dc --- /dev/null +++ b/apps/web/scripts/delete-unused-assets.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Array to hold the list of unreferenced files +unreferenced_files=() + +# We look for assets in the /src and /public and then, check if they are referenced in +# the code, typically in either /src, /public (manifest.json) or /functions +while IFS= read -r -d $'\0' file; do + name="$(basename "$file")" + grep -rn -F -q "$name" ./src ./functions ./public + if [ $? -ne 0 ]; then + unreferenced_files+=("$file") + fi +done < <(find ./src ./public -type f \( -name "*.png" -o -name "*.svg" -o -name "*.jpg" \) -print0) + +# If we found any unreferenced files, prompt for deletion +if [ ${#unreferenced_files[@]} -ne 0 ]; then + echo "Found the following unreferenced files:" + for file in "${unreferenced_files[@]}"; do + echo "$file" + done + + read -p "Do you want to delete these files? (y/N) " confirm + if [[ $confirm =~ ^[Yy]$ ]]; then + echo "Deleting files..." + for file in "${unreferenced_files[@]}"; do + rm "$file" + echo "Deleted: $file" + done + echo "Deletion complete." + exit 0 + else + echo "Operation cancelled." + exit 1 + fi +fi + +# If no unreferenced files are found, exit successfully +exit 0 diff --git a/apps/web/src/assets/images/airdopBackground.png b/apps/web/src/assets/images/airdopBackground.png deleted file mode 100644 index 859fab3c9ef..00000000000 Binary files a/apps/web/src/assets/images/airdopBackground.png and /dev/null differ diff --git a/apps/web/src/assets/images/arbitrumCircle.png b/apps/web/src/assets/images/arbitrumCircle.png deleted file mode 100644 index 3a69836d552..00000000000 Binary files a/apps/web/src/assets/images/arbitrumCircle.png and /dev/null differ diff --git a/apps/web/src/assets/images/buy.svg b/apps/web/src/assets/images/buy.svg deleted file mode 100644 index 838c7f106ff..00000000000 --- a/apps/web/src/assets/images/buy.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/apps/web/src/assets/images/menu.svg b/apps/web/src/assets/images/menu.svg deleted file mode 100644 index 1545717172c..00000000000 --- a/apps/web/src/assets/images/menu.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/apps/web/src/assets/images/uniwallet.png b/apps/web/src/assets/images/uniwallet.png deleted file mode 100644 index a62a6b464dd..00000000000 Binary files a/apps/web/src/assets/images/uniwallet.png and /dev/null differ diff --git a/apps/web/src/assets/images/uniwallet_modal_icon.png b/apps/web/src/assets/images/uniwallet_modal_icon.png deleted file mode 100644 index 16bba8a9d11..00000000000 Binary files a/apps/web/src/assets/images/uniwallet_modal_icon.png and /dev/null differ diff --git a/apps/web/src/assets/images/wallet_banner_phone_image.png b/apps/web/src/assets/images/wallet_banner_phone_image.png deleted file mode 100644 index a436eefc0fe..00000000000 Binary files a/apps/web/src/assets/images/wallet_banner_phone_image.png and /dev/null differ diff --git a/apps/web/src/assets/images/welcomeModal-dark.jpg b/apps/web/src/assets/images/welcomeModal-dark.jpg deleted file mode 100644 index d7b80757137..00000000000 Binary files a/apps/web/src/assets/images/welcomeModal-dark.jpg and /dev/null differ diff --git a/apps/web/src/assets/images/welcomeModal-dark@2x.jpg b/apps/web/src/assets/images/welcomeModal-dark@2x.jpg deleted file mode 100644 index 5043bb67129..00000000000 Binary files a/apps/web/src/assets/images/welcomeModal-dark@2x.jpg and /dev/null differ diff --git a/apps/web/src/assets/images/welcomeModal-dark@3x.jpg b/apps/web/src/assets/images/welcomeModal-dark@3x.jpg deleted file mode 100644 index 1ce51e7849a..00000000000 Binary files a/apps/web/src/assets/images/welcomeModal-dark@3x.jpg and /dev/null differ diff --git a/apps/web/src/assets/images/welcomeModal-light.jpg b/apps/web/src/assets/images/welcomeModal-light.jpg deleted file mode 100644 index 849db5b3495..00000000000 Binary files a/apps/web/src/assets/images/welcomeModal-light.jpg and /dev/null differ diff --git a/apps/web/src/assets/images/welcomeModal-light@2x.jpg b/apps/web/src/assets/images/welcomeModal-light@2x.jpg deleted file mode 100644 index b8ae653a1e7..00000000000 Binary files a/apps/web/src/assets/images/welcomeModal-light@2x.jpg and /dev/null differ diff --git a/apps/web/src/assets/images/welcomeModal-light@3x.jpg b/apps/web/src/assets/images/welcomeModal-light@3x.jpg deleted file mode 100644 index ea606182c59..00000000000 Binary files a/apps/web/src/assets/images/welcomeModal-light@3x.jpg and /dev/null differ diff --git a/apps/web/src/assets/svg/base_background_icon.svg b/apps/web/src/assets/svg/base_background_icon.svg deleted file mode 100644 index 16b66d849ee..00000000000 --- a/apps/web/src/assets/svg/base_background_icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/apps/web/src/assets/svg/fiat_mask.svg b/apps/web/src/assets/svg/fiat_mask.svg deleted file mode 100644 index 46ca98f7fc7..00000000000 --- a/apps/web/src/assets/svg/fiat_mask.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/apps/web/src/assets/svg/filter.svg b/apps/web/src/assets/svg/filter.svg deleted file mode 100644 index 3cfaf73cec4..00000000000 --- a/apps/web/src/assets/svg/filter.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/apps/web/src/assets/svg/gas-icon.svg b/apps/web/src/assets/svg/gas-icon.svg deleted file mode 100644 index d90e095c535..00000000000 --- a/apps/web/src/assets/svg/gas-icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/apps/web/src/assets/svg/mobile-app-qr-logo.svg b/apps/web/src/assets/svg/mobile-app-qr-logo.svg deleted file mode 100644 index 08ed0c6e300..00000000000 --- a/apps/web/src/assets/svg/mobile-app-qr-logo.svg +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/web/src/assets/svg/papers-text.svg b/apps/web/src/assets/svg/papers-text.svg deleted file mode 100644 index dfd7400c9f8..00000000000 --- a/apps/web/src/assets/svg/papers-text.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/apps/web/src/assets/svg/phantom-icon.svg b/apps/web/src/assets/svg/phantom-icon.svg deleted file mode 100644 index 3d9309fde70..00000000000 --- a/apps/web/src/assets/svg/phantom-icon.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/web/src/assets/svg/static_route.svg b/apps/web/src/assets/svg/static_route.svg deleted file mode 100644 index 2880c87ddc3..00000000000 --- a/apps/web/src/assets/svg/static_route.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/apps/web/src/assets/svg/uniswapx_error.svg b/apps/web/src/assets/svg/uniswapx_error.svg deleted file mode 100644 index 833f69c10fc..00000000000 --- a/apps/web/src/assets/svg/uniswapx_error.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/web/src/assets/wallets/brave-icon.svg b/apps/web/src/assets/wallets/brave-icon.svg deleted file mode 100644 index b4fb5b6723d..00000000000 --- a/apps/web/src/assets/wallets/brave-icon.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/apps/web/src/assets/wallets/browser-wallet-dark.svg b/apps/web/src/assets/wallets/browser-wallet-dark.svg deleted file mode 100644 index af517ca5978..00000000000 --- a/apps/web/src/assets/wallets/browser-wallet-dark.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/apps/web/src/assets/wallets/ledger-icon.svg b/apps/web/src/assets/wallets/ledger-icon.svg deleted file mode 100644 index 078db767dde..00000000000 --- a/apps/web/src/assets/wallets/ledger-icon.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/apps/web/src/assets/wallets/rabby-icon.svg b/apps/web/src/assets/wallets/rabby-icon.svg deleted file mode 100644 index d61f871f708..00000000000 --- a/apps/web/src/assets/wallets/rabby-icon.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/web/src/assets/wallets/trustwallet-icon.svg b/apps/web/src/assets/wallets/trustwallet-icon.svg deleted file mode 100644 index b574317d998..00000000000 --- a/apps/web/src/assets/wallets/trustwallet-icon.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/apps/web/src/components/AccountDrawer/ActionTile.tsx b/apps/web/src/components/AccountDrawer/ActionTile.tsx index f15fb380c71..f5442870512 100644 --- a/apps/web/src/components/AccountDrawer/ActionTile.tsx +++ b/apps/web/src/components/AccountDrawer/ActionTile.tsx @@ -1,7 +1,7 @@ import { ButtonEmphasis, ButtonSize, LoadingButtonSpinner, ThemeButton } from 'components/Button/buttons' import Column from 'components/deprecated/Column' import Row from 'components/deprecated/Row' -import Tooltip from 'components/Tooltip' +import { MouseoverTooltip } from 'components/Tooltip' import styled from 'lib/styled-components' import { ReactNode, useReducer } from 'react' import { Info } from 'react-feather' @@ -107,7 +107,7 @@ export function ActionTile({ {error && ( {errorMessage} - + - + )} diff --git a/apps/web/src/components/AccountDrawer/AnalyticsToggle.tsx b/apps/web/src/components/AccountDrawer/AnalyticsToggle.tsx index 8ed827b680b..b0cc100a5b3 100644 --- a/apps/web/src/components/AccountDrawer/AnalyticsToggle.tsx +++ b/apps/web/src/components/AccountDrawer/AnalyticsToggle.tsx @@ -5,7 +5,7 @@ import { useTranslation } from 'react-i18next' import { analytics, getAnalyticsAtomDirect } from 'utilities/src/telemetry/analytics/analytics' export function AnalyticsToggle() { - const [allowAnalytics, setAllowAnalytics] = useState(true) + const [allowAnalytics, setAllowAnalytics] = useState(null) const { t } = useTranslation() useEffect(() => { @@ -21,6 +21,10 @@ export function AnalyticsToggle() { setAllowAnalytics(!allowAnalytics) }, [allowAnalytics]) + if (allowAnalytics === null) { + return null + } + return ( - + {' ' + process.env.REACT_APP_GIT_COMMIT_HASH.substring(0, 6)} - + ) : null } diff --git a/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/__snapshots__/CancelOrdersDialog.test.tsx.snap b/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/__snapshots__/CancelOrdersDialog.test.tsx.snap index acb65350ba5..8fe5a45d27a 100644 --- a/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/__snapshots__/CancelOrdersDialog.test.tsx.snap +++ b/apps/web/src/components/AccountDrawer/MiniPortfolio/Activity/__snapshots__/CancelOrdersDialog.test.tsx.snap @@ -439,91 +439,59 @@ exports[`CancelOrdersDialog should render limit order text 1`] = ` style="display: flex; align-items: stretch; flex-basis: auto; box-sizing: border-box; position: absolute; min-height: 0px; min-width: 0px; flex-shrink: 0; flex-direction: column; top: 0px; left: 0px; right: 0px; bottom: 0px; background-color: rgba(0, 0, 0, 0.6); z-index: 1040; pointer-events: auto; opacity: 0;" />
-
-
-
+ + + + Get help +
+ -
+
+
- Cancel limit + + + +
+ Cancel limit +
+
- - Your swap could execute before cancellation is processed. Your network costs cannot be refunded. Do you wish to proceed? -
+ + Your swap could execute before cancellation is processed. Your network costs cannot be refunded. Do you wish to proceed? +
- Network cost -
-
- - - - +
+ Network cost +
+
+ + - + +
-
-
- - + + +
@@ -1063,91 +1067,59 @@ exports[`CancelOrdersDialog should render order cancel correctly 1`] = ` style="display: flex; align-items: stretch; flex-basis: auto; box-sizing: border-box; position: absolute; min-height: 0px; min-width: 0px; flex-shrink: 0; flex-direction: column; top: 0px; left: 0px; right: 0px; bottom: 0px; background-color: rgba(0, 0, 0, 0.6); z-index: 1040; pointer-events: auto; opacity: 0;" />
-
-
-
+ + + + Get help +
+ -
+
+
- Cancel order + + + +
+ Cancel order +
+
- - Your swap could execute before cancellation is processed. Your network costs cannot be refunded. Do you wish to proceed? -
+ + Your swap could execute before cancellation is processed. Your network costs cannot be refunded. Do you wish to proceed? +
- Network cost -
-
- - - - +
+ Network cost +
+
+ + - + +
-
-
- - + + +
diff --git a/apps/web/src/components/AccountDrawer/__snapshots__/index.test.tsx.snap b/apps/web/src/components/AccountDrawer/__snapshots__/index.test.tsx.snap index e3b4b12f5d8..c424678159b 100644 --- a/apps/web/src/components/AccountDrawer/__snapshots__/index.test.tsx.snap +++ b/apps/web/src/components/AccountDrawer/__snapshots__/index.test.tsx.snap @@ -774,7 +774,7 @@ exports[`AccountDrawer tests AccountDrawer default styles 1`] = ` - 0x2260...C599 +
+ 0x2260...C599 +
diff --git a/apps/web/src/components/BreadcrumbNav/index.tsx b/apps/web/src/components/BreadcrumbNav/index.tsx index b4afc6693d9..d0642757ffb 100644 --- a/apps/web/src/components/BreadcrumbNav/index.tsx +++ b/apps/web/src/components/BreadcrumbNav/index.tsx @@ -1,5 +1,5 @@ import { Currency } from '@uniswap/sdk-core' -import Tooltip, { TooltipSize } from 'components/Tooltip' +import { MouseoverTooltip, TooltipSize } from 'components/Tooltip' import Row from 'components/deprecated/Row' import { useScreenSize } from 'hooks/screenSize/useScreenSize' import useCopyClipboard from 'hooks/useCopyClipboard' @@ -99,9 +99,15 @@ export const CurrentPageBreadcrumb = ({ isDisabled={!shouldEnableCopy} onClick={shouldEnableCopy ? copy : undefined} > - + {shortenAddress(address)} - + {shouldShowActions && ( )} diff --git a/apps/web/src/components/Charts/BandsIndicator/helpers/simple-clone.ts b/apps/web/src/components/Charts/BandsIndicator/helpers/simple-clone.ts index f5622448646..9a82b5ad5f4 100644 --- a/apps/web/src/components/Charts/BandsIndicator/helpers/simple-clone.ts +++ b/apps/web/src/components/Charts/BandsIndicator/helpers/simple-clone.ts @@ -1,6 +1,4 @@ -type Mutable = { - -readonly [K in keyof T]: T[K] -} +import { Mutable } from 'types/mutable' export function cloneReadonly(obj: T): Mutable { return JSON.parse(JSON.stringify(obj)) diff --git a/apps/web/src/components/Charts/LiquidityPositionRangeChart/LiquidityPositionRangeChart.tsx b/apps/web/src/components/Charts/LiquidityPositionRangeChart/LiquidityPositionRangeChart.tsx index b7f4d50ce6c..a8f64950d42 100644 --- a/apps/web/src/components/Charts/LiquidityPositionRangeChart/LiquidityPositionRangeChart.tsx +++ b/apps/web/src/components/Charts/LiquidityPositionRangeChart/LiquidityPositionRangeChart.tsx @@ -474,7 +474,14 @@ export function LiquidityPositionRangeChart({ overflow="hidden" > {priceData.loading && } - {dataUnavailable && } + {dataUnavailable && ( + + )} {shouldRenderChart && ( diff --git a/apps/web/src/components/Charts/LiquidityRangeInput/LiquidityRangeInput.tsx b/apps/web/src/components/Charts/LiquidityRangeInput/LiquidityRangeInput.tsx index 9f20bc0333c..5870233c014 100644 --- a/apps/web/src/components/Charts/LiquidityRangeInput/LiquidityRangeInput.tsx +++ b/apps/web/src/components/Charts/LiquidityRangeInput/LiquidityRangeInput.tsx @@ -11,6 +11,7 @@ import { PriceChartType } from 'components/Charts/utils' import { DropdownSelector } from 'components/DropdownSelector' import { useDensityChartData } from 'components/LiquidityChartRangeInput/hooks' import { DataQuality } from 'components/Tokens/TokenDetails/ChartSection/util' +import { ZERO_ADDRESS } from 'constants/misc' import { usePoolPriceChartData } from 'hooks/usePoolPriceChartData' import { getCurrencyAddressWithWrap, @@ -44,6 +45,7 @@ export function LiquidityRangeInput({ tickSpacing, protocolVersion, poolId, + hook, minPrice, maxPrice, setMinPrice, @@ -56,6 +58,7 @@ export function LiquidityRangeInput({ tickSpacing?: number protocolVersion: ProtocolVersion poolId: string + hook?: string minPrice?: number maxPrice?: number disableBrushInteraction?: boolean @@ -173,6 +176,7 @@ export function LiquidityRangeInput({ version: protocolVersion, feeAmount: Number(feeTier), tickSpacing, + hooks: hook ?? ZERO_ADDRESS, }) const sortedFormattedData = useMemo(() => { diff --git a/apps/web/src/components/ConfirmSwapModal/Modal.tsx b/apps/web/src/components/ConfirmSwapModal/Modal.tsx index ff5f6514838..947ba33d1b0 100644 --- a/apps/web/src/components/ConfirmSwapModal/Modal.tsx +++ b/apps/web/src/components/ConfirmSwapModal/Modal.tsx @@ -2,7 +2,6 @@ import { InterfaceModalName } from '@uniswap/analytics-events' import { AutoColumn } from 'components/deprecated/Column' import styled from 'lib/styled-components' import { PropsWithChildren } from 'react' -import { HeightAnimator } from 'ui/src' import { Modal } from 'uniswap/src/components/modals/Modal' import Trace from 'uniswap/src/features/telemetry/Trace' import { ModalName } from 'uniswap/src/features/telemetry/constants' @@ -23,20 +22,7 @@ export function SwapModal({ return ( - - {children} - + {children} ) diff --git a/apps/web/src/components/CurrencyInputPanel/SwapCurrencyInputPanel.tsx b/apps/web/src/components/CurrencyInputPanel/SwapCurrencyInputPanel.tsx index d6e0e531633..e07f9dec4af 100644 --- a/apps/web/src/components/CurrencyInputPanel/SwapCurrencyInputPanel.tsx +++ b/apps/web/src/components/CurrencyInputPanel/SwapCurrencyInputPanel.tsx @@ -10,7 +10,7 @@ import CurrencyLogo from 'components/Logo/CurrencyLogo' import { DoubleCurrencyLogo } from 'components/Logo/DoubleLogo' import { StyledNumericalInput } from 'components/NumericalInput' import CurrencySearchModal from 'components/SearchModal/CurrencySearchModal' -import Tooltip from 'components/Tooltip' +import { MouseoverTooltip } from 'components/Tooltip' import { AutoColumn } from 'components/deprecated/Column' import { RowBetween, RowFixed } from 'components/deprecated/Row' import { PrefetchBalancesWrapper } from 'graphql/data/apollo/AdaptiveTokenBalancesProvider' @@ -329,8 +329,9 @@ const SwapCurrencyInputPanel = forwardRef )} - } - + {Boolean(!hideInput && !hideBalance) && ( diff --git a/apps/web/src/components/Dialog/__snapshots__/Dialog.test.tsx.snap b/apps/web/src/components/Dialog/__snapshots__/Dialog.test.tsx.snap index b068ac30e96..0dd126dd80d 100644 --- a/apps/web/src/components/Dialog/__snapshots__/Dialog.test.tsx.snap +++ b/apps/web/src/components/Dialog/__snapshots__/Dialog.test.tsx.snap @@ -414,140 +414,144 @@ exports[` renders different button types 1`] = ` style="display: flex; align-items: stretch; flex-basis: auto; box-sizing: border-box; position: absolute; min-height: 0px; min-width: 0px; flex-shrink: 0; flex-direction: column; top: 0px; left: 0px; right: 0px; bottom: 0px; background-color: rgba(0, 0, 0, 0.6); z-index: 1040; pointer-events: auto; opacity: 0;" />
- -
- - - - Get help -
-
- - - - + + + + Get help +
+ + + + + +
-
-
-
- Mock Icon -
-
-
- Mock Title + Mock Icon
+
+
+ Mock Title +
+
+
+
+ Mock Description +
+
- Mock Description + Mock Body
-
- Mock Body -
-
-
- - + + +
@@ -917,139 +921,143 @@ exports[` renders the Dialog component correctly 1`] = ` style="display: flex; align-items: stretch; flex-basis: auto; box-sizing: border-box; position: absolute; min-height: 0px; min-width: 0px; flex-shrink: 0; flex-direction: column; top: 0px; left: 0px; right: 0px; bottom: 0px; background-color: rgba(0, 0, 0, 0.6); z-index: 1040; pointer-events: auto; opacity: 0;" />
- -
- - - - Get help -
-
- - - - + + + + Get help +
+ + + + + +
-
-
-
- Mock Icon -
-
-
- Mock Title + Mock Icon
+
+
+ Mock Title +
+
+
+
+ Mock Description +
+
- Mock Description + Mock Body
-
- Mock Body -
-
-
- - + + +
diff --git a/apps/web/src/components/DropdownSelector/index.tsx b/apps/web/src/components/DropdownSelector/index.tsx index c1548161382..404bcad697f 100644 --- a/apps/web/src/components/DropdownSelector/index.tsx +++ b/apps/web/src/components/DropdownSelector/index.tsx @@ -14,9 +14,8 @@ import { useShadowPropsMedium, } from 'ui/src' import { RotatableChevron } from 'ui/src/components/icons/RotatableChevron' -import { zIndices } from 'ui/src/theme' +import { INTERFACE_NAV_HEIGHT, zIndices } from 'ui/src/theme' import { iconSizes } from 'ui/src/theme/iconSizes' -import { INTERFACE_NAV_HEIGHT } from 'uniswap/src/theme/heights' export const InternalMenuItem = styled(Text, { display: 'flex', diff --git a/apps/web/src/components/FeatureFlagModal/FeatureFlagModal.tsx b/apps/web/src/components/FeatureFlagModal/FeatureFlagModal.tsx index 5a84a415da1..5bd33816015 100644 --- a/apps/web/src/components/FeatureFlagModal/FeatureFlagModal.tsx +++ b/apps/web/src/components/FeatureFlagModal/FeatureFlagModal.tsx @@ -250,6 +250,7 @@ export default function FeatureFlagModal() { + @@ -290,11 +291,6 @@ export default function FeatureFlagModal() { - - - - - diff --git a/apps/web/src/components/FeeSelector/FeeTierPercentageBadge.tsx b/apps/web/src/components/FeeSelector/FeeTierPercentageBadge.tsx index 01dd9a18301..a24e9603132 100644 --- a/apps/web/src/components/FeeSelector/FeeTierPercentageBadge.tsx +++ b/apps/web/src/components/FeeSelector/FeeTierPercentageBadge.tsx @@ -1,9 +1,8 @@ import { FeeAmount } from '@uniswap/v3-sdk' -import Badge from 'components/Badge/Badge' import { useFeeTierDistribution } from 'hooks/useFeeTierDistribution' import { PoolState } from 'hooks/usePools' import { Trans } from 'react-i18next' -import { ThemedText } from 'theme/components' +import { Text } from 'ui/src' export function FeeTierPercentageBadge({ feeAmount, @@ -16,16 +15,14 @@ export function FeeTierPercentageBadge({ }) { const pct = distributions?.[feeAmount]?.toFixed(0) return ( - - - {!distributions || poolState === PoolState.NOT_EXISTS || poolState === PoolState.INVALID ? ( - - ) : distributions[feeAmount] !== undefined ? ( - - ) : ( - - )} - - + + {!distributions || poolState === PoolState.NOT_EXISTS || poolState === PoolState.INVALID ? ( + + ) : distributions[feeAmount] !== undefined ? ( + + ) : ( + + )} + ) } diff --git a/apps/web/src/components/FeeSelector/index.tsx b/apps/web/src/components/FeeSelector/index.tsx index 9447147944f..277f4600da3 100644 --- a/apps/web/src/components/FeeSelector/index.tsx +++ b/apps/web/src/components/FeeSelector/index.tsx @@ -6,8 +6,6 @@ import Card from 'components/Card/cards' import { FeeOption } from 'components/FeeSelector/FeeOption' import { FeeTierPercentageBadge } from 'components/FeeSelector/FeeTierPercentageBadge' import { FEE_AMOUNT_DETAIL } from 'components/FeeSelector/shared' -import { AutoColumn } from 'components/deprecated/Column' -import { RowBetween } from 'components/deprecated/Row' import { useAccount } from 'hooks/useAccount' import { useFeeTierDistribution } from 'hooks/useFeeTierDistribution' import { PoolState, usePools } from 'hooks/usePools' @@ -16,9 +14,7 @@ import styled, { keyframes } from 'lib/styled-components' import { DynamicSection } from 'pages/AddLiquidityV3/styled' import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { Trans } from 'react-i18next' -import { Box } from 'rebass' -import { ThemedText } from 'theme/components' -import { RadioButtonGroup } from 'ui/src' +import { Flex, RadioButtonGroup, Text } from 'ui/src' import { UniverseChainId } from 'uniswap/src/features/chains/types' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { useTrace } from 'utilities/src/telemetry/trace/TraceContext' @@ -46,7 +42,7 @@ const FocusedOutlineCard = styled(Card)<{ pulsing: boolean }>` const Select = styled.div` align-items: flex-start; display: grid; - grid-template-columns: 1fr 1fr 1fr 1fr; + grid-template-columns: 1fr 1fr 1fr; grid-gap: 8px; width: 100%; ` @@ -160,45 +156,45 @@ export default function FeeSelector({ }, [previousFeeAmount, feeAmount]) return ( - + setPulsing(false)}> - - + + {!feeAmount ? ( <> - + - - + + - + ) : ( <> - + - + {distributions && ( - + - + )} )} - + setShowOptions(!showOptions)} width="auto" padding="4px" $borderRadius="6px"> {showOptions ? : } - +
{chainId && showOptions && ( @@ -237,6 +233,6 @@ export default function FeeSelector({ )} - + ) } diff --git a/apps/web/src/components/HoverInlineText.tsx b/apps/web/src/components/HoverInlineText.tsx index e2f16dfb7cd..411f722bc2d 100644 --- a/apps/web/src/components/HoverInlineText.tsx +++ b/apps/web/src/components/HoverInlineText.tsx @@ -1,6 +1,5 @@ -import Tooltip from 'components/Tooltip' +import { MouseoverTooltip } from 'components/Tooltip' import styled from 'lib/styled-components' -import { useState } from 'react' const TextWrapper = styled.span<{ margin: boolean @@ -35,18 +34,14 @@ const HoverInlineText = ({ textColor?: string link?: boolean }) => { - const [showHover, setShowHover] = useState(false) - if (!text) { return } if (text.length > maxCharacters) { return ( - + setShowHover(true)} - onMouseLeave={() => setShowHover(false)} margin={margin} adjustSize={adjustSize} textColor={textColor} @@ -56,7 +51,7 @@ const HoverInlineText = ({ > {' ' + text.slice(0, maxCharacters - 1) + '...'} - + ) } diff --git a/apps/web/src/components/IncreaseLiquidity/IncreaseLiquidityContext.tsx b/apps/web/src/components/IncreaseLiquidity/IncreaseLiquidityContext.tsx index 67ae7a1a17c..0a6054f7b82 100644 --- a/apps/web/src/components/IncreaseLiquidity/IncreaseLiquidityContext.tsx +++ b/apps/web/src/components/IncreaseLiquidity/IncreaseLiquidityContext.tsx @@ -4,6 +4,7 @@ import { DepositInfo } from 'components/Liquidity/types' import { Dispatch, PropsWithChildren, SetStateAction, createContext, useContext, useMemo, useState } from 'react' import { LiquidityModalInitialState } from 'state/application/reducer' import { PositionField } from 'types/position' +import { TransactionStep } from 'uniswap/src/features/transactions/swap/types/steps' export enum IncreaseLiquidityStep { Input, @@ -35,6 +36,8 @@ interface IncreaseLiquidityContextType { setIncreaseLiquidityState: Dispatch> unwrapNativeCurrency: boolean setUnwrapNativeCurrency: Dispatch> + currentTransactionStep?: { step: TransactionStep; accepted: boolean } + setCurrentTransactionStep: Dispatch> } const IncreaseLiquidityContext = createContext({ @@ -45,6 +48,8 @@ const IncreaseLiquidityContext = createContext({ setIncreaseLiquidityState: () => undefined, unwrapNativeCurrency: true, setUnwrapNativeCurrency: () => undefined, + currentTransactionStep: undefined, + setCurrentTransactionStep: () => undefined, }) export function useIncreaseLiquidityContext() { @@ -60,6 +65,9 @@ export function IncreaseLiquidityContextProvider({ children }: PropsWithChildren ...DEFAULT_INCREASE_LIQUIDITY_STATE, position: positionInfo, }) + const [currentTransactionStep, setCurrentTransactionStep] = useState< + { step: TransactionStep; accepted: boolean } | undefined + >() const derivedIncreaseLiquidityInfo = useDerivedIncreaseLiquidityInfo(increaseLiquidityState, unwrapNativeCurrency) @@ -72,8 +80,10 @@ export function IncreaseLiquidityContextProvider({ children }: PropsWithChildren derivedIncreaseLiquidityInfo, unwrapNativeCurrency, setUnwrapNativeCurrency, + currentTransactionStep, + setCurrentTransactionStep, }), - [increaseLiquidityState, derivedIncreaseLiquidityInfo, step, unwrapNativeCurrency], + [increaseLiquidityState, derivedIncreaseLiquidityInfo, step, unwrapNativeCurrency, currentTransactionStep], ) return {children} diff --git a/apps/web/src/components/IncreaseLiquidity/IncreaseLiquidityReview.tsx b/apps/web/src/components/IncreaseLiquidity/IncreaseLiquidityReview.tsx index 60cd5ca726b..dc944881eca 100644 --- a/apps/web/src/components/IncreaseLiquidity/IncreaseLiquidityReview.tsx +++ b/apps/web/src/components/IncreaseLiquidity/IncreaseLiquidityReview.tsx @@ -36,7 +36,8 @@ export function IncreaseLiquidityReview({ onClose }: { onClose: () => void }) { const { formatCurrencyAmount, formatPercent } = useLocalizationContext() - const { derivedIncreaseLiquidityInfo, increaseLiquidityState } = useIncreaseLiquidityContext() + const { derivedIncreaseLiquidityInfo, increaseLiquidityState, currentTransactionStep, setCurrentTransactionStep } = + useIncreaseLiquidityContext() const { txInfo, gasFeeEstimateUSD } = useIncreaseLiquidityTxContext() const { dependentAmount } = txInfo || {} @@ -57,13 +58,12 @@ export function IncreaseLiquidityReview({ onClose }: { onClose: () => void }) { ) const [steps, setSteps] = useState([]) - const [currentStep, setCurrentStep] = useState<{ step: TransactionStep; accepted: boolean } | undefined>() if (!increaseLiquidityState.position) { throw new Error('a position must be defined') } - const { currency0Amount, currency1Amount, feeTier, chainId } = increaseLiquidityState.position + const { version, poolId, currency0Amount, currency1Amount, feeTier, chainId } = increaseLiquidityState.position const currentPrice = usePositionCurrentPrice(increaseLiquidityState.position) const poolTokenPercentage = useGetPoolTokenPercentage(increaseLiquidityState.position) @@ -95,12 +95,12 @@ export function IncreaseLiquidityReview({ onClose }: { onClose: () => void }) { const newToken1AmountUSD = useUSDCValue(newToken1Amount) const onFailure = () => { - setCurrentStep(undefined) + setCurrentTransactionStep(undefined) } const onSuccess = () => { setSteps([]) - setCurrentStep(undefined) + setCurrentTransactionStep(undefined) onClose() } @@ -117,14 +117,13 @@ export function IncreaseLiquidityReview({ onClose }: { onClose: () => void }) { return } - const { version, poolId, currency0Amount, currency1Amount } = increaseLiquidityState.position dispatch( liquiditySaga.actions.trigger({ selectChain, startChainId, account, liquidityTxContext: txInfo, - setCurrentStep, + setCurrentStep: setCurrentTransactionStep, setSteps, onSuccess, onFailure, @@ -138,10 +137,9 @@ export function IncreaseLiquidityReview({ onClose }: { onClose: () => void }) { currency1: currencyAmounts?.TOKEN1?.currency, currency0AmountUsd: currencyAmountsUSDValue?.TOKEN0, currency1AmountUsd: currencyAmountsUSDValue?.TOKEN1, - chainId: startChainId, }), - expectedAmountBaseRaw: currency0Amount.quotient?.toString() ?? '0', - expectedAmountQuoteRaw: currency1Amount.quotient?.toString() ?? '0', + expectedAmountBaseRaw: currencyAmounts?.TOKEN0.quotient?.toString() ?? '-', + expectedAmountQuoteRaw: currencyAmounts?.TOKEN1.quotient?.toString() ?? '-', createPosition: false, }, }), @@ -157,8 +155,8 @@ export function IncreaseLiquidityReview({ onClose }: { onClose: () => void }) { - {currentStep ? ( - + {currentTransactionStep ? ( + ) : ( <> diff --git a/apps/web/src/components/IncreaseLiquidity/IncreaseLiquidityTxContext.tsx b/apps/web/src/components/IncreaseLiquidity/IncreaseLiquidityTxContext.tsx index f12b8c3e8d8..2a2c18e7ad9 100644 --- a/apps/web/src/components/IncreaseLiquidity/IncreaseLiquidityTxContext.tsx +++ b/apps/web/src/components/IncreaseLiquidity/IncreaseLiquidityTxContext.tsx @@ -3,10 +3,10 @@ import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb' import { Currency, CurrencyAmount } from '@uniswap/sdk-core' import { useIncreaseLiquidityContext } from 'components/IncreaseLiquidity/IncreaseLiquidityContext' import { useModalLiquidityInitialState } from 'components/Liquidity/hooks' -import { getProtocolItems } from 'components/Liquidity/utils' +import { getErrorMessageToDisplay, getProtocolItems, parseErrorMessageTitle } from 'components/Liquidity/utils' import { ZERO_ADDRESS } from 'constants/misc' import { getCurrencyAddressForTradingApi } from 'pages/Pool/Positions/create/utils' -import { PropsWithChildren, createContext, useContext, useMemo } from 'react' +import { PropsWithChildren, createContext, useContext, useEffect, useMemo, useState } from 'react' import { PositionField } from 'types/position' import { useCheckLpApprovalQuery } from 'uniswap/src/data/apiClients/tradingApi/useCheckLpApprovalQuery' import { useIncreaseLpPositionCalldataQuery } from 'uniswap/src/data/apiClients/tradingApi/useIncreaseLpPositionCalldataQuery' @@ -21,6 +21,7 @@ import { LiquidityTransactionType, } from 'uniswap/src/features/transactions/liquidity/types' import { useTransactionSettingsContext } from 'uniswap/src/features/transactions/settings/contexts/TransactionSettingsContext' +import { TransactionStepType } from 'uniswap/src/features/transactions/swap/types/steps' import { validatePermit, validateTransactionRequest } from 'uniswap/src/features/transactions/swap/utils/trade' import { logger } from 'utilities/src/logger/logger' import { ONE_SECOND_MS } from 'utilities/src/time/time' @@ -29,7 +30,7 @@ import { useAccount } from 'wagmi' interface IncreasePositionContextType { txInfo?: IncreasePositionTxAndGasInfo gasFeeEstimateUSD?: CurrencyAmount - error?: boolean + error: boolean | string refetch?: () => void } @@ -37,8 +38,9 @@ const IncreaseLiquidityTxContext = createContext { + setHasIncreaseErrorResponse(!!calldataError) + }, [calldataError, increaseCalldataQueryParams]) + const { increase, gasFee: actualGasFee, dependentAmount } = increaseCalldata || {} if (calldataError) { - logger.warn('IncreaseLiquidityTxContext', 'IncreaseLiquidityTxContext', 'IncreaseLpPositionCalldataQuery', { - error: JSON.stringify(calldataError), - increaseCalldataQueryParams: JSON.stringify(increaseCalldataQueryParams), - }) + logger.info( + 'IncreaseLiquidityTxContext', + 'IncreaseLiquidityTxContext', + parseErrorMessageTitle(calldataError, 'unknown IncreaseLpPositionCalldataQuery'), + { + error: JSON.stringify(calldataError), + increaseCalldataQueryParams: JSON.stringify(increaseCalldataQueryParams), + }, + ) } const { value: calculatedGasFee } = useTransactionGasFee(increase, !!actualGasFee) @@ -241,7 +268,7 @@ export function IncreaseLiquidityTxContextProvider({ children }: PropsWithChildr const value = { txInfo: increaseLiquidityTxContext, gasFeeEstimateUSD: totalGasFee ?? undefined, - error: Boolean(approvalError || calldataError), + error: getErrorMessageToDisplay({ approvalError, calldataError }), refetch: approvalError ? approvalRefetch : calldataError ? calldataRefetch : undefined, } diff --git a/apps/web/src/components/IncreaseLiquidity/hooks.tsx b/apps/web/src/components/IncreaseLiquidity/hooks.tsx index 7eaf576310f..d5cd02d0905 100644 --- a/apps/web/src/components/IncreaseLiquidity/hooks.tsx +++ b/apps/web/src/components/IncreaseLiquidity/hooks.tsx @@ -22,11 +22,11 @@ export function useDerivedIncreaseLiquidityInfo( const currency0Info = useCurrencyInfoWithUnwrapForTradingApi({ currency: positionInfo.currency0Amount.currency, - shouldUnwrap: unwrapNativeCurrency, + shouldUnwrap: unwrapNativeCurrency && positionInfo.version !== ProtocolVersion.V4, }) const currency1Info = useCurrencyInfoWithUnwrapForTradingApi({ currency: positionInfo.currency1Amount.currency, - shouldUnwrap: unwrapNativeCurrency, + shouldUnwrap: unwrapNativeCurrency && positionInfo.version !== ProtocolVersion.V4, }) const currency0 = currency0Info?.currency diff --git a/apps/web/src/components/Liquidity/DepositInputForm.tsx b/apps/web/src/components/Liquidity/DepositInputForm.tsx index d5cce35126f..2b76958a0a3 100644 --- a/apps/web/src/components/Liquidity/DepositInputForm.tsx +++ b/apps/web/src/components/Liquidity/DepositInputForm.tsx @@ -68,6 +68,7 @@ export function DepositInputForm({ onSetMax(field, amount) // TODO(WEB-4978): update this to account for gas } } + return ( {!deposit0Disabled && ( diff --git a/apps/web/src/components/Liquidity/FeeTierSearchModal.tsx b/apps/web/src/components/Liquidity/FeeTierSearchModal.tsx index 914ede1608a..e231c823353 100644 --- a/apps/web/src/components/Liquidity/FeeTierSearchModal.tsx +++ b/apps/web/src/components/Liquidity/FeeTierSearchModal.tsx @@ -3,6 +3,7 @@ import { FeePoolSelectAction, LiquidityEventName } from '@uniswap/analytics-even import { useAllFeeTierPoolData } from 'components/Liquidity/hooks' import { calculateTickSpacingFromFeeAmount, isDynamicFeeTier } from 'components/Liquidity/utils' import { StyledPercentInput } from 'components/PercentInput' +import { ZERO_ADDRESS } from 'constants/misc' import ms from 'ms' import { useCreatePositionContext } from 'pages/Pool/Positions/create/CreatePositionContext' import { NumericalInputMimic, NumericalInputSymbolContainer } from 'pages/Swap/common/shared' @@ -64,6 +65,7 @@ export function FeeTierSearchModal() { protocolVersion, currencies: derivedPositionInfo.currencies, withDynamicFeeTier, + hook: hook ?? ZERO_ADDRESS, }) const showCreateModal = !withDynamicFeeTier && (createModeEnabled || !hasExistingFeeTiers) diff --git a/apps/web/src/components/Liquidity/LiquidityPositionCard.tsx b/apps/web/src/components/Liquidity/LiquidityPositionCard.tsx index baa2a0cdfec..b3083fe2b38 100644 --- a/apps/web/src/components/Liquidity/LiquidityPositionCard.tsx +++ b/apps/web/src/components/Liquidity/LiquidityPositionCard.tsx @@ -50,6 +50,7 @@ import { useLocalizationContext } from 'uniswap/src/features/language/Localizati import { ModalName } from 'uniswap/src/features/telemetry/constants' import { useUSDCValue } from 'uniswap/src/features/transactions/swap/hooks/useUSDCPrice' import { NumberType } from 'utilities/src/format/types' +import { isV4UnsupportedChain } from 'utils/networkSupportsV4' import { useAccount } from 'wagmi' function DropdownOptionRender({ children, Icon }: { children: React.ReactNode; Icon: GeneratedIcon }) { @@ -105,6 +106,7 @@ export function LiquidityPositionCard({ const colors = useSporeColors() const isTouchDevice = useIsTouchDevice() const isV4Enabled = useFeatureFlag(FeatureFlags.V4Data) + const isMigrateEnabled = useFeatureFlag(FeatureFlags.MigrateV3ToV4) const [pricesInverted, setPricesInverted] = useState(false) const dispatch = useAppDispatch() @@ -174,15 +176,17 @@ export function LiquidityPositionCard({ return [...v2Options, migrateV2Option] } - const migrateV3Option = { - key: 'position-card-migrate', - onPress: () => { - navigate(`/migrate/v3/${chainInfo.urlParam}/${liquidityPosition.tokenId}`) - }, - render: (): ReactNode => ( - {t('pool.migrateLiquidity')} - ), - } + const migrateV3Option = isV4UnsupportedChain(liquidityPosition.chainId) + ? undefined + : { + key: 'position-card-migrate', + onPress: () => { + navigate(`/migrate/v3/${chainInfo.urlParam}/${liquidityPosition.tokenId}`) + }, + render: (): ReactNode => ( + {t('pool.migrateLiquidity')} + ), + } return [ { @@ -195,7 +199,7 @@ export function LiquidityPositionCard({ render: (): ReactNode => {t('pool.collectFees')}, }, ...v2Options, - isV4Enabled ? migrateV3Option : undefined, + isV4Enabled && isMigrateEnabled && liquidityPosition.version !== ProtocolVersion.V4 ? migrateV3Option : undefined, { key: 'position-card-separator', onPress: () => null, @@ -213,7 +217,7 @@ export function LiquidityPositionCard({ render: (): ReactNode => {t('pool.info')}, }, ].filter((option): option is MenuItemProp => option !== undefined) - }, [liquidityPosition, isV4Enabled, dispatch, t, account.chainId, navigate, switchChain]) + }, [liquidityPosition, isV4Enabled, isMigrateEnabled, dispatch, t, account.chainId, navigate, switchChain]) const priceOrderingForChart = useMemo(() => { if ( diff --git a/apps/web/src/components/Liquidity/analytics.ts b/apps/web/src/components/Liquidity/analytics.ts index ad810e8016d..ec2fe5f4113 100644 --- a/apps/web/src/components/Liquidity/analytics.ts +++ b/apps/web/src/components/Liquidity/analytics.ts @@ -3,7 +3,6 @@ import { LiquidityEventName } from '@uniswap/analytics-events' import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb' import { Currency, CurrencyAmount } from '@uniswap/sdk-core' import { FeeAmount } from '@uniswap/v3-sdk' -import { UniverseChainId } from 'uniswap/src/features/chains/types' import { LiquidityAnalyticsProperties } from 'uniswap/src/features/telemetry/types' import { TransactionStepType } from 'uniswap/src/features/transactions/swap/types/steps' import { currencyId, currencyIdToAddress } from 'uniswap/src/utils/currencyId' @@ -18,17 +17,15 @@ export function getLPBaseAnalyticsProperties({ currency1AmountUsd, version, poolId, - chainId, }: { trace: ITraceContext fee?: number | string // denominated in hundredths of bips currency0: Currency currency1: Currency - currency0AmountUsd: Maybe> - currency1AmountUsd: Maybe> + currency0AmountUsd: Maybe> + currency1AmountUsd: Maybe> version: ProtocolVersion poolId?: string - chainId?: UniverseChainId }): Omit { return { ...trace, @@ -36,19 +33,11 @@ export function getLPBaseAnalyticsProperties({ type: ProtocolVersion[version], fee_tier: (typeof fee === 'string' ? parseInt(fee) : fee) ?? FeeAmount.MEDIUM, pool_address: poolId, - chain_id: chainId, + chain_id: currency0.chainId, baseCurrencyId: currencyIdToAddress(currencyId(currency0)), quoteCurrencyId: currencyIdToAddress(currencyId(currency1)), - token0AmountUSD: currency0AmountUsd - ? currency0AmountUsd instanceof CurrencyAmount - ? parseFloat(currency0AmountUsd.quotient.toString()) - : currency0AmountUsd - : 0, - token1AmountUSD: currency1AmountUsd - ? currency1AmountUsd instanceof CurrencyAmount - ? parseFloat(currency1AmountUsd.quotient.toString()) - : currency1AmountUsd - : 0, + token0AmountUSD: currency0AmountUsd ? parseFloat(currency0AmountUsd.toExact()) : undefined, + token1AmountUSD: currency1AmountUsd ? parseFloat(currency1AmountUsd.toExact()) : undefined, } } diff --git a/apps/web/src/components/Liquidity/hooks.ts b/apps/web/src/components/Liquidity/hooks.ts index 65e86d74595..3692a82546e 100644 --- a/apps/web/src/components/Liquidity/hooks.ts +++ b/apps/web/src/components/Liquidity/hooks.ts @@ -9,6 +9,7 @@ import { mergeFeeTiers, } from 'components/Liquidity/utils' import { PriceOrdering, getPriceOrderingFromPositionForUI } from 'components/PositionListItem' +import { ZERO_ADDRESS } from 'constants/misc' import useIsTickAtLimit from 'hooks/useIsTickAtLimit' import JSBI from 'jsbi' import { OptionalCurrency } from 'pages/Pool/Positions/create/types' @@ -31,10 +32,12 @@ export function useAllFeeTierPoolData({ protocolVersion, currencies, withDynamicFeeTier = false, + hook, }: { chainId?: number protocolVersion: ProtocolVersion currencies: [OptionalCurrency, OptionalCurrency] + hook: string withDynamicFeeTier?: boolean }): { feeTierData: Record; hasExistingFeeTiers: boolean } { const { t } = useTranslation() @@ -47,6 +50,7 @@ export function useAllFeeTierPoolData({ protocolVersions: [protocolVersion], token0: getCurrencyAddressForTradingApi(sortedCurrencies[0]), token1: getCurrencyAddressForTradingApi(sortedCurrencies[1]), + hooks: hook ?? ZERO_ADDRESS, }, Boolean(chainId && sortedCurrencies?.[0] && sortedCurrencies?.[1]), ) diff --git a/apps/web/src/components/Liquidity/utils.tsx b/apps/web/src/components/Liquidity/utils.tsx index 7248af79da5..c3504083b18 100644 --- a/apps/web/src/components/Liquidity/utils.tsx +++ b/apps/web/src/components/Liquidity/utils.tsx @@ -451,6 +451,14 @@ export function getFlagWarning(flag: HookFlag, t: AppTFunction): FlagWarning | u info: t('position.hook.removeWarning'), dangerous: true, } + case HookFlag.BeforeDonate: + case HookFlag.AfterDonate: + return { + Icon: Flag, + name: t('common.donate'), + info: t('position.hook.donateWarning'), + dangerous: false, + } default: return undefined } @@ -610,7 +618,7 @@ export function getDisplayedAmountsFromDependentAmount({ displayUSDAmounts?: { [field in PositionField]?: CurrencyAmount } displayCurrencyAmounts?: { [field in PositionField]?: CurrencyAmount } } { - if (dependentAmount && exactField === PositionField.TOKEN1 && currencyAmounts?.TOKEN0 && token0) { + if (dependentAmount && exactField === PositionField.TOKEN1 && currencyAmounts?.TOKEN0?.greaterThan(0) && token0) { const dependentAmount0 = CurrencyAmount.fromRawAmount(token0, dependentAmount) const ratio = dependentAmount0.divide(currencyAmounts?.TOKEN0) return { @@ -627,7 +635,12 @@ export function getDisplayedAmountsFromDependentAmount({ TOKEN0: dependentAmount0 ?? currencyAmounts?.TOKEN0, }, } - } else if (dependentAmount && exactField === PositionField.TOKEN0 && currencyAmounts?.TOKEN1 && token1) { + } else if ( + dependentAmount && + exactField === PositionField.TOKEN0 && + currencyAmounts?.TOKEN1?.greaterThan(0) && + token1 + ) { const dependentAmount1 = CurrencyAmount.fromRawAmount(token1, dependentAmount) const ratio = dependentAmount1.divide(currencyAmounts?.TOKEN1) return { @@ -651,3 +664,37 @@ export function getDisplayedAmountsFromDependentAmount({ displayCurrencyAmounts: currencyAmounts, } } + +// Takes the two potential errors from calls to the trading api and returns: +// - false if there is no error +// - a string with an error message if one can be parsed +// - true if there is an error but no message could be parsed +// The calldata error takes precedence over the approval error for the message. +export function getErrorMessageToDisplay({ + calldataError, + approvalError, +}: { + calldataError: unknown + approvalError?: unknown +}): string | boolean { + if (calldataError) { + return parseErrorMessageTitle(calldataError) || true + } + + if (approvalError) { + return parseErrorMessageTitle(approvalError) || true + } + + return false +} + +export function parseErrorMessageTitle(error: unknown, defaultTitle: string): string +export function parseErrorMessageTitle(error: unknown): string | undefined +export function parseErrorMessageTitle(error: unknown, defaultTitle?: string) { + if (!error) { + return defaultTitle + } + + const errorWithData = error as { data?: { detail?: string }; name?: string } + return errorWithData.data?.detail || errorWithData.name || defaultTitle +} diff --git a/apps/web/src/components/LiquidityChartRangeInput/index.tsx b/apps/web/src/components/LiquidityChartRangeInput/index.tsx index fcb4b7aa159..91437dc66b3 100644 --- a/apps/web/src/components/LiquidityChartRangeInput/index.tsx +++ b/apps/web/src/components/LiquidityChartRangeInput/index.tsx @@ -6,6 +6,7 @@ import { Chart } from 'components/LiquidityChartRangeInput/Chart' import { useDensityChartData } from 'components/LiquidityChartRangeInput/hooks' import { ZoomLevels } from 'components/LiquidityChartRangeInput/types' import { AutoColumn, ColumnCenter } from 'components/deprecated/Column' +import { ZERO_ADDRESS } from 'constants/misc' import { useColor } from 'hooks/useColor' import styled, { useTheme } from 'lib/styled-components' import { saturate } from 'polished' @@ -86,6 +87,7 @@ export default function LiquidityChartRangeInput({ currencyB, feeAmount, tickSpacing, + hook, poolId, protocolVersion, ticksAtLimit, @@ -100,6 +102,7 @@ export default function LiquidityChartRangeInput({ currencyB?: Currency feeAmount?: FeeAmount tickSpacing?: number + hook?: string poolId?: string protocolVersion: ProtocolVersion ticksAtLimit: { [bound in Bound]?: boolean | undefined } @@ -124,6 +127,7 @@ export default function LiquidityChartRangeInput({ version: protocolVersion, poolId, tickSpacing, + hooks: hook ?? ZERO_ADDRESS, }) const onBrushDomainChangeEnded = useCallback( diff --git a/apps/web/src/components/Logo/HolidayUniIcon.tsx b/apps/web/src/components/Logo/HolidayUniIcon.tsx deleted file mode 100644 index 99a1ce8d0d1..00000000000 --- a/apps/web/src/components/Logo/HolidayUniIcon.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { ReactComponent as WinterUni } from 'assets/svg/winter-uni.svg' -import { SVGProps } from 'components/Logo/UniIcon' -import { ReactElement } from 'react' -import { useTranslation } from 'react-i18next' - -export default function HolidayUniIcon(props: SVGProps): ReactElement | null { - const { t } = useTranslation() - - // months in javascript are 0 indexed... - const currentMonth = `${new Date().getMonth() + 1}` - - const MONTH_TO_HOLIDAY_UNI: { [date: string]: (props: SVGProps) => ReactElement } = { - '12': (props) => , - '1': (props) => , - } - const HolidayUni = MONTH_TO_HOLIDAY_UNI[currentMonth] - - return HolidayUni ? : null -} diff --git a/apps/web/src/components/Logo/NavIcon.tsx b/apps/web/src/components/Logo/NavIcon.tsx index 6c8bf240a57..7cf43044a98 100644 --- a/apps/web/src/components/Logo/NavIcon.tsx +++ b/apps/web/src/components/Logo/NavIcon.tsx @@ -1,6 +1,8 @@ -import HolidayUniIcon from 'components/Logo/HolidayUniIcon' +import { ReactComponent as WinterUni } from 'assets/svg/winter-uni.svg' import { SVGProps } from 'components/Logo/UniIcon' import styled from 'lib/styled-components' +import { useMemo } from 'react' +import { useTranslation } from 'react-i18next' function Logo({ onClick }: { onClick?: () => void }) { return ( @@ -70,8 +72,19 @@ type NavIconProps = SVGProps & { onClick?: () => void } -export const NavIcon = ({ clickable, onClick, ...props }: NavIconProps) => ( - - {HolidayUniIcon(props) !== null ? : } - -) +export const NavIcon = ({ clickable, onClick, ...props }: NavIconProps) => { + const { t } = useTranslation() + const showHolidayUni = useMemo(() => { + const date = new Date() + // months in javascript are 0 indexed... + const month = date.getMonth() + 1 + const day = date.getDate() + return month === 12 || (month === 1 && day <= 7) + }, []) + + return ( + + {showHolidayUni ? : } + + ) +} diff --git a/apps/web/src/components/NavBar/NavDropdown/NavDropdown.tsx b/apps/web/src/components/NavBar/NavDropdown/NavDropdown.tsx index ff289436b04..e51dacb23c9 100644 --- a/apps/web/src/components/NavBar/NavDropdown/NavDropdown.tsx +++ b/apps/web/src/components/NavBar/NavDropdown/NavDropdown.tsx @@ -1,6 +1,6 @@ import { ReactNode, RefObject } from 'react' import { Flex, Popover, WebBottomSheet, styled, useScrollbarStyles, useShadowPropsMedium } from 'ui/src' -import { INTERFACE_NAV_HEIGHT } from 'uniswap/src/theme/heights' +import { INTERFACE_NAV_HEIGHT } from 'ui/src/theme' const NavDropdownContent = styled(Flex, { borderRadius: '$rounded16', diff --git a/apps/web/src/components/NavBar/SearchBar/__snapshots__/SearchBarDropdown.test.tsx.snap b/apps/web/src/components/NavBar/SearchBar/__snapshots__/SearchBarDropdown.test.tsx.snap index c756b36bd3d..a236d3e89d1 100644 --- a/apps/web/src/components/NavBar/SearchBar/__snapshots__/SearchBarDropdown.test.tsx.snap +++ b/apps/web/src/components/NavBar/SearchBar/__snapshots__/SearchBarDropdown.test.tsx.snap @@ -188,7 +188,7 @@ exports[`load popular tokens in searchbar should render popular tokens 1`] = ` isOpen && toggleOpen()) - useKeyPress({ + useKeyDown({ callback: toggleOpen, keys: ['/'], disabled: isOpen, preventDefault: !isOpen, }) - useKeyPress({ + useKeyDown({ callback: toggleOpen, keys: ['Escape'], keyAction: KeyAction.UP, diff --git a/apps/web/src/components/NavBar/Tabs/Tabs.tsx b/apps/web/src/components/NavBar/Tabs/Tabs.tsx index de11b6b4690..3f7119926f1 100644 --- a/apps/web/src/components/NavBar/Tabs/Tabs.tsx +++ b/apps/web/src/components/NavBar/Tabs/Tabs.tsx @@ -1,6 +1,6 @@ import { NavDropdown, NavDropdownTabWrapper } from 'components/NavBar/NavDropdown/index' import { TabsItem, TabsSection, useTabsContent } from 'components/NavBar/Tabs/TabsContent' -import { useKeyPress } from 'hooks/useKeyPress' +import { useKeyDown } from 'hooks/useKeyPress' import styled from 'lib/styled-components' import { useCallback, useEffect, useRef, useState } from 'react' import { NavLink, useLocation, useNavigate } from 'react-router-dom' @@ -17,6 +17,7 @@ const ItemContainer = styled.div` border-radius: 12px; background: ${({ theme }) => theme.surface2}; cursor: pointer; + height: 48px; :hover { background: ${({ theme }) => theme.surface3}; } @@ -128,7 +129,7 @@ const Tab = ({ [items, navigate, closeMenu, isOpen], ) - useKeyPress({ + useKeyDown({ callback: handleKeyDown, keys: items?.map((i) => i.quickKey.toLowerCase()), disabled: !navHotkeysEnabled || !isOpen, diff --git a/apps/web/src/components/NavBar/index.tsx b/apps/web/src/components/NavBar/index.tsx index 09657dcdcf4..5227d97d6ae 100644 --- a/apps/web/src/components/NavBar/index.tsx +++ b/apps/web/src/components/NavBar/index.tsx @@ -18,10 +18,10 @@ import { useProfilePageState } from 'nft/hooks' import { ProfilePageStateType } from 'nft/types' import { BREAKPOINTS } from 'theme' import { Z_INDEX } from 'theme/zIndex' +import { INTERFACE_NAV_HEIGHT } from 'ui/src/theme' import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains' import { FeatureFlags } from 'uniswap/src/features/gating/flags' import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' -import { INTERFACE_NAV_HEIGHT } from 'uniswap/src/theme/heights' const Nav = styled.nav` padding: 0px 12px; diff --git a/apps/web/src/components/Pools/PoolDetails/ChartSection/hooks.ts b/apps/web/src/components/Pools/PoolDetails/ChartSection/hooks.ts index 33c0c3b91e2..e83d7558f18 100644 --- a/apps/web/src/components/Pools/PoolDetails/ChartSection/hooks.ts +++ b/apps/web/src/components/Pools/PoolDetails/ChartSection/hooks.ts @@ -26,15 +26,18 @@ export function usePDPPriceChartData( export function usePDPVolumeChartData( variables: PDPChartQueryVars, ): ChartQueryResult { - const { data, loading } = usePoolVolumeHistoryQuery({ variables }) + const { data, loading } = usePoolVolumeHistoryQuery({ + variables, + skip: !variables.addressOrId || variables.addressOrId === '', + }) return useMemo(() => { - const { historicalVolume } = data?.v2Pair ?? data?.v3Pool ?? {} + const { historicalVolume } = data?.v2Pair ?? data?.v3Pool ?? data?.v4Pool ?? {} const entries = historicalVolume?.filter((amt): amt is TimestampedAmount => amt !== null).map(withUTCTimestamp) ?? [] const dataQuality = checkDataQuality(entries, ChartType.VOLUME, variables.duration) return { chartType: ChartType.VOLUME, entries, loading, dataQuality } - }, [data?.v2Pair, data?.v3Pool, loading, variables.duration]) + }, [data?.v2Pair, data?.v3Pool, data?.v4Pool, loading, variables.duration]) } diff --git a/apps/web/src/components/Pools/PoolDetails/PoolDetailsLink.tsx b/apps/web/src/components/Pools/PoolDetails/PoolDetailsLink.tsx index c30b9c15043..85618c68ab4 100644 --- a/apps/web/src/components/Pools/PoolDetails/PoolDetailsLink.tsx +++ b/apps/web/src/components/Pools/PoolDetails/PoolDetailsLink.tsx @@ -3,7 +3,7 @@ import { ExplorerIcon } from 'components/Icons/ExplorerIcon' import CurrencyLogo from 'components/Logo/CurrencyLogo' import { DoubleCurrencyLogo } from 'components/Logo/DoubleLogo' import { DetailBubble, SmallDetailBubble } from 'components/Pools/PoolDetails/shared' -import Tooltip, { TooltipSize } from 'components/Tooltip' +import { MouseoverTooltip, TooltipSize } from 'components/Tooltip' import Row from 'components/deprecated/Row' import { NATIVE_CHAIN_ID } from 'constants/tokens' import { getTokenDetailsURL, gqlToCurrency } from 'graphql/data/util' @@ -170,12 +170,18 @@ export function PoolDetailsLink({ address, chainId, tokens, loading }: PoolDetai {!isNative && ( - + {shortenAddress(address, truncateAddress ? 2 : undefined, truncateAddress === 'both' ? 2 : undefined)} - + )} {explorerUrl && ( diff --git a/apps/web/src/components/Pools/PoolDetails/PoolDetailsStatsButtons.test.tsx b/apps/web/src/components/Pools/PoolDetails/PoolDetailsStatsButtons.test.tsx index 5b0bbeaa448..fb1cfae78da 100644 --- a/apps/web/src/components/Pools/PoolDetails/PoolDetailsStatsButtons.test.tsx +++ b/apps/web/src/components/Pools/PoolDetails/PoolDetailsStatsButtons.test.tsx @@ -47,7 +47,6 @@ describe('PoolDetailsStatsButton', () => { navigateToFiatOnRamp: () => {}, onSwapChainsChanged: () => {}, isSwapTokenSelectorOpen: false, - setSwapInputChainId: () => {}, setSwapOutputChainId: () => {}, setIsSwapTokenSelectorOpen: () => {}, signer: undefined, diff --git a/apps/web/src/components/Pools/PoolDetails/__snapshots__/PoolDetailsHeader.test.tsx.snap b/apps/web/src/components/Pools/PoolDetails/__snapshots__/PoolDetailsHeader.test.tsx.snap index 15a870ea373..0b9fbdd5c20 100644 --- a/apps/web/src/components/Pools/PoolDetails/__snapshots__/PoolDetailsHeader.test.tsx.snap +++ b/apps/web/src/components/Pools/PoolDetails/__snapshots__/PoolDetailsHeader.test.tsx.snap @@ -265,7 +265,9 @@ exports[`PoolDetailsHeader renders breadcrumb text correctly 1`] = `
- 0x88e6...5640 +
+ 0x88e6...5640 +
diff --git a/apps/web/src/components/Pools/PoolDetails/__snapshots__/PoolDetailsLink.test.tsx.snap b/apps/web/src/components/Pools/PoolDetails/__snapshots__/PoolDetailsLink.test.tsx.snap index d8838569f39..a09889e86d3 100644 --- a/apps/web/src/components/Pools/PoolDetails/__snapshots__/PoolDetailsLink.test.tsx.snap +++ b/apps/web/src/components/Pools/PoolDetails/__snapshots__/PoolDetailsLink.test.tsx.snap @@ -264,35 +264,37 @@ exports[`PoolDetailsHeader renders link for pool address 1`] = `
-
- 0x88e6...5640 - +
- - - + 0x88e6...5640 + + + + +
-
- 0xA0b8...eB48 - +
- - - + 0xA0b8...eB48 + + + + +
@@ -1070,34 +1064,36 @@ exports[`PoolDetailsStatsButton renders both buttons correctly 1`] = `
-
- - dropdown.svg - -
- + + dropdown.svg + + + + @@ -1212,34 +1208,36 @@ exports[`PoolDetailsStatsButton renders both buttons correctly 1`] = `
-
- - dropdown.svg - - - + + dropdown.svg + + + + @@ -1296,80 +1294,10 @@ exports[`PoolDetailsStatsButton renders both buttons correctly 1`] = ` -
-
-
-
-
- -
-
-
-
-
- - Swapping across networks - -
- - - Move ETH, USDC, and more across 8+ networks. - - -
-
- - - -
-
-
-
diff --git a/apps/web/src/components/RemoveLiquidity/RemoveLiquidityModalContext.tsx b/apps/web/src/components/RemoveLiquidity/RemoveLiquidityModalContext.tsx index 63f3075ae77..2c9282928d2 100644 --- a/apps/web/src/components/RemoveLiquidity/RemoveLiquidityModalContext.tsx +++ b/apps/web/src/components/RemoveLiquidity/RemoveLiquidityModalContext.tsx @@ -1,6 +1,7 @@ import { useModalLiquidityInitialState } from 'components/Liquidity/hooks' import { Dispatch, PropsWithChildren, SetStateAction, createContext, useContext, useMemo, useState } from 'react' import { LiquidityModalInitialState } from 'state/application/reducer' +import { TransactionStep } from 'uniswap/src/features/transactions/swap/types/steps' export enum DecreaseLiquidityStep { Input, @@ -16,6 +17,8 @@ type RemoveLiquidityModalState = { percentInvalid?: boolean unwrapNativeCurrency: boolean setUnwrapNativeCurrency: Dispatch> + currentTransactionStep?: { step: TransactionStep; accepted: boolean } + setCurrentTransactionStep: Dispatch> } const RemoveLiquidityModalContext = createContext({ @@ -26,12 +29,17 @@ const RemoveLiquidityModalContext = createContext({ percentInvalid: true, unwrapNativeCurrency: true, setUnwrapNativeCurrency: () => null, + currentTransactionStep: undefined, + setCurrentTransactionStep: () => null, }) export function RemoveLiquidityModalContextProvider({ children }: PropsWithChildren): JSX.Element { const [step, setStep] = useState(DecreaseLiquidityStep.Input) const [unwrapNativeCurrency, setUnwrapNativeCurrency] = useState(true) const [percent, setPercent] = useState('') + const [currentTransactionStep, setCurrentTransactionStep] = useState< + { step: TransactionStep; accepted: boolean } | undefined + >() const positionInfo = useModalLiquidityInitialState() const percentInvalid = percent === '0' || percent === '' || !percent @@ -45,8 +53,18 @@ export function RemoveLiquidityModalContextProvider({ children }: PropsWithChild percentInvalid, unwrapNativeCurrency, setUnwrapNativeCurrency, + currentTransactionStep, + setCurrentTransactionStep, }), - [percent, step, positionInfo, percentInvalid, unwrapNativeCurrency, setUnwrapNativeCurrency], + [ + percent, + step, + positionInfo, + percentInvalid, + unwrapNativeCurrency, + setUnwrapNativeCurrency, + currentTransactionStep, + ], ) return {children} diff --git a/apps/web/src/components/RemoveLiquidity/RemoveLiquidityReview.tsx b/apps/web/src/components/RemoveLiquidity/RemoveLiquidityReview.tsx index c01760cc26c..e32aa30bfca 100644 --- a/apps/web/src/components/RemoveLiquidity/RemoveLiquidityReview.tsx +++ b/apps/web/src/components/RemoveLiquidity/RemoveLiquidityReview.tsx @@ -36,11 +36,11 @@ import { useTrace } from 'utilities/src/telemetry/trace/TraceContext' export function RemoveLiquidityReview({ onClose }: { onClose: () => void }) { const { t } = useTranslation() + const { percent, positionInfo, unwrapNativeCurrency, currentTransactionStep, setCurrentTransactionStep } = + useRemoveLiquidityModalContext() const [steps, setSteps] = useState([]) - const { percent, positionInfo, unwrapNativeCurrency } = useRemoveLiquidityModalContext() const removeLiquidityTxContext = useRemoveLiquidityTxContext() const { formatCurrencyAmount, formatPercent } = useLocalizationContext() - const [currentStep, setCurrentStep] = useState<{ step: TransactionStep; accepted: boolean } | undefined>() const currency0FiatAmount = useUSDCValue(positionInfo?.currency0Amount) ?? undefined const currency1FiatAmount = useUSDCValue(positionInfo?.currency1Amount) ?? undefined const selectChain = useSelectChain() @@ -53,12 +53,12 @@ export function RemoveLiquidityReview({ onClose }: { onClose: () => void }) { const onSuccess = () => { setSteps([]) - setCurrentStep(undefined) + setCurrentTransactionStep(undefined) onClose() } const onFailure = () => { - setCurrentStep(undefined) + setCurrentTransactionStep(undefined) } if (!positionInfo) { @@ -67,7 +67,7 @@ export function RemoveLiquidityReview({ onClose }: { onClose: () => void }) { const { feeValue0, feeValue1, fiatFeeValue0, fiatFeeValue1 } = useV3OrV4PositionDerivedInfo(positionInfo) - const { currency0Amount, currency1Amount, chainId } = positionInfo + const { currency0Amount, currency1Amount, chainId, feeTier, version, poolId } = positionInfo const currentPrice = usePositionCurrentPrice(positionInfo) @@ -125,14 +125,13 @@ export function RemoveLiquidityReview({ onClose }: { onClose: () => void }) { if (!account || account?.type !== AccountType.SignerMnemonic || !isValidTx || !positionInfo) { return } - const { feeTier, version, poolId, currency0Amount, currency1Amount } = positionInfo dispatch( liquiditySaga.actions.trigger({ selectChain, startChainId, account, liquidityTxContext: txContext, - setCurrentStep, + setCurrentStep: setCurrentTransactionStep, setSteps, onSuccess, onFailure, @@ -141,15 +140,14 @@ export function RemoveLiquidityReview({ onClose }: { onClose: () => void }) { trace, fee: feeTier, poolId, - currency0: currency0Amount.currency, - currency1: currency1Amount.currency, + currency0: currency0Info.currency, + currency1: currency1Info.currency, currency0AmountUsd: currency0AmountToRemoveUSD, currency1AmountUsd: currency1AmountToRemoveUSD, version, - chainId: startChainId, }), - expectedAmountBaseRaw: currency0AmountToRemoveUSD?.quotient.toString() ?? '0', - expectedAmountQuoteRaw: currency1AmountToRemoveUSD?.quotient.toString() ?? '0', + expectedAmountBaseRaw: unwrappedCurrency0AmountToRemove?.quotient.toString() ?? '-', + expectedAmountQuoteRaw: unwrappedCurrency1AmountToRemove?.quotient.toString() ?? '-', closePosition: percent === '100', }, }), @@ -204,8 +202,8 @@ export function RemoveLiquidityReview({ onClose }: { onClose: () => void }) { )} - {currentStep ? ( - + {currentTransactionStep ? ( + ) : ( <> diff --git a/apps/web/src/components/RemoveLiquidity/RemoveLiquidityTxContext.tsx b/apps/web/src/components/RemoveLiquidity/RemoveLiquidityTxContext.tsx index 9e7bb9e2cbb..8a0c495f246 100644 --- a/apps/web/src/components/RemoveLiquidity/RemoveLiquidityTxContext.tsx +++ b/apps/web/src/components/RemoveLiquidity/RemoveLiquidityTxContext.tsx @@ -21,7 +21,7 @@ export type RemoveLiquidityTxInfo = { decreaseCalldataLoading: boolean approvalLoading: boolean txContext?: ValidatedDecreasePositionTxAndGasInfo - error?: boolean + error: boolean | string refetch?: () => void } diff --git a/apps/web/src/components/RemoveLiquidity/hooks.ts b/apps/web/src/components/RemoveLiquidity/hooks.ts index c398f7b91fe..27533fb373c 100644 --- a/apps/web/src/components/RemoveLiquidity/hooks.ts +++ b/apps/web/src/components/RemoveLiquidity/hooks.ts @@ -1,13 +1,13 @@ // eslint-disable-next-line no-restricted-imports import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb' import { useV3OrV4PositionDerivedInfo } from 'components/Liquidity/hooks' -import { getProtocolItems } from 'components/Liquidity/utils' +import { getErrorMessageToDisplay, getProtocolItems, parseErrorMessageTitle } from 'components/Liquidity/utils' import { useRemoveLiquidityModalContext } from 'components/RemoveLiquidity/RemoveLiquidityModalContext' import { RemoveLiquidityTxInfo } from 'components/RemoveLiquidity/RemoveLiquidityTxContext' import { ZERO_ADDRESS } from 'constants/misc' import JSBI from 'jsbi' import { useCurrencyInfoWithUnwrapForTradingApi } from 'pages/Pool/Positions/create/utils' -import { useMemo } from 'react' +import { useEffect, useMemo, useState } from 'react' import { useCheckLpApprovalQuery } from 'uniswap/src/data/apiClients/tradingApi/useCheckLpApprovalQuery' import { useDecreaseLpPositionCalldataQuery } from 'uniswap/src/data/apiClients/tradingApi/useDecreaseLpPositionCalldataQuery' import { @@ -17,20 +17,24 @@ import { } from 'uniswap/src/data/tradingApi/__generated__' import { useTransactionGasFee, useUSDCurrencyAmountOfGasFee } from 'uniswap/src/features/gas/hooks' import { useTransactionSettingsContext } from 'uniswap/src/features/transactions/settings/contexts/TransactionSettingsContext' +import { TransactionStepType } from 'uniswap/src/features/transactions/swap/types/steps' import { logger } from 'utilities/src/logger/logger' import { ONE_SECOND_MS } from 'utilities/src/time/time' export function useRemoveLiquidityTxAndGasInfo({ account }: { account?: string }): RemoveLiquidityTxInfo { - const { positionInfo, percent, percentInvalid, unwrapNativeCurrency } = useRemoveLiquidityModalContext() + const { positionInfo, percent, percentInvalid, unwrapNativeCurrency, currentTransactionStep } = + useRemoveLiquidityModalContext() const { customDeadline, customSlippageTolerance } = useTransactionSettingsContext() + const [hasDecreaseErrorResponse, setHasDecreaseErrorResponse] = useState(false) + const currency0Info = useCurrencyInfoWithUnwrapForTradingApi({ currency: positionInfo?.currency0Amount.currency, - shouldUnwrap: unwrapNativeCurrency, + shouldUnwrap: unwrapNativeCurrency && positionInfo?.version !== ProtocolVersion.V4, }) const currency1Info = useCurrencyInfoWithUnwrapForTradingApi({ currency: positionInfo?.currency1Amount.currency, - shouldUnwrap: unwrapNativeCurrency, + shouldUnwrap: unwrapNativeCurrency && positionInfo?.version !== ProtocolVersion.V4, }) const v2LpTokenApprovalQueryParams: CheckApprovalLPRequest | undefined = useMemo(() => { @@ -56,13 +60,19 @@ export function useRemoveLiquidityTxAndGasInfo({ account }: { account?: string } } = useCheckLpApprovalQuery({ params: v2LpTokenApprovalQueryParams, staleTime: 5 * ONE_SECOND_MS, + enabled: Boolean(v2LpTokenApprovalQueryParams), }) if (approvalError) { - logger.info('RemoveLiquidityTxAndGasInfo', 'RemoveLiquidityTxAndGasInfo', 'CheckLpApprovalQuery', { - error: JSON.stringify(approvalError), - v2LpTokenApprovalQueryParams: JSON.stringify(v2LpTokenApprovalQueryParams), - }) + logger.info( + 'RemoveLiquidityTxAndGasInfo', + 'RemoveLiquidityTxAndGasInfo', + parseErrorMessageTitle(approvalError, 'unkown CheckLpApprovalQuery'), + { + error: JSON.stringify(approvalError), + v2LpTokenApprovalQueryParams: JSON.stringify(v2LpTokenApprovalQueryParams), + }, + ) } const v2ApprovalGasFeeUSD = @@ -126,6 +136,9 @@ export function useRemoveLiquidityTxAndGasInfo({ account }: { account?: string } customSlippageTolerance, ]) + const isUserCommittedToDecrease = + currentTransactionStep?.step.type === TransactionStepType.DecreasePositionTransaction + const { data: decreaseCalldata, isLoading: decreaseCalldataLoading, @@ -134,17 +147,29 @@ export function useRemoveLiquidityTxAndGasInfo({ account }: { account?: string } } = useDecreaseLpPositionCalldataQuery({ params: decreaseCalldataQueryParams, deadlineInMinutes: customDeadline, - refetchInterval: 5 * ONE_SECOND_MS, + refetchInterval: hasDecreaseErrorResponse ? false : 5 * ONE_SECOND_MS, + retry: false, enabled: - (!percentInvalid && !v2LpTokenApprovalQueryParams) || - (!v2ApprovalLoading && !approvalError && Boolean(v2LpTokenApproval)), + !isUserCommittedToDecrease && + !!decreaseCalldataQueryParams && + ((!percentInvalid && !v2LpTokenApprovalQueryParams) || + (!v2ApprovalLoading && !approvalError && Boolean(v2LpTokenApproval))), }) + useEffect(() => { + setHasDecreaseErrorResponse(!!calldataError) + }, [calldataError, decreaseCalldataQueryParams]) + if (calldataError) { - logger.info('RemoveLiquidityTxAndGasInfo', 'RemoveLiquidityTxAndGasInfo', 'DecreaseLpPositionCalldataQuery', { - error: JSON.stringify(calldataError), - decreaseCalldataQueryParams: JSON.stringify(decreaseCalldataQueryParams), - }) + logger.info( + 'RemoveLiquidityTxAndGasInfo', + 'RemoveLiquidityTxAndGasInfo', + parseErrorMessageTitle(calldataError, 'DecreaseLpPositionCalldataQuery'), + { + error: JSON.stringify(calldataError), + decreaseCalldataQueryParams: JSON.stringify(decreaseCalldataQueryParams), + }, + ) } const { value: estimatedGasFee } = useTransactionGasFee(decreaseCalldata?.decrease, !!decreaseCalldata?.gasFee) @@ -160,7 +185,7 @@ export function useRemoveLiquidityTxAndGasInfo({ account }: { account?: string } decreaseCalldata, v2LpTokenApproval, approvalLoading: v2ApprovalLoading, - error: Boolean(approvalError || calldataError), + error: getErrorMessageToDisplay({ approvalError, calldataError }), refetch: approvalError ? approvalRefetch : calldataError ? calldataRefetch : undefined, } } diff --git a/apps/web/src/components/SearchModal/CurrencyList/index.tsx b/apps/web/src/components/SearchModal/CurrencyList/index.tsx index 71dec964d68..198024f7422 100644 --- a/apps/web/src/components/SearchModal/CurrencyList/index.tsx +++ b/apps/web/src/components/SearchModal/CurrencyList/index.tsx @@ -166,7 +166,7 @@ export function CurrencyRow({ (e.key === 'Enter' ? onSelect(warningSeverity === WarningSeverity.None) : null)} + onKeyDown={(e) => (e.key === 'Enter' ? onSelect(warningSeverity === WarningSeverity.None) : null)} onClick={() => onSelect(warningSeverity === WarningSeverity.None)} selected={otherSelected || isSelected} dim={isBlockedToken} diff --git a/apps/web/src/components/SwapBottomCard.tsx b/apps/web/src/components/SwapBottomCard.tsx index f475040b2b4..730c8a3f4c0 100644 --- a/apps/web/src/components/SwapBottomCard.tsx +++ b/apps/web/src/components/SwapBottomCard.tsx @@ -1,27 +1,27 @@ +import { useCurrency } from 'hooks/Tokens' import { PageType, useIsPage } from 'hooks/useIsPage' import { useCallback, useMemo, useState } from 'react' import { ArrowUpRight } from 'react-feather' import { useTranslation } from 'react-i18next' -import { useSelector } from 'react-redux' +import { useNavigate } from 'react-router-dom' import { useAppDispatch } from 'state/hooks' import { useMultichainContext } from 'state/multichain/useMultichainContext' +import { serializeSwapStateToURLParameters } from 'state/swap/hooks' import { ClickableTamaguiStyle, ExternalLink, HideSmall } from 'theme/components' import { useIsDarkMode } from 'theme/components/ThemeToggle' import { ElementAfterText, Flex, Text, TouchableArea, TouchableAreaEvent, useSporeColors } from 'ui/src' -import { BRIDGING_BANNER, UNICHAIN_BANNER_COLD, UNICHAIN_BANNER_WARM } from 'ui/src/assets' +import { UNICHAIN_BANNER_COLD, UNICHAIN_BANNER_WARM } from 'ui/src/assets' import { X } from 'ui/src/components/icons/X' import { opacify } from 'ui/src/theme' import { CardImage } from 'uniswap/src/components/cards/image' import { NewTag } from 'uniswap/src/components/pill/NewTag' import { UnichainIntroModal } from 'uniswap/src/components/unichain/UnichainIntroModal' import { useUniswapContext } from 'uniswap/src/contexts/UniswapContext' -import { selectHasViewedBridgingBanner } from 'uniswap/src/features/behaviorHistory/selectors' import { setHasDismissedUnichainColdBanner, setHasDismissedUnichainWarmBanner, - setHasViewedBridgingBanner, } from 'uniswap/src/features/behaviorHistory/slice' -import { useIsBridgingChain, useNumBridgingChains } from 'uniswap/src/features/bridging/hooks/chains' +import { useIsBridgingChain } from 'uniswap/src/features/bridging/hooks/chains' import { getChainInfo } from 'uniswap/src/features/chains/chainInfo' import { useIsSupportedChainId } from 'uniswap/src/features/chains/hooks/useSupportedChainId' import { UniverseChainId } from 'uniswap/src/features/chains/types' @@ -35,10 +35,7 @@ export function SwapBottomCard() { const isSupportedChain = useIsSupportedChainId(chainId) - const hasViewedBridgingBanner = useSelector(selectHasViewedBridgingBanner) const isBridgingSupportedChain = useIsBridgingChain(chainId ?? UniverseChainId.Mainnet) - const isBridgingBannerChain = chainId === null || chainId === UniverseChainId.Mainnet || isBridgingSupportedChain - const shouldShowBridgingBanner = !hasViewedBridgingBanner && isBridgingBannerChain const [showUnichainIntroModal, setShowUnichainIntroModal] = useState(false) const { shouldShowUnichainBannerCold, shouldShowUnichainBannerWarm } = useUnichainBannerVisibility() @@ -57,21 +54,12 @@ export function SwapBottomCard() { return setShowUnichainIntroModal(true)} /> } else if (shouldShowUnichainBannerWarm) { return - } else if (shouldShowBridgingBanner) { - return } else if (!isBridgingSupportedChain) { return } else { return null } - }, [ - chainId, - hideCard, - isBridgingSupportedChain, - shouldShowBridgingBanner, - shouldShowUnichainBannerCold, - shouldShowUnichainBannerWarm, - ]) + }, [chainId, hideCard, isBridgingSupportedChain, shouldShowUnichainBannerCold, shouldShowUnichainBannerWarm]) return ( <> @@ -109,19 +97,26 @@ function UnichainBannerCold({ showUnichainModal }: { showUnichainModal: () => vo function UnichainBannerWarm() { const { t } = useTranslation() + const navigate = useNavigate() const dispatch = useAppDispatch() - const { setIsSwapTokenSelectorOpen, setSwapInputChainId, setSwapOutputChainId } = useUniswapContext() + const { setIsSwapTokenSelectorOpen, setSwapOutputChainId } = useUniswapContext() + const unichainCurrency = useCurrency('ETH', UniverseChainId.Unichain) const openUnichainTokenSelector = useCallback(() => { - // Web specific override to open token selector - setSwapInputChainId(UniverseChainId.Unichain) + navigate( + `/swap${serializeSwapStateToURLParameters({ + inputCurrency: unichainCurrency, + chainId: UniverseChainId.Unichain, + })}`, + ) setSwapOutputChainId(UniverseChainId.Unichain) + // Web specific override to open token selector setIsSwapTokenSelectorOpen(true) // delay this redux change to avoid any visible UI jank when clicking in setTimeout((): void => { dispatch(setHasDismissedUnichainWarmBanner(true)) }, ONE_SECOND_MS / 2) - }, [dispatch, setIsSwapTokenSelectorOpen, setSwapInputChainId, setSwapOutputChainId]) + }, [dispatch, navigate, setIsSwapTokenSelectorOpen, setSwapOutputChainId, unichainCurrency]) return ( { - if (shouldNavigate) { - // Web specific override to open token selector - setIsSwapTokenSelectorOpen(true) - // delay this redux change to avoid any visible UI jank when clicking in - setTimeout((): void => { - dispatch(setHasViewedBridgingBanner(true)) - }, ONE_SECOND_MS / 2) - } else { - dispatch(setHasViewedBridgingBanner(true)) - } - }, - [dispatch, setIsSwapTokenSelectorOpen], - ) - - return ( - handleBridgingDismiss(true)} - onDismiss={() => { - handleBridgingDismiss(false) - }} - subtitle={t('onboarding.home.intro.bridging.description', { count: numBridgingChains })} - /> - ) -} - function ImagePromoBanner({ title, subtitle, diff --git a/apps/web/src/components/Table/index.tsx b/apps/web/src/components/Table/index.tsx index 5f1804d738f..5528ea41e8a 100644 --- a/apps/web/src/components/Table/index.tsx +++ b/apps/web/src/components/Table/index.tsx @@ -34,8 +34,8 @@ import { ScrollSync, ScrollSyncPane } from 'react-scroll-sync' import { ThemedText } from 'theme/components' import { FadePresence } from 'theme/components/FadePresence' import { Z_INDEX } from 'theme/zIndex' +import { INTERFACE_NAV_HEIGHT } from 'ui/src/theme' import Trace from 'uniswap/src/features/telemetry/Trace' -import { INTERFACE_NAV_HEIGHT } from 'uniswap/src/theme/heights' import { useTrace } from 'utilities/src/telemetry/trace/TraceContext' function TableBody({ diff --git a/apps/web/src/components/Tokens/TokenDetails/TokenDescription.tsx b/apps/web/src/components/Tokens/TokenDetails/TokenDescription.tsx index 335f4e996b0..5dd1e5f2200 100644 --- a/apps/web/src/components/Tokens/TokenDetails/TokenDescription.tsx +++ b/apps/web/src/components/Tokens/TokenDetails/TokenDescription.tsx @@ -3,7 +3,7 @@ import { Globe } from 'components/Icons/Globe' import { TwitterXLogo } from 'components/Icons/TwitterX' import { FOTTooltipContent } from 'components/swap/SwapLineItem' import { NoInfoAvailable, truncateDescription } from 'components/Tokens/TokenDetails/shared' -import Tooltip, { MouseoverTooltip, TooltipSize } from 'components/Tooltip' +import { MouseoverTooltip, TooltipSize } from 'components/Tooltip' import useCopyClipboard from 'hooks/useCopyClipboard' import { useSwapTaxes } from 'hooks/useSwapTaxes' import { useTheme } from 'lib/styled-components' @@ -114,12 +114,18 @@ export function TokenDescription() { {!currency.isNative && ( - + {shortenAddress(currency.address)} - + )} diff --git a/apps/web/src/components/Tokens/TokenDetails/__snapshots__/TokenDescription.test.tsx.snap b/apps/web/src/components/Tokens/TokenDetails/__snapshots__/TokenDescription.test.tsx.snap index 7cf3f606b1d..0f17b0056fc 100644 --- a/apps/web/src/components/Tokens/TokenDetails/__snapshots__/TokenDescription.test.tsx.snap +++ b/apps/web/src/components/Tokens/TokenDetails/__snapshots__/TokenDescription.test.tsx.snap @@ -59,35 +59,37 @@ exports[`TokenDescription no description or social buttons shown when not availa
- - + - - - - 0xA0b8...eB48 - + + + + + 0xA0b8...eB48 + +
- - + - - - - 0xA0b8...eB48 - + + + + + 0xA0b8...eB48 + + - - + - - - - 0xA0b8...eB48 - + + + + + 0xA0b8...eB48 + + ` box-shadow: 0 4px 8px 0 ${({ theme }) => transparentize(0.9, theme.shadow1)}; ` -type TooltipProps = Omit & { - text: ReactNode - open?: () => void - close?: () => void - size?: TooltipSize - disabled?: boolean - timeout?: number - placement?: Placement -} - -// TODO(WEB-2024) -// Migrate to MouseoverTooltip and move this component inline to MouseoverTooltip -export default function Tooltip({ text, open, close, disabled, size = TooltipSize.Small, ...rest }: TooltipProps) { - return ( - - {text} - - ) - } - {...rest} - /> - ) -} - -// TODO(WEB-2024) -// Do not pass through PopoverProps. Prefer higher-level interface to control MouseoverTooltip. type MouseoverTooltipProps = Omit & PropsWithChildren<{ text: ReactNode @@ -107,18 +77,25 @@ export const MouseoverTooltip = memo(function MouseoverTooltip(props: MouseoverT }, [timeout, show]) return ( - + {text} + + ) + } show={forceShow || show} - text={disabled ? null : text} + {...rest} >
{children}
-
+
) }) @@ -162,14 +139,7 @@ export function MouseFollowTooltip(props: MouseFollowTooltipProps) { top: position.y ? `${position.y + 16}px` : undefined, }} > - +
{children} diff --git a/apps/web/src/components/WalletModal/__snapshots__/UniswapWalletOptions.test.tsx.snap b/apps/web/src/components/WalletModal/__snapshots__/UniswapWalletOptions.test.tsx.snap index 0d53fc85225..68a1ebd4607 100644 --- a/apps/web/src/components/WalletModal/__snapshots__/UniswapWalletOptions.test.tsx.snap +++ b/apps/web/src/components/WalletModal/__snapshots__/UniswapWalletOptions.test.tsx.snap @@ -255,7 +255,7 @@ exports[`UniswapWalletOptions Test Download wallet option should be visible if e { - const chainChanged = previousConnectedChainId && previousConnectedChainId !== account.chainId + const chainChanged = previousConnectedChainId && previousConnectedChainId !== accountWagmiChainId if (chainChanged) { + if (account.address && accountWagmiChainId) { + // Should also update user property for chain_id when user switches chains + setUserProperty(CustomUserProperties.CHAIN_ID, accountWagmiChainId) + setUserProperty(CustomUserProperties.ALL_WALLET_CHAIN_IDS, accountWagmiChainId, true) + } + sendAnalyticsEvent(InterfaceEventName.CHAIN_CHANGED, { result: WalletConnectionResult.SUCCEEDED, wallet_address: account.address, wallet_type: connector?.name ?? 'Network', - chain_id: account.chainId, + chain_id: accountWagmiChainId, previousConnectedChainId, page: currentPage, }) } - }, [account.address, account.chainId, connector, currentPage, previousConnectedChainId]) + }, [account.address, accountWagmiChainId, connector?.name, currentPage, previousConnectedChainId]) // Send analytics events when the active account changes. const previousAccount = usePrevious(account.address) const [connectedWallets, addConnectedWallet] = useConnectedWallets() useEffect(() => { + // User properties *must* be set before sending corresponding event properties, + // so that the event contains the correct and up-to-date user properties. if (account.address && account.address !== previousAccount) { const walletName = connector?.name ?? 'Network' const amplitudeWalletType = walletTypeToAmplitudeWalletType(connector?.type) @@ -108,18 +117,16 @@ export function Web3ProviderUpdater() { logger.warn('Web3Provider', 'Updater', 'Failed to get client version', error) }) - // User properties *must* be set before sending corresponding event properties, - // so that the event contains the correct and up-to-date user properties. + if (accountWagmiChainId) { + setUserProperty(CustomUserProperties.CHAIN_ID, accountWagmiChainId) + setUserProperty(CustomUserProperties.ALL_WALLET_CHAIN_IDS, accountWagmiChainId, true) + } + setUserProperty(CustomUserProperties.WALLET_ADDRESS, account.address) setUserProperty(CustomUserProperties.ALL_WALLET_ADDRESSES_CONNECTED, account.address, true) setUserProperty(CustomUserProperties.WALLET_TYPE, amplitudeWalletType) - if (account.chainId) { - setUserProperty(CustomUserProperties.CHAIN_ID, account.chainId) - setUserProperty(CustomUserProperties.ALL_WALLET_CHAIN_IDS, account.chainId, true) - } - const walletConnectedProperties = { result: WalletConnectionResult.SUCCEEDED, wallet_address: account.address, @@ -167,11 +174,11 @@ export function Web3ProviderUpdater() { } }, [ account.address, + accountWagmiChainId, addConnectedWallet, - currentPage, - account.chainId, connectedWallets, connector, + currentPage, previousAccount, provider, trackConversions, diff --git a/apps/web/src/components/Web3Status/index.tsx b/apps/web/src/components/Web3Status/index.tsx index d11f1503637..6df85825906 100644 --- a/apps/web/src/components/Web3Status/index.tsx +++ b/apps/web/src/components/Web3Status/index.tsx @@ -226,7 +226,7 @@ function Web3StatusInner() { > e.key === 'Enter' && handleWalletDropdownClick()} + onKeyDown={(e) => e.key === 'Enter' && handleWalletDropdownClick()} onClick={handleWalletDropdownClick} ref={ref} > diff --git a/apps/web/src/components/swap/SwapRoute.tsx b/apps/web/src/components/swap/SwapRoute.tsx index 03b4b75bd0e..c499634583a 100644 --- a/apps/web/src/components/swap/SwapRoute.tsx +++ b/apps/web/src/components/swap/SwapRoute.tsx @@ -11,8 +11,6 @@ import { chainSupportsGasEstimates } from 'uniswap/src/features/chains/utils' import { NumberType, useFormatter } from 'utils/formatNumbers' import getRoutingDiagramEntries from 'utils/getRoutingDiagramEntries' -// TODO(WEB-2022) -// Can `trade.gasUseEstimateUSD` be defined when `chainId` doesn't support gas estimates? function useGasPrice({ gasUseEstimateUSD, inputAmount }: ClassicTrade) { const { formatNumber } = useFormatter() if (!gasUseEstimateUSD || !chainSupportsGasEstimates(inputAmount.currency.chainId)) { diff --git a/apps/web/src/components/swap/__snapshots__/SwapDetails.test.tsx.snap b/apps/web/src/components/swap/__snapshots__/SwapDetails.test.tsx.snap index f55252b79ec..14a4f9c71e2 100644 --- a/apps/web/src/components/swap/__snapshots__/SwapDetails.test.tsx.snap +++ b/apps/web/src/components/swap/__snapshots__/SwapDetails.test.tsx.snap @@ -1211,7 +1211,7 @@ exports[`SwapDetails.tsx renders a preview trade while disabling submission 1`] @@ -2660,7 +2660,7 @@ exports[`SwapLineItem.tsx exact input api 1`] = ` > @@ -3411,7 +3411,7 @@ exports[`SwapLineItem.tsx exact output 1`] = ` > @@ -4175,7 +4175,7 @@ exports[`SwapLineItem.tsx fee on buy 1`] = ` > @@ -4939,7 +4939,7 @@ exports[`SwapLineItem.tsx fee on sell 1`] = ` > diff --git a/apps/web/src/featureFlags/flags/outageBanner.ts b/apps/web/src/featureFlags/flags/outageBanner.ts index e9f5b7cd3e2..397dfd2a93f 100644 --- a/apps/web/src/featureFlags/flags/outageBanner.ts +++ b/apps/web/src/featureFlags/flags/outageBanner.ts @@ -2,8 +2,6 @@ import { ApolloError } from '@apollo/client' import { atomWithReset, useResetAtom, useUpdateAtom } from 'jotai/utils' import { ProtocolVersion } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { UniverseChainId } from 'uniswap/src/features/chains/types' -import { FeatureFlags } from 'uniswap/src/features/gating/flags' -import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' export type ChainOutageData = { chainId: UniverseChainId @@ -30,11 +28,3 @@ export function useUpdateManualOutage({ setManualOutage({ chainId, version: ProtocolVersion.V2 }) } } - -export function useOutageBanners(): Partial> { - return { - [UniverseChainId.Optimism]: useFeatureFlag(FeatureFlags.OutageBannerOptimism), - [UniverseChainId.ArbitrumOne]: useFeatureFlag(FeatureFlags.OutageBannerArbitrum), - [UniverseChainId.Polygon]: useFeatureFlag(FeatureFlags.OutageBannerPolygon), - } -} diff --git a/apps/web/src/graphql/data/pools/usePoolData.ts b/apps/web/src/graphql/data/pools/usePoolData.ts index 32c3d85bdff..8a56211f7c4 100644 --- a/apps/web/src/graphql/data/pools/usePoolData.ts +++ b/apps/web/src/graphql/data/pools/usePoolData.ts @@ -116,7 +116,7 @@ export function usePoolData( const pool = dataV4?.v4Pool ?? dataV3?.v3Pool ?? dataV2?.v2Pair ?? undefined const feeTier = dataV4?.v4Pool?.feeTier ?? dataV3?.v3Pool?.feeTier ?? V2_BIPS - const poolId = dataV4?.v4Pool?.id ?? dataV3?.v3Pool?.address ?? dataV2?.v2Pair?.address ?? poolIdOrAddress + const poolId = dataV4?.v4Pool?.poolId ?? dataV3?.v3Pool?.address ?? dataV2?.v2Pair?.address ?? poolIdOrAddress return { data: pool diff --git a/apps/web/src/hooks/useKeyPress.ts b/apps/web/src/hooks/useKeyPress.ts index 44c91d4fc78..8b26bf965da 100644 --- a/apps/web/src/hooks/useKeyPress.ts +++ b/apps/web/src/hooks/useKeyPress.ts @@ -5,7 +5,7 @@ export enum KeyAction { DOWN = 'keydown', } -export const useKeyPress = ({ +export const useKeyDown = ({ callback, keys, keyAction, @@ -22,7 +22,7 @@ export const useKeyPress = ({ if (!keys || disabled) { return undefined } - const onKeyPress = (event: any) => { + const onKeyDown = (event: any) => { const wasAnyKeyPressed = keys.some((key) => event.key === key) // Do not prevent default if the target element is an input const targetWasNotAnInput = !['input', 'textarea'].includes(event.target.tagName.toLowerCase()) @@ -34,9 +34,9 @@ export const useKeyPress = ({ } } const keyActionType = keyAction || KeyAction.DOWN - document.addEventListener(keyActionType, onKeyPress) + document.addEventListener(keyActionType, onKeyDown) return () => { - document.removeEventListener(keyActionType, onKeyPress) + document.removeEventListener(keyActionType, onKeyDown) } }, [callback, keys, keyAction, disabled, preventDefault]) } diff --git a/apps/web/src/hooks/usePoolTickData.ts b/apps/web/src/hooks/usePoolTickData.ts index 5040f5a9253..e360f0b905d 100644 --- a/apps/web/src/hooks/usePoolTickData.ts +++ b/apps/web/src/hooks/usePoolTickData.ts @@ -3,6 +3,7 @@ import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb' import { Currency, V3_CORE_FACTORY_ADDRESSES } from '@uniswap/sdk-core' import { FeeAmount, Pool as V3Pool, tickToPrice } from '@uniswap/v3-sdk' import { Pool as V4Pool } from '@uniswap/v4-sdk' +import { ZERO_ADDRESS } from 'constants/misc' import { TickData, Ticks } from 'graphql/data/AllV3TicksQuery' import JSBI from 'jsbi' import ms from 'ms' @@ -182,7 +183,7 @@ export function usePoolActiveLiquidity({ protocolVersions: [version], token0: getCurrencyAddressWithWrap(currencyA, version), token1: getCurrencyAddressWithWrap(currencyB, version), - hooks, + hooks: hooks ?? ZERO_ADDRESS, }, poolsQueryEnabled, ) diff --git a/apps/web/src/hooks/useUniversalRouter.ts b/apps/web/src/hooks/useUniversalRouter.ts index ae60e8a4875..020f1a51fcd 100644 --- a/apps/web/src/hooks/useUniversalRouter.ts +++ b/apps/web/src/hooks/useUniversalRouter.ts @@ -195,8 +195,8 @@ export function useUniversalRouterSwapCallback( } }), [ - t, trade, + t, chainId, getDeadline, options.slippageTolerance, diff --git a/apps/web/src/lib/hooks/useCurrencyBalance.ts b/apps/web/src/lib/hooks/useCurrencyBalance.ts index 65f5ec9d2b0..1d9e7884d71 100644 --- a/apps/web/src/lib/hooks/useCurrencyBalance.ts +++ b/apps/web/src/lib/hooks/useCurrencyBalance.ts @@ -9,6 +9,7 @@ import { useMemo } from 'react' import ERC20ABI from 'uniswap/src/abis/erc20.json' import { Erc20Interface } from 'uniswap/src/abis/types/Erc20' import { nativeOnChain } from 'uniswap/src/constants/tokens' +import { ValueType, getCurrencyAmount } from 'uniswap/src/features/tokens/getCurrencyAmount' import { isAddress } from 'utilities/src/addresses' import { currencyKey } from 'utils/currencyKey' @@ -161,8 +162,15 @@ function useGqlCurrencyBalances( const balance = balanceMap[key] if (balance) { - const balanceQuantityRaw = JSBI.BigInt(Math.floor(balance.balance * Math.pow(10, currency.decimals ?? 18))) - return CurrencyAmount.fromRawAmount(currency, balanceQuantityRaw) + const currencyAmount = getCurrencyAmount({ + value: balance.balance.toString(), + valueType: ValueType.Exact, + currency, + }) + if (!currencyAmount) { + return undefined + } + return currencyAmount } else { return CurrencyAmount.fromRawAmount(currency, 0) } diff --git a/apps/web/src/pages/AddLiquidityV2/index.tsx b/apps/web/src/pages/AddLiquidityV2/index.tsx index f3fa1f580be..45607c4fd9a 100644 --- a/apps/web/src/pages/AddLiquidityV2/index.tsx +++ b/apps/web/src/pages/AddLiquidityV2/index.tsx @@ -123,8 +123,8 @@ export default function AddLiquidity() { [independentField]: typedValue, [dependentField]: noLiquidity ? otherTypedValue : parsedAmounts[dependentField]?.toSignificant(6) ?? '', } - const currency0AmountUsd = useUSDCValue(parsedAmounts[Field.CURRENCY_A]) - const currency1AmountUsd = useUSDCValue(parsedAmounts[Field.CURRENCY_B]) + const addedCurrency0AmountUsd = useUSDCValue(parsedAmounts[Field.CURRENCY_A]) + const addedCurrency1AmountUsd = useUSDCValue(parsedAmounts[Field.CURRENCY_B]) // get the max amounts user can add const maxAmounts: { [field in Field]?: CurrencyAmount } = [Field.CURRENCY_A, Field.CURRENCY_B].reduce( @@ -240,9 +240,8 @@ export default function AddLiquidity() { }), currency0: currencyA, currency1: currencyB, - currency0AmountUsd, - currency1AmountUsd, - chainId: account.chainId, + currency0AmountUsd: addedCurrency0AmountUsd, + currency1AmountUsd: addedCurrency1AmountUsd, }), createPosition: false, transaction_hash: response.hash, diff --git a/apps/web/src/pages/AddLiquidityV3/index.tsx b/apps/web/src/pages/AddLiquidityV3/index.tsx index e1f7281df27..5651f85d442 100644 --- a/apps/web/src/pages/AddLiquidityV3/index.tsx +++ b/apps/web/src/pages/AddLiquidityV3/index.tsx @@ -390,9 +390,8 @@ function AddLiquidity() { : undefined, currency0: baseCurrency, currency1: quoteCurrency, - currency0AmountUsd: currencyAFiat.data, - currency1AmountUsd: currencyBFiat.data, - chainId: account.chainId, + currency0AmountUsd: usdcValueCurrencyA, + currency1AmountUsd: usdcValueCurrencyB, }), createPosition: false, transaction_hash: response.hash, diff --git a/apps/web/src/pages/App/Header.tsx b/apps/web/src/pages/App/Header.tsx index 289d5c1a56f..1ed7c5d0258 100644 --- a/apps/web/src/pages/App/Header.tsx +++ b/apps/web/src/pages/App/Header.tsx @@ -9,7 +9,7 @@ import { memo } from 'react' import { useLocation } from 'react-router-dom' import { Z_INDEX } from 'theme/zIndex' import { useIsTouchDevice } from 'ui/src' -import { INTERFACE_NAV_HEIGHT } from 'uniswap/src/theme/heights' +import { INTERFACE_NAV_HEIGHT } from 'ui/src/theme' const AppHeader = styled.div` grid-area: ${GRID_AREAS.HEADER}; diff --git a/apps/web/src/pages/App/utils/UserPropertyUpdater.tsx b/apps/web/src/pages/App/utils/UserPropertyUpdater.tsx index 170c60242ed..281f7fd2290 100644 --- a/apps/web/src/pages/App/utils/UserPropertyUpdater.tsx +++ b/apps/web/src/pages/App/utils/UserPropertyUpdater.tsx @@ -3,12 +3,14 @@ import { useEffect } from 'react' import { useAppSelector } from 'state/hooks' import { useRouterPreference } from 'state/user/hooks' import { useIsDarkMode } from 'theme/components/ThemeToggle' +import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' import { setUserProperty } from 'uniswap/src/features/telemetry/user' import { Metric, getCLS, getFCP, getFID, getLCP } from 'web-vitals' export function UserPropertyUpdater() { const isDarkMode = useIsDarkMode() + const { isTestnetModeEnabled } = useEnabledChains() const [routerPreference] = useRouterPreference() const rehydrated = useAppSelector((state) => state._persist.rehydrated) @@ -62,5 +64,10 @@ export function UserPropertyUpdater() { } setUserProperty(CustomUserProperties.ROUTER_PREFERENCE, routerPreference) }, [routerPreference, rehydrated]) + + useEffect(() => { + setUserProperty(CustomUserProperties.TESTNET_MODE_ENABLED, isTestnetModeEnabled) + }, [isTestnetModeEnabled]) + return null } diff --git a/apps/web/src/pages/IncreaseLiquidity/IncreaseLiquidityForm.tsx b/apps/web/src/pages/IncreaseLiquidity/IncreaseLiquidityForm.tsx index 58238598ffb..168e1a44ae2 100644 --- a/apps/web/src/pages/IncreaseLiquidity/IncreaseLiquidityForm.tsx +++ b/apps/web/src/pages/IncreaseLiquidity/IncreaseLiquidityForm.tsx @@ -1,3 +1,5 @@ +// eslint-disable-next-line no-restricted-imports +import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb' import { CurrencyAmount } from '@uniswap/sdk-core' import { LoaderButton } from 'components/Button/LoaderButton' import { @@ -49,17 +51,17 @@ export function IncreaseLiquidityForm() { const { currency0Amount: initialCurrency0Amount, currency1Amount: initialCurrency1Amount } = position const currency0Info = useCurrencyInfoWithUnwrapForTradingApi({ currency: initialCurrency0Amount.currency, - shouldUnwrap: unwrapNativeCurrency, + shouldUnwrap: unwrapNativeCurrency && position.version !== ProtocolVersion.V4, }) const currency1Info = useCurrencyInfoWithUnwrapForTradingApi({ currency: initialCurrency1Amount.currency, - shouldUnwrap: unwrapNativeCurrency, + shouldUnwrap: unwrapNativeCurrency && position.version !== ProtocolVersion.V4, }) const token0 = currency0Info?.currency const token1 = currency1Info?.currency - const canUnwrap0 = useCanUnwrapCurrency(initialCurrency0Amount.currency) - const canUnwrap1 = useCanUnwrapCurrency(initialCurrency1Amount.currency) + const canUnwrap0 = useCanUnwrapCurrency(initialCurrency0Amount.currency) && position.version !== ProtocolVersion.V4 + const canUnwrap1 = useCanUnwrapCurrency(initialCurrency1Amount.currency) && position.version !== ProtocolVersion.V4 const nativeCurrencyInfo = useNativeCurrencyInfo(position.chainId) const currency0Amount = useMemo(() => { @@ -162,7 +164,7 @@ export function IncreaseLiquidityForm() { currency1Amount={currency1Amount} networkCost={gasFeeEstimateUSD} /> - {dataFetchingError && } + void diff --git a/apps/web/src/pages/LegacyPool/PositionPage.tsx b/apps/web/src/pages/LegacyPool/PositionPage.tsx index 6c9499781cb..a5229bc6402 100644 --- a/apps/web/src/pages/LegacyPool/PositionPage.tsx +++ b/apps/web/src/pages/LegacyPool/PositionPage.tsx @@ -427,23 +427,25 @@ function PositionPageContent() { const { price: price0 } = useUSDCPrice(token0 ?? undefined) const { price: price1 } = useUSDCPrice(token1 ?? undefined) - const fiatValueOfFees: CurrencyAmount | null = useMemo(() => { - if (!price0 || !price1 || !feeValue0 || !feeValue1) { + const feeValue0Usd = useMemo(() => { + if (!price0 || !feeValue0) { return null } - // we wrap because it doesn't matter, the quote returns a USDC amount - const feeValue0Wrapped = feeValue0?.wrapped - const feeValue1Wrapped = feeValue1?.wrapped + const feeValue0Wrapped = feeValue0.wrapped + return price0.quote(feeValue0Wrapped) + }, [price0, feeValue0]) - if (!feeValue0Wrapped || !feeValue1Wrapped) { + const feeValue1Usd = useMemo(() => { + if (!price1 || !feeValue1) { return null } + // we wrap because it doesn't matter, the quote returns a USDC amount + const feeValue1Wrapped = feeValue1.wrapped + return price1.quote(feeValue1Wrapped) + }, [price1, feeValue1]) - const amount0 = price0.quote(feeValue0Wrapped) - const amount1 = price1.quote(feeValue1Wrapped) - return amount0.add(amount1) - }, [price0, price1, feeValue0, feeValue1]) + const fiatValueOfTotalFees = feeValue0Usd && feeValue1Usd ? feeValue0Usd.add(feeValue1Usd) : null const fiatValueOfLiquidity: CurrencyAmount | null = useMemo(() => { if (!price0 || !price1 || !position) { @@ -511,9 +513,8 @@ function PositionPageContent() { currency1: currency1ForFeeCollectionPurposes, version: ProtocolVersion.V3, poolId: poolAddress, - chainId: account.chainId, - currency0AmountUsd: feeValue0 ?? CurrencyAmount.fromRawAmount(currency0ForFeeCollectionPurposes, 0), - currency1AmountUsd: feeValue1 ?? CurrencyAmount.fromRawAmount(currency1ForFeeCollectionPurposes, 0), + currency0AmountUsd: feeValue0Usd, + currency1AmountUsd: feeValue1Usd, }), }) @@ -553,6 +554,8 @@ function PositionPageContent() { trace, feeAmount, poolAddress, + feeValue0Usd, + feeValue1Usd, addTransaction, ]) @@ -821,9 +824,9 @@ function PositionPageContent() { - {fiatValueOfFees?.greaterThan(new Fraction(1, 100)) ? ( + {fiatValueOfTotalFees?.greaterThan(new Fraction(1, 100)) ? ( - {formatCurrencyAmount({ amount: fiatValueOfFees, type: NumberType.FiatTokenPrice })} + {formatCurrencyAmount({ amount: fiatValueOfTotalFees, type: NumberType.FiatTokenPrice })} ) : ( diff --git a/apps/web/src/pages/MigrateV2/MigrateV2Pair.tsx b/apps/web/src/pages/MigrateV2/MigrateV2Pair.tsx index 4675e4da698..a5f52635eaf 100644 --- a/apps/web/src/pages/MigrateV2/MigrateV2Pair.tsx +++ b/apps/web/src/pages/MigrateV2/MigrateV2Pair.tsx @@ -3,7 +3,7 @@ import type { TransactionResponse } from '@ethersproject/providers' import { LiquidityEventName, LiquiditySource } from '@uniswap/analytics-events' // eslint-disable-next-line no-restricted-imports import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb' -import { CurrencyAmount, Fraction, Percent, Price, Token, V2_FACTORY_ADDRESSES } from '@uniswap/sdk-core' +import { CurrencyAmount, Fraction, Percent, Price, Token, V2_FACTORY_ADDRESSES, type Currency } from '@uniswap/sdk-core' import { FeeAmount, Pool, Position, TickMath, priceToClosestTick } from '@uniswap/v3-sdk' import Badge from 'components/Badge/Badge' import { ButtonConfirmed } from 'components/Button/buttons' @@ -18,7 +18,7 @@ import RateToggle from 'components/RateToggle' import SettingsTab from 'components/Settings' import { V2Unsupported } from 'components/V2Unsupported' import { AutoColumn } from 'components/deprecated/Column' -import { AutoRow, RowBetween, RowFixed } from 'components/deprecated/Row' +import { RowBetween } from 'components/deprecated/Row' import { Dots } from 'components/swap/styled' import { useToken } from 'hooks/Tokens' import { useAccount } from 'hooks/useAccount' @@ -33,11 +33,10 @@ import { useV2LiquidityTokenPermit } from 'hooks/useV2LiquidityTokenPermit' import JSBI from 'jsbi' import { NEVER_RELOAD, useSingleCallResult } from 'lib/hooks/multicall' import { useTheme } from 'lib/styled-components' -import { BodyWrapper } from 'pages/App/AppBody' import { ReactNode, useCallback, useEffect, useMemo, useState } from 'react' -import { AlertCircle, AlertTriangle, ArrowDown } from 'react-feather' +import { AlertCircle, AlertTriangle } from 'react-feather' import { Trans, useTranslation } from 'react-i18next' -import { Navigate, useParams } from 'react-router-dom' +import { Navigate, useNavigate, useParams } from 'react-router-dom' import { useTokenBalance } from 'state/connection/hooks' import { useAppDispatch } from 'state/hooks' import { Bound, resetMintState } from 'state/mint/v3/actions' @@ -45,8 +44,10 @@ import { useRangeHopCallbacks, useV3DerivedMintInfo, useV3MintActionHandlers } f import { useIsTransactionPending, useTransactionAdder } from 'state/transactions/hooks' import { TransactionType } from 'state/transactions/types' import { useUserSlippageToleranceWithDefault } from 'state/user/hooks' -import { BackArrowLink, ExternalLink, ThemedText } from 'theme/components' -import { Text } from 'ui/src' +import { ExternalLink, ThemedText } from 'theme/components' +import { Flex, Text, TouchableArea } from 'ui/src' +import { Arrow } from 'ui/src/components/arrow/Arrow' +import { iconSizes } from 'ui/src/theme' import { WRAPPED_NATIVE_CURRENCY } from 'uniswap/src/constants/tokens' import { UniverseChainId } from 'uniswap/src/features/chains/types' import Trace from 'uniswap/src/features/telemetry/Trace' @@ -75,6 +76,30 @@ function EmptyState({ message }: { message: ReactNode }) { ) } +const TokenPairHeader = ({ + children, + currency0, + currency1, + badgeText, +}: { + children: React.ReactNode + currency0: Currency + currency1: Currency + badgeText: string +}) => { + return ( + + + + + {children} + + + {badgeText} + + ) +} + function LiquidityInfo({ token0Amount, token1Amount, @@ -82,35 +107,33 @@ function LiquidityInfo({ token0Amount: CurrencyAmount token1Amount: CurrencyAmount }) { - const currency0 = unwrappedToken(token0Amount.currency) - const currency1 = unwrappedToken(token1Amount.currency) + const currencyPairs = [ + { + currency: unwrappedToken(token0Amount.currency), + amount: token0Amount, + }, + { + currency: unwrappedToken(token1Amount.currency), + amount: token1Amount, + }, + ] return ( - - - - - - {currency0.symbol} - - - - - - - - - - - {currency1.symbol} + + {currencyPairs.map(({ currency, amount }) => ( + + + + + {currency.symbol} + + + + - - - - - - - + + ))} + ) } @@ -365,7 +388,6 @@ function V2PairMigration({ currency1: token1, poolId: pair.address, version: ProtocolVersion.V2, - chainId: pairBalance.currency.chainId, currency0AmountUsd: token0USD, currency1AmountUsd: token1USD, }), @@ -420,8 +442,8 @@ function V2PairMigration({ } return ( - - + + . - + - - - - - - - - - {isNotUniswap ? 'Sushi' : 'V2'} - + + + + - + -
- -
+ + + - - - - - - - - - V3 - - + + + + {noLiquidity && ( @@ -716,9 +731,9 @@ function V2PairMigration({ - + - + ) } @@ -726,6 +741,7 @@ export default function MigrateV2Pair() { const { address } = useParams<{ address: string }>() // reset mint state on component mount, and as a cleanup (on unmount) const dispatch = useAppDispatch() + const navigate = useNavigate() useEffect(() => { dispatch(resetMintState()) return () => { @@ -767,6 +783,12 @@ export default function MigrateV2Pair() { [token1, reserve1Raw], ) + const MIGRATE_PAGE_URL = '/migrate/v2' + + const handleNavigateBackToMigrate = useCallback(() => { + navigate(MIGRATE_PAGE_URL) + }, [navigate]) + // redirect for invalid url params if ( !validatedAddress || @@ -782,7 +804,7 @@ export default function MigrateV2Pair() { token1Address, chainId: account.chainId, }) - return + return } return ( @@ -797,10 +819,30 @@ export default function MigrateV2Pair() { token1Address, }} > - - - - + + + + + + @@ -809,7 +851,7 @@ export default function MigrateV2Pair() { chainId={account.chainId} hideRoutingSettings /> - + {!account.isConnected ? ( @@ -828,8 +870,8 @@ export default function MigrateV2Pair() { ) : ( } /> )} - - + + ) } diff --git a/apps/web/src/pages/MigrateV3/MigrateV3LiquidityTxContext.tsx b/apps/web/src/pages/MigrateV3/MigrateV3LiquidityTxContext.tsx index 2e63b247b84..beee7754691 100644 --- a/apps/web/src/pages/MigrateV3/MigrateV3LiquidityTxContext.tsx +++ b/apps/web/src/pages/MigrateV3/MigrateV3LiquidityTxContext.tsx @@ -3,6 +3,7 @@ import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb' import { Currency, CurrencyAmount } from '@uniswap/sdk-core' import { useV3OrV4PositionDerivedInfo } from 'components/Liquidity/hooks' import { V3PositionInfo } from 'components/Liquidity/types' +import { getErrorMessageToDisplay, parseErrorMessageTitle } from 'components/Liquidity/utils' import { ZERO_ADDRESS } from 'constants/misc' import { useCreatePositionContext, usePriceRangeContext } from 'pages/Pool/Positions/create/CreatePositionContext' import { PropsWithChildren, createContext, useContext, useMemo } from 'react' @@ -25,7 +26,7 @@ import { useAccount } from 'wagmi' interface MigrateV3PositionTxContextType { txInfo?: MigrateV3PositionTxAndGasInfo gasFeeEstimateUSD?: CurrencyAmount - error?: boolean + error: boolean | string refetch?: () => void } @@ -75,13 +76,19 @@ export function MigrateV3PositionTxContextProvider({ 'x-universal-router-version': '2.0', }, staleTime: 5 * ONE_SECOND_MS, + enabled: Boolean(increaseLiquidityApprovalParams), }) if (approvalError) { - logger.info('MigrateV3LiquidityTxContext', 'MigrateV3LiquidityTxContext', 'CheckLpApprovalQuery', { - error: JSON.stringify(approvalError), - increaseLiquidityApprovalParams: JSON.stringify(increaseLiquidityApprovalParams), - }) + logger.info( + 'MigrateV3LiquidityTxContext', + 'MigrateV3LiquidityTxContext', + parseErrorMessageTitle(approvalError, 'unknown CheckLpApprovalQuery'), + { + error: JSON.stringify(approvalError), + increaseLiquidityApprovalParams: JSON.stringify(increaseLiquidityApprovalParams), + }, + ) } const migratePositionRequestArgs: MigrateLPPositionRequest | undefined = useMemo(() => { @@ -105,7 +112,7 @@ export function MigrateV3PositionTxContextProvider({ const tickLower = fullRange ? derivedPriceRangeInfo.tickSpaceLimits[0] : derivedPriceRangeInfo.ticks?.[0] const tickUpper = fullRange ? derivedPriceRangeInfo.tickSpaceLimits[1] : derivedPriceRangeInfo.ticks?.[1] - if (!tickLower || !tickUpper || !positionInfo.pool || !positionInfo.liquidity) { + if (tickLower === undefined || tickUpper === undefined || !positionInfo.pool || !positionInfo.liquidity) { return undefined } return { @@ -171,6 +178,11 @@ export function MigrateV3PositionTxContextProvider({ feeValue1?.quotient, ]) + const isRangeValid = + derivedPriceRangeInfo.protocolVersion !== ProtocolVersion.V2 && + !derivedPriceRangeInfo.invalidPrice && + !derivedPriceRangeInfo.invalidRange + const { data: migrateCalldata, error: migrateError, @@ -178,13 +190,19 @@ export function MigrateV3PositionTxContextProvider({ } = useMigrateV3LpPositionCalldataQuery({ params: migratePositionRequestArgs, staleTime: 5 * ONE_SECOND_MS, + enabled: isRangeValid && !!migratePositionRequestArgs, }) if (migrateError) { - logger.info('MigrateV3LiquidityTxContext', 'MigrateV3LiquidityTxContext', 'MigrateLpPositionCalldataQuery', { - error: JSON.stringify(migrateError), - migrateCalldataQueryParams: JSON.stringify(migratePositionRequestArgs), - }) + logger.info( + 'MigrateV3LiquidityTxContext', + 'MigrateV3LiquidityTxContext', + parseErrorMessageTitle(migrateError, 'unknown MigrateLpPositionCalldataQuery'), + { + error: JSON.stringify(migrateError), + migrateCalldataQueryParams: JSON.stringify(migratePositionRequestArgs), + }, + ) } const validatedValue: MigrateV3PositionTxAndGasInfo | undefined = useMemo(() => { @@ -231,7 +249,7 @@ export function MigrateV3PositionTxContextProvider({ diff --git a/apps/web/src/pages/MigrateV3/index.tsx b/apps/web/src/pages/MigrateV3/index.tsx index 98266e6e837..d22e772799d 100644 --- a/apps/web/src/pages/MigrateV3/index.tsx +++ b/apps/web/src/pages/MigrateV3/index.tsx @@ -35,6 +35,7 @@ import { ChevronRight } from 'react-feather' import { Trans, useTranslation } from 'react-i18next' import { useDispatch } from 'react-redux' import { Navigate, useNavigate, useParams } from 'react-router-dom' +import { MultichainContextProvider } from 'state/multichain/MultichainContext' import { liquiditySaga } from 'state/sagas/liquidity/liquiditySaga' import { ClickableTamaguiStyle } from 'theme/components' import { PositionField } from 'types/position' @@ -47,7 +48,7 @@ import { useAccountMeta } from 'uniswap/src/contexts/UniswapContext' import { useGetPositionQuery } from 'uniswap/src/data/rest/getPosition' import { AccountType } from 'uniswap/src/features/accounts/types' import { FeatureFlags } from 'uniswap/src/features/gating/flags' -import { useFeatureFlagWithLoading } from 'uniswap/src/features/gating/hooks' +import { useFeatureFlag, useFeatureFlagWithLoading } from 'uniswap/src/features/gating/hooks' import Trace from 'uniswap/src/features/telemetry/Trace' import { InterfacePageNameLocal, ModalName } from 'uniswap/src/features/telemetry/constants' import { isValidLiquidityTxContext } from 'uniswap/src/features/transactions/liquidity/types' @@ -84,6 +85,7 @@ function MigrateV3Inner({ positionInfo }: { positionInfo: PositionInfo }) { const { value: lpRedesignEnabled, isLoading: isLPRedesignGateLoading } = useFeatureFlagWithLoading( FeatureFlags.LPRedesign, ) + const isMigrateEnabled = useFeatureFlag(FeatureFlags.MigrateV3ToV4) const [transactionSteps, setTransactionSteps] = useState([]) const [currentTransactionStep, setCurrentTransactionStep] = useState< @@ -102,6 +104,7 @@ function MigrateV3Inner({ positionInfo }: { positionInfo: PositionInfo }) { } const { currency0Amount, currency1Amount } = positionInfo + const currency0FiatAmount = useUSDCValue(currency0Amount) ?? undefined const currency1FiatAmount = useUSDCValue(currency1Amount) ?? undefined @@ -109,6 +112,10 @@ function MigrateV3Inner({ positionInfo }: { positionInfo: PositionInfo }) { return } + if (!isMigrateEnabled) { + navigate('/positions') + } + if (isLPRedesignGateLoading) { return null } @@ -193,7 +200,7 @@ function MigrateV3Inner({ positionInfo }: { positionInfo: PositionInfo }) { { const isValidTx = isValidLiquidityTxContext(txInfo) if (!account || account?.type !== AccountType.SignerMnemonic || !isValidTx) { @@ -221,8 +228,7 @@ function MigrateV3Inner({ positionInfo }: { positionInfo: PositionInfo }) { currency0AmountUsd: currency0FiatAmount, currency1AmountUsd: currency1FiatAmount, poolId: positionInfo.poolId, - version: protocolVersion, - chainId: startChainId, + version: ProtocolVersion.V3, }), action: 'V3->V4', }, @@ -230,7 +236,7 @@ function MigrateV3Inner({ positionInfo }: { positionInfo: PositionInfo }) { ) }} /> - {error && } + )} @@ -314,24 +320,26 @@ export default function MigrateV3() { token1Address: currencyIdToAddress(currencyId(currency1Amount.currency)), }} > - - - - - - - - - - - + + + + + + + + + + + + + ) } diff --git a/apps/web/src/pages/Pool/Positions/ClaimFeeModal.tsx b/apps/web/src/pages/Pool/Positions/ClaimFeeModal.tsx index c810fb47a04..1d85ce45407 100644 --- a/apps/web/src/pages/Pool/Positions/ClaimFeeModal.tsx +++ b/apps/web/src/pages/Pool/Positions/ClaimFeeModal.tsx @@ -1,9 +1,10 @@ // eslint-disable-next-line no-restricted-imports import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb' +import { CurrencyAmount } from '@uniswap/sdk-core' import { LoaderButton } from 'components/Button/LoaderButton' import { getLPBaseAnalyticsProperties } from 'components/Liquidity/analytics' import { useModalLiquidityInitialState, useV3OrV4PositionDerivedInfo } from 'components/Liquidity/hooks' -import { getProtocolItems } from 'components/Liquidity/utils' +import { getErrorMessageToDisplay, getProtocolItems, parseErrorMessageTitle } from 'components/Liquidity/utils' import { GetHelpHeader } from 'components/Modal/GetHelpHeader' import { ZERO_ADDRESS } from 'constants/misc' import { useAccount } from 'hooks/useAccount' @@ -15,7 +16,6 @@ import { useTranslation } from 'react-i18next' import { useCloseModal } from 'state/application/hooks' import { useAppDispatch } from 'state/hooks' import { liquiditySaga } from 'state/sagas/liquidity/liquiditySaga' -import { TransactionType } from 'state/transactions/types' import { Flex, Text } from 'ui/src' import { iconSizes } from 'ui/src/theme' import { CurrencyLogo } from 'uniswap/src/components/CurrencyLogo/CurrencyLogo' @@ -27,7 +27,11 @@ import { ClaimLPFeesRequest } from 'uniswap/src/data/tradingApi/__generated__' import { AccountType } from 'uniswap/src/features/accounts/types' import { useLocalizationContext } from 'uniswap/src/features/language/LocalizationContext' import { ModalName } from 'uniswap/src/features/telemetry/constants' -import { LiquidityTransactionType, isValidLiquidityTxContext } from 'uniswap/src/features/transactions/liquidity/types' +import { + CollectFeesTxAndGasInfo, + LiquidityTransactionType, + isValidLiquidityTxContext, +} from 'uniswap/src/features/transactions/liquidity/types' import { TransactionStep } from 'uniswap/src/features/transactions/swap/types/steps' import { validateTransactionRequest } from 'uniswap/src/features/transactions/swap/utils/trade' import { NumberType } from 'utilities/src/format/types' @@ -57,11 +61,11 @@ export function ClaimFeeModal() { const currencyInfo0 = useCurrencyInfoWithUnwrapForTradingApi({ currency: token0Fees?.currency, - shouldUnwrap: !positionInfo?.collectAsWeth, + shouldUnwrap: !positionInfo?.collectAsWeth && positionInfo?.version !== ProtocolVersion.V4, }) const currencyInfo1 = useCurrencyInfoWithUnwrapForTradingApi({ currency: token1Fees?.currency, - shouldUnwrap: !positionInfo?.collectAsWeth, + shouldUnwrap: !positionInfo?.collectAsWeth && positionInfo?.version !== ProtocolVersion.V4, }) const dispatch = useAppDispatch() @@ -74,6 +78,7 @@ export function ClaimFeeModal() { } return { + simulateTransaction: true, protocol: getProtocolItems(positionInfo.version), tokenId: positionInfo.tokenId ? Number(positionInfo.tokenId) : undefined, walletAddress: account?.address, @@ -112,16 +117,18 @@ export function ClaimFeeModal() { refetch, } = useClaimLpFeesCalldataQuery({ params: claimLpFeesParams, + enabled: Boolean(claimLpFeesParams), }) - if (error) { - logger.info('ClaimFeeModal', 'ClaimFeeModal', 'ClaimLPFeesCalldataQuery', { + // prevent logging of the empty error object for now since those are burying signals + if (error && Object.keys(error).length > 0) { + logger.info('ClaimFeeModal', 'ClaimFeeModal', parseErrorMessageTitle(error, 'unknown ClaimLPFeesCalldataQuery'), { error: JSON.stringify(error), claimLpFeesParams: JSON.stringify(claimLpFeesParams), }) } - const txInfo = useMemo(() => { + const txInfo = useMemo((): CollectFeesTxAndGasInfo | undefined => { const validatedTxRequest = validateTransactionRequest(data?.claim) if (!positionInfo || !validatedTxRequest) { @@ -132,9 +139,9 @@ export function ClaimFeeModal() { type: LiquidityTransactionType.Collect, protocolVersion: positionInfo?.version, action: { - type: TransactionType.COLLECT_FEES, - currency0Amount: token0Fees, - currency1Amount: token1Fees, + type: LiquidityTransactionType.Collect, + currency0Amount: token0Fees || CurrencyAmount.fromRawAmount(positionInfo.currency0Amount.currency, 0), + currency1Amount: token1Fees || CurrencyAmount.fromRawAmount(positionInfo.currency1Amount.currency, 0), }, txRequest: validatedTxRequest, } @@ -189,7 +196,7 @@ export function ClaimFeeModal() { )} - {error && } + {status !== PositionStatus.CLOSED && isOwner && ( - {positionInfo.version === ProtocolVersion.V3 && isV4DataEnabled && ( - { - navigate(`/migrate/v3/${chainInfo?.urlParam}/${tokenIdFromUrl}`) - }} + {positionInfo.version === ProtocolVersion.V3 && isV4DataEnabled && isMigrateEnabled && ( + - - - - + { + navigate(`/migrate/v3/${chainInfo?.urlParam}/${tokenIdFromUrl}`) + }} + > + + + + + )} - {fiatValue0 && fiatValue1 - ? formatCurrencyAmount({ - amount: fiatValue0.add(fiatValue1), - type: NumberType.FiatTokenPrice, - }) - : '-'} + {fiatValue0 && fiatValue1 ? ( + formatCurrencyAmount({ + amount: fiatValue0.add(fiatValue1), + type: NumberType.FiatTokenPrice, + }) + ) : ( + + + + {t('pool.positions.usdValueUnavailable')} + + + + + )} - {fiatFeeValue0 && fiatFeeValue1 - ? formatCurrencyAmount({ - amount: fiatFeeValue0.add(fiatFeeValue1), - type: NumberType.FiatTokenPrice, - }) - : '-'} + {fiatFeeValue0 && fiatFeeValue1 ? ( + formatCurrencyAmount({ + amount: fiatFeeValue0.add(fiatFeeValue1), + type: NumberType.FiatTokenPrice, + }) + ) : ( + + + + {t('pool.positions.usdValueUnavailable')} + + + + + )} {feeValue0 && feeValue1 && ( { - if (pair && chainId && pairAddress && !savedSerializedPairs[chainId][pairAddress]) { + if (pair && chainId && pairAddress && !savedSerializedPairs[chainId]?.[pairAddress]) { addPair(pair) } navigate('/migrate/v2') diff --git a/apps/web/src/pages/Pool/Positions/create/AddHook.tsx b/apps/web/src/pages/Pool/Positions/create/AddHook.tsx index 7e60da845ac..2bc988eb7f2 100644 --- a/apps/web/src/pages/Pool/Positions/create/AddHook.tsx +++ b/apps/web/src/pages/Pool/Positions/create/AddHook.tsx @@ -1,9 +1,12 @@ +// eslint-disable-next-line no-restricted-imports +import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb' import { HookModal } from 'components/Liquidity/HookModal' import { isDynamicFeeTier } from 'components/Liquidity/utils' import { useCreatePositionContext } from 'pages/Pool/Positions/create/CreatePositionContext' +import { useInitialPoolInputs } from 'pages/Pool/Positions/create/hooks' import { AdvancedButton } from 'pages/Pool/Positions/create/shared' import { DEFAULT_POSITION_STATE } from 'pages/Pool/Positions/create/types' -import { useCallback, useRef, useState } from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { DeprecatedButton, Text, TouchableArea, styled } from 'ui/src' import { DocumentList } from 'ui/src/components/icons/DocumentList' @@ -14,7 +17,7 @@ import { TextInput } from 'uniswap/src/components/input/TextInput' import { ElementName } from 'uniswap/src/features/telemetry/constants' import { getValidAddress } from 'uniswap/src/utils/addresses' import { shortenAddress } from 'utilities/src/addresses' -import { useOnClickOutside } from 'utilities/src/react/hooks' +import { useOnClickOutside, usePrevious } from 'utilities/src/react/hooks' const MenuFlyout = styled(Flex, { animation: 'fastHeavy', @@ -66,21 +69,36 @@ export function AddHook() { const [hookModalOpen, setHookModalOpen] = useState(false) + const { hook: initialHook } = useInitialPoolInputs() const { - positionState: { hook, fee }, + positionState: { hook, fee, protocolVersion }, setPositionState, } = useCreatePositionContext() const [hookInputEnabled, setHookInputEnabled] = useState(!!hook) const [hookValue, setHookValue] = useState(hook ?? '') - const onSelectHook = (value: string | undefined) => { - setPositionState((state) => ({ - ...state, - hook: value, - })) - } + const onSelectHook = useCallback( + (value: string | undefined) => { + setPositionState((state) => ({ + ...state, + hook: value, + userApprovedHook: value, + })) + }, + [setPositionState], + ) - const onClearHook = () => { + useEffect(() => { + if (initialHook && protocolVersion === ProtocolVersion.V4) { + setPositionState((state) => ({ + ...state, + hook: initialHook, + })) + setHookInputEnabled(true) + } + }, [initialHook, protocolVersion, setPositionState]) + + const onClearHook = useCallback(() => { if (isDynamicFeeTier(fee)) { setPositionState((state) => ({ ...state, @@ -91,7 +109,16 @@ export function AddHook() { setHookInputEnabled(false) setHookValue('') onSelectHook(undefined) - } + }, [fee, onSelectHook, setPositionState]) + + // In the case that the user clears a hook that was filled in from a url + // this ensures the input is cleared again + const previousHook = usePrevious(hook) + useEffect(() => { + if (previousHook && !hook) { + onClearHook() + } + }, [hook, onClearHook, previousHook]) if (hookInputEnabled) { const showFlyout = isFocusing && hookValue @@ -142,7 +169,7 @@ export function AddHook() { ({ ...DEFAULT_POSITION_STATE, ...initialState }) const [step, setStep] = useState(PositionFlowStep.SELECT_TOKENS_AND_FEE_TIER) + const [currentTransactionStep, setCurrentTransactionStep] = useState< + { step: TransactionStep; accepted: boolean } | undefined + >() const derivedPositionInfo = useDerivedPositionInfo(positionState) const [feeTierSearchModalOpen, setFeeTierSearchModalOpen] = useState(false) const [dynamicFeeTierSpeedbumpData, setDynamicFeeTierSpeedbumpData] = useState({ @@ -72,6 +78,8 @@ export function CreatePositionContextProvider({ setPositionState, derivedPositionInfo, feeTierSearchModalOpen, + currentTransactionStep, + setCurrentTransactionStep, setFeeTierSearchModalOpen, dynamicFeeTierSpeedbumpData, setDynamicFeeTierSpeedbumpData, @@ -122,6 +130,15 @@ export function DepositContextProvider({ children }: { children: React.ReactNode const [depositState, setDepositState] = useState(DEFAULT_DEPOSIT_STATE) const derivedDepositInfo = useDerivedDepositInfo(depositState) + const { derivedPriceRangeInfo } = usePriceRangeContext() + useEffect(() => { + if (derivedPriceRangeInfo.deposit1Disabled) { + setDepositState((prev) => ({ ...prev, exactField: PositionField.TOKEN0 })) + } else if (derivedPriceRangeInfo.deposit0Disabled) { + setDepositState((prev) => ({ ...prev, exactField: PositionField.TOKEN1 })) + } + }, [derivedPriceRangeInfo?.deposit0Disabled, derivedPriceRangeInfo?.deposit1Disabled]) + const reset = useCallback(() => { setDepositState(DEFAULT_DEPOSIT_STATE) }, []) @@ -135,12 +152,13 @@ export function DepositContextProvider({ children }: { children: React.ReactNode export function CreateTxContextProvider({ children }: { children: React.ReactNode }) { const account = useAccountMeta() - const { derivedPositionInfo, positionState } = useCreatePositionContext() + const { derivedPositionInfo, positionState, currentTransactionStep } = useCreatePositionContext() const { derivedDepositInfo, depositState } = useDepositContext() const { priceRangeState, derivedPriceRangeInfo } = usePriceRangeContext() const swapSettings = useTransactionSettingsContext() const hasError = Boolean(derivedDepositInfo.error) + const [hasCreateErrorResponse, setHasCreateErrorResponse] = useState(false) const addLiquidityApprovalParams = useMemo(() => { return generateAddLiquidityApprovalParams({ @@ -158,14 +176,20 @@ export function CreateTxContextProvider({ children }: { children: React.ReactNod } = useCheckLpApprovalQuery({ params: addLiquidityApprovalParams, staleTime: 5 * ONE_SECOND_MS, - enabled: !hasError, + retry: false, + enabled: !!addLiquidityApprovalParams && !hasError && !hasCreateErrorResponse, }) if (approvalError) { - logger.info('CreateTxContextProvider', 'CreateTxContextProvider', 'CheckLpApprovalQuery', { - error: JSON.stringify(approvalError), - addLiquidityApprovalParams: JSON.stringify(addLiquidityApprovalParams), - }) + logger.info( + 'CreateTxContextProvider', + 'CreateTxContextProvider', + parseErrorMessageTitle(approvalError, 'unknown CheckLpApprovalQuery'), + { + error: JSON.stringify(approvalError), + addLiquidityApprovalParams: JSON.stringify(addLiquidityApprovalParams), + }, + ) } const gasFeeToken0USD = useUSDCurrencyAmountOfGasFee( @@ -198,6 +222,11 @@ export function CreateTxContextProvider({ children }: { children: React.ReactNod priceRangeState, depositState.exactField, ]) + + const isUserCommittedToCreate = + currentTransactionStep?.step.type === TransactionStepType.IncreasePositionTransaction || + currentTransactionStep?.step.type === TransactionStepType.IncreasePositionTransactionAsync + const { data: createCalldata, error: createError, @@ -205,15 +234,31 @@ export function CreateTxContextProvider({ children }: { children: React.ReactNod } = useCreateLpPositionCalldataQuery({ params: createCalldataQueryParams, deadlineInMinutes: swapSettings.customDeadline, - refetchInterval: 5 * ONE_SECOND_MS, - enabled: !hasError && !approvalLoading && !approvalError && Boolean(approvalCalldata), + refetchInterval: hasCreateErrorResponse ? false : 5 * ONE_SECOND_MS, + retry: false, + enabled: + !isUserCommittedToCreate && + !hasError && + !approvalLoading && + !approvalError && + Boolean(approvalCalldata) && + Boolean(createCalldataQueryParams), }) + useEffect(() => { + setHasCreateErrorResponse(!!createError) + }, [createError, createCalldataQueryParams, addLiquidityApprovalParams]) + if (createError) { - logger.info('CreateTxContextProvider', 'CreateTxContextProvider', 'CreateLpPositionCalldataQuery', { - error: JSON.stringify(createError), - createCalldataQueryParams: JSON.stringify(createCalldataQueryParams), - }) + logger.info( + 'CreateTxContextProvider', + 'CreateTxContextProvider', + parseErrorMessageTitle(createError, 'unknown CreateLpPositionCalldataQuery'), + { + error: JSON.stringify(createError), + createCalldataQueryParams: JSON.stringify(createCalldataQueryParams), + }, + ) } const actualGasFee = createCalldata?.gasFee @@ -245,7 +290,7 @@ export function CreateTxContextProvider({ children }: { children: React.ReactNod return { txInfo, gasFeeEstimateUSD: totalGasFee, - error: Boolean(approvalError || createError), + error: getErrorMessageToDisplay({ approvalError, calldataError: createError }), refetch: approvalError ? approvalRefetch : createError ? createRefetch : undefined, } }, [ diff --git a/apps/web/src/pages/Pool/Positions/create/CreatePosition.tsx b/apps/web/src/pages/Pool/Positions/create/CreatePosition.tsx index e6f168e4997..048310ab7e7 100644 --- a/apps/web/src/pages/Pool/Positions/create/CreatePosition.tsx +++ b/apps/web/src/pages/Pool/Positions/create/CreatePosition.tsx @@ -24,7 +24,7 @@ import { SelectPriceRangeStep, SelectPriceRangeStepV2 } from 'pages/Pool/Positio import ResetCreatePositionFormModal from 'pages/Pool/Positions/create/ResetCreatePositionsFormModal' import { SelectTokensStep } from 'pages/Pool/Positions/create/SelectTokenStep' import { TradingAPIError } from 'pages/Pool/Positions/create/TradingAPIError' -import { useInitialCurrencyInputs } from 'pages/Pool/Positions/create/hooks' +import { useInitialPoolInputs } from 'pages/Pool/Positions/create/hooks' import { DEFAULT_POSITION_STATE, PositionFlowStep } from 'pages/Pool/Positions/create/types' import { useCallback, useEffect, useMemo, useState } from 'react' import { ChevronRight } from 'react-feather' @@ -37,6 +37,7 @@ import { DeprecatedButton, Flex, Text, useMedia } from 'ui/src' import { InfoCircleFilled } from 'ui/src/components/icons/InfoCircleFilled' import { RotatableChevron } from 'ui/src/components/icons/RotatableChevron' import { RotateLeft } from 'ui/src/components/icons/RotateLeft' +import { INTERFACE_NAV_HEIGHT } from 'ui/src/theme' import { iconSizes } from 'ui/src/theme/iconSizes' import { ActionSheetDropdown } from 'uniswap/src/components/dropdowns/ActionSheetDropdown' import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains' @@ -48,7 +49,6 @@ import { TransactionSettingsContextProvider } from 'uniswap/src/features/transac import { TransactionSettingKey } from 'uniswap/src/features/transactions/settings/slice' import { SwapFormSettings } from 'uniswap/src/features/transactions/swap/form/SwapFormSettings' import { Deadline } from 'uniswap/src/features/transactions/swap/settings/configs/Deadline' -import { INTERFACE_NAV_HEIGHT } from 'uniswap/src/theme/heights' import { usePrevious } from 'utilities/src/react/hooks' function CreatingPoolInfo() { @@ -135,7 +135,7 @@ function CreatePositionInner() { {!v2Selected && } - {error && } + ) } @@ -307,7 +307,15 @@ const Toolbar = ({ return ( - + () const paramsProtocolVersion = parseProtocolVersion(protocolVersion) - const initialCurrencyInputs = useInitialCurrencyInputs() + const initialInputs = useInitialPoolInputs() const initialProtocolVersion = useMemo((): ProtocolVersion => { if (isV4DataEnabled) { return paramsProtocolVersion ?? ProtocolVersion.V4 @@ -384,11 +392,11 @@ export default function CreatePosition() { return ( - + @@ -420,7 +428,7 @@ export default function CreatePosition() { diff --git a/apps/web/src/pages/Pool/Positions/create/CreatePositionContext.tsx b/apps/web/src/pages/Pool/Positions/create/CreatePositionContext.tsx index 0f9da7f7f6b..60a5da1235d 100644 --- a/apps/web/src/pages/Pool/Positions/create/CreatePositionContext.tsx +++ b/apps/web/src/pages/Pool/Positions/create/CreatePositionContext.tsx @@ -32,6 +32,8 @@ export const CreatePositionContext = React.createContext undefined, + currentTransactionStep: undefined, + setCurrentTransactionStep: () => undefined, }) export const useCreatePositionContext = () => { @@ -91,9 +93,9 @@ export const useDepositContext = () => { export const CreateTxContext = React.createContext<{ txInfo?: CreatePositionTxAndGasInfo gasFeeEstimateUSD?: CurrencyAmount | null - error?: boolean + error: boolean | string refetch?: () => void -}>({}) +}>({ error: false }) export const useCreateTxContext = () => { return useContext(CreateTxContext) diff --git a/apps/web/src/pages/Pool/Positions/create/CreatePositionModal.tsx b/apps/web/src/pages/Pool/Positions/create/CreatePositionModal.tsx index cbf8e3409e5..7dfac132d92 100644 --- a/apps/web/src/pages/Pool/Positions/create/CreatePositionModal.tsx +++ b/apps/web/src/pages/Pool/Positions/create/CreatePositionModal.tsx @@ -1,7 +1,6 @@ // eslint-disable-next-line no-restricted-imports import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb' import { LoaderButton } from 'components/Button/LoaderButton' -import { ButtonError } from 'components/Button/buttons' import { LiquidityPositionRangeChart, getLiquidityRangeChartProps, @@ -51,6 +50,8 @@ export function CreatePositionModal({ isOpen, onClose }: { isOpen: boolean; onCl const { positionState: { fee, hook }, derivedPositionInfo, + currentTransactionStep, + setCurrentTransactionStep, } = useCreatePositionContext() const { derivedPriceRangeInfo, @@ -60,7 +61,7 @@ export function CreatePositionModal({ isOpen, onClose }: { isOpen: boolean; onCl derivedDepositInfo, depositState: { exactField }, } = useDepositContext() - const { currencies, protocolVersion, isPoolOutOfSync, creatingPoolOrPair } = derivedPositionInfo + const { currencies, protocolVersion, creatingPoolOrPair } = derivedPositionInfo const { formattedAmounts, currencyAmounts, currencyAmountsUSDValue } = derivedDepositInfo const token0CurrencyInfo = useCurrencyInfo(currencyAmounts?.TOKEN0?.currency) @@ -76,7 +77,6 @@ export function CreatePositionModal({ isOpen, onClose }: { isOpen: boolean; onCl const versionLabel = getProtocolVersionLabel(protocolVersion) const [steps, setSteps] = useState([]) - const [currentStep, setCurrentStep] = useState<{ step: TransactionStep; accepted: boolean } | undefined>() const dispatch = useDispatch() const { txInfo, gasFeeEstimateUSD, error, refetch } = useCreateTxContext() const account = useAccountMeta() @@ -85,16 +85,12 @@ export function CreatePositionModal({ isOpen, onClose }: { isOpen: boolean; onCl const navigate = useNavigate() const trace = useTrace() - const onFailure = () => { - setCurrentStep(undefined) - } - const onSuccess = useCallback(() => { setSteps([]) - setCurrentStep(undefined) + setCurrentTransactionStep(undefined) onClose() navigate('/positions') - }, [onClose, navigate]) + }, [setCurrentTransactionStep, onClose, navigate]) const liquidityRangeChartProps = useMemo( () => @@ -123,10 +119,12 @@ export function CreatePositionModal({ isOpen, onClose }: { isOpen: boolean; onCl startChainId, account, liquidityTxContext: txInfo, - setCurrentStep, + setCurrentStep: setCurrentTransactionStep, setSteps, onSuccess, - onFailure, + onFailure: () => { + setCurrentTransactionStep(undefined) + }, analytics: { ...getLPBaseAnalyticsProperties({ trace, @@ -137,7 +135,6 @@ export function CreatePositionModal({ isOpen, onClose }: { isOpen: boolean; onCl currency0AmountUsd: currencyAmountsUSDValue?.TOKEN0, currency1AmountUsd: currencyAmountsUSDValue?.TOKEN1, poolId: getPoolIdOrAddressFromCreatePositionInfo(derivedPositionInfo), - chainId: startChainId, }), expectedAmountBaseRaw: currencyAmounts.TOKEN0.quotient?.toString() ?? '0', expectedAmountQuoteRaw: currencyAmounts.TOKEN1.quotient?.toString() ?? '0', @@ -154,14 +151,15 @@ export function CreatePositionModal({ isOpen, onClose }: { isOpen: boolean; onCl dispatch, selectChain, startChainId, + setCurrentTransactionStep, onSuccess, trace, protocolVersion, fee.feeAmount, currencyAmountsUSDValue?.TOKEN0, currencyAmountsUSDValue?.TOKEN1, - creatingPoolOrPair, derivedPositionInfo, + creatingPoolOrPair, ]) const [token0, token1] = currencies @@ -297,11 +295,11 @@ export function CreatePositionModal({ isOpen, onClose }: { isOpen: boolean; onCl /> - {error && } + - {currentStep && steps.length > 1 ? ( - + {currentTransactionStep && steps.length > 1 ? ( + ) : ( <> @@ -328,13 +326,13 @@ export function CreatePositionModal({ isOpen, onClose }: { isOpen: boolean; onCl }} /> - {currentStep ? ( + {currentTransactionStep ? ( - ) : !isPoolOutOfSync || !txInfo?.action ? ( + ) : ( - ) : ( - - - )} )} diff --git a/apps/web/src/pages/Pool/Positions/create/Deposit.tsx b/apps/web/src/pages/Pool/Positions/create/Deposit.tsx index 10091d75435..2b02a0744dd 100644 --- a/apps/web/src/pages/Pool/Positions/create/Deposit.tsx +++ b/apps/web/src/pages/Pool/Positions/create/Deposit.tsx @@ -1,5 +1,4 @@ import { LoaderButton } from 'components/Button/LoaderButton' -import { ButtonError } from 'components/Button/buttons' import { DepositInputForm } from 'components/Liquidity/DepositInputForm' import { getDisplayedAmountsFromDependentAmount } from 'components/Liquidity/utils' import { @@ -17,7 +16,7 @@ import { Flex, FlexProps, Text } from 'ui/src' export const DepositStep = ({ ...rest }: FlexProps) => { const { - derivedPositionInfo: { currencies, isPoolOutOfSync }, + derivedPositionInfo: { currencies }, } = useCreatePositionContext() const { derivedPriceRangeInfo } = usePriceRangeContext() const { @@ -114,25 +113,19 @@ export const DepositStep = ({ ...rest }: FlexProps) => { amount0Loading={requestLoading && exactField === PositionField.TOKEN1} amount1Loading={requestLoading && exactField === PositionField.TOKEN0} /> - {!isPoolOutOfSync || disabled ? ( - - - {inputError ? inputError : } - - - ) : ( - - - - )} + + + {inputError ? inputError : } + + setIsReviewModalOpen(false)} /> diff --git a/apps/web/src/pages/Pool/Positions/create/EditStep.tsx b/apps/web/src/pages/Pool/Positions/create/EditStep.tsx index 0360490b030..bdf879321f2 100644 --- a/apps/web/src/pages/Pool/Positions/create/EditStep.tsx +++ b/apps/web/src/pages/Pool/Positions/create/EditStep.tsx @@ -140,29 +140,31 @@ export const EditRangeSelectionStep = (props?: FlexProps) => { {`${formattedPrices[1]} ${quoteCurrency?.symbol + '/' + baseCurrency?.symbol}`} - ) : ( - - {!isFullRange ? ( - - - - - - {`${formattedPrices[0]} ${quoteCurrency?.symbol + '/' + baseCurrency?.symbol}`} - - - - - - {`${formattedPrices[1]} ${quoteCurrency?.symbol + '/' + baseCurrency?.symbol}`} - - - ) : ( + ) : !isFullRange ? ( + + + + + + {`${formattedPrices[0]} ${quoteCurrency?.symbol + '/' + baseCurrency?.symbol}`} + + - + - )} + {`${formattedPrices[1]} ${quoteCurrency?.symbol + '/' + baseCurrency?.symbol}`} + + ) : ( + + + )} diff --git a/apps/web/src/pages/Pool/Positions/create/PoolOutOfSyncError.tsx b/apps/web/src/pages/Pool/Positions/create/PoolOutOfSyncError.tsx index efe1438d767..a955eeecafa 100644 --- a/apps/web/src/pages/Pool/Positions/create/PoolOutOfSyncError.tsx +++ b/apps/web/src/pages/Pool/Positions/create/PoolOutOfSyncError.tsx @@ -17,11 +17,11 @@ export function PoolOutOfSyncError() { return ( - - + + - + {t('pool.liquidity.outOfSync')} diff --git a/apps/web/src/pages/Pool/Positions/create/RangeSelectionStep.tsx b/apps/web/src/pages/Pool/Positions/create/RangeSelectionStep.tsx index 6395e3e3cb1..48e5a2078cf 100644 --- a/apps/web/src/pages/Pool/Positions/create/RangeSelectionStep.tsx +++ b/apps/web/src/pages/Pool/Positions/create/RangeSelectionStep.tsx @@ -311,7 +311,7 @@ export const SelectPriceRangeStep = ({ const { t } = useTranslation() const { - positionState: { fee }, + positionState: { fee, hook }, derivedPositionInfo, } = useCreatePositionContext() const { priceRangeState, setPriceRangeState, derivedPriceRangeInfo } = usePriceRangeContext() @@ -419,7 +419,6 @@ export const SelectPriceRangeStep = ({ const rangeSelectionInputValues = useMemo(() => { const leftPrice = isSorted ? prices?.[0] : prices?.[1]?.invert() const rightPrice = isSorted ? prices?.[1] : prices?.[0]?.invert() - return [ ticksAtLimit[isSorted ? 0 : 1] ? '0' : leftPrice?.toSignificant(8) ?? '', ticksAtLimit[isSorted ? 1 : 0] ? '∞' : rightPrice?.toSignificant(8) ?? '', @@ -512,12 +511,13 @@ export const SelectPriceRangeStep = ({ px: '$spacing8', }} > - + {!creatingPoolOrPair && !isPriceRangeInputV2Enabled && ( { handleChartRangeInput(RangeSelectionInput.MIN, minPrice?.toString()) }} diff --git a/apps/web/src/pages/Pool/Positions/create/SelectTokenStep.tsx b/apps/web/src/pages/Pool/Positions/create/SelectTokenStep.tsx index 810f2bb5a0d..16bef6b62eb 100644 --- a/apps/web/src/pages/Pool/Positions/create/SelectTokenStep.tsx +++ b/apps/web/src/pages/Pool/Positions/create/SelectTokenStep.tsx @@ -3,11 +3,13 @@ import { FeePoolSelectAction, LiquidityEventName } from '@uniswap/analytics-even import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb' import { Currency, Percent } from '@uniswap/sdk-core' import { LoaderButton } from 'components/Button/LoaderButton' +import { HookModal } from 'components/Liquidity/HookModal' import { useAllFeeTierPoolData } from 'components/Liquidity/hooks' import { getDefaultFeeTiersWithData, isDynamicFeeTier } from 'components/Liquidity/utils' import { DoubleCurrencyLogo } from 'components/Logo/DoubleLogo' import CurrencySearchModal from 'components/SearchModal/CurrencySearchModal' import { MouseoverTooltip } from 'components/Tooltip' +import { ZERO_ADDRESS } from 'constants/misc' import { PrefetchBalancesWrapper } from 'graphql/data/apollo/AdaptiveTokenBalancesProvider' import { useCurrencyInfo } from 'hooks/Tokens' import { SUPPORTED_V2POOL_CHAIN_IDS } from 'hooks/useNetworkSupportsV2' @@ -17,15 +19,19 @@ import { AdvancedButton, Container } from 'pages/Pool/Positions/create/shared' import { FeeData } from 'pages/Pool/Positions/create/types' import { useCallback, useEffect, useMemo, useReducer, useState } from 'react' import { Trans, useTranslation } from 'react-i18next' +import { useNavigate } from 'react-router-dom' import { useMultichainContext } from 'state/multichain/useMultichainContext' -import { TamaguiClickableStyle } from 'theme/components' +import { serializeSwapStateToURLParameters } from 'state/swap/hooks' +import { ClickableTamaguiStyle, TamaguiClickableStyle } from 'theme/components' import { PositionField } from 'types/position' -import { DeprecatedButton, Flex, FlexProps, HeightAnimator, Text, styled } from 'ui/src' +import { DeprecatedButton, Flex, FlexProps, HeightAnimator, Text, TouchableArea, styled } from 'ui/src' +import { AlertTriangleFilled } from 'ui/src/components/icons/AlertTriangleFilled' import { CheckCircleFilled } from 'ui/src/components/icons/CheckCircleFilled' import { RotatableChevron } from 'ui/src/components/icons/RotatableChevron' import { Search } from 'ui/src/components/icons/Search' import { iconSizes } from 'ui/src/theme' import { TokenLogo } from 'uniswap/src/components/CurrencyLogo/TokenLogo' +import { WRAPPED_NATIVE_CURRENCY, nativeOnChain } from 'uniswap/src/constants/tokens' import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains' import { useLocalizationContext } from 'uniswap/src/features/language/LocalizationContext' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' @@ -33,6 +39,7 @@ import { areCurrenciesEqual } from 'uniswap/src/utils/currencyId' import { NumberType } from 'utilities/src/format/types' import { useTrace } from 'utilities/src/telemetry/trace/TraceContext' import { useFormatter } from 'utils/formatNumbers' +import { isV4UnsupportedChain } from 'utils/networkSupportsV4' export const CurrencySelector = ({ currency, onPress }: { currency?: Currency; onPress: () => void }) => { const { t } = useTranslation() @@ -117,9 +124,9 @@ const FeeTier = ({ justifyContent="space-between" > - + {formatPercent(new Percent(feeTier.value.feeAmount, 1000000))} - {selected && } + {selected && } {feeTier.title} @@ -147,9 +154,11 @@ export function SelectTokensStep({ const { t } = useTranslation() const { setSelectedChainId } = useMultichainContext() const trace = useTrace() + const [hookModalOpen, setHookModalOpen] = useState(false) + const navigate = useNavigate() const { - positionState: { currencyInputs, fee, protocolVersion }, + positionState: { hook, userApprovedHook, currencyInputs, fee, protocolVersion }, setPositionState, derivedPositionInfo, setFeeTierSearchModalOpen, @@ -158,6 +167,9 @@ export function SelectTokensStep({ const [token0, token1] = derivedPositionInfo.currencies const [currencySearchInputState, setCurrencySearchInputState] = useState(undefined) const [isShowMoreFeeTiersEnabled, toggleShowMoreFeeTiersEnabled] = useReducer((state) => !state, false) + const isV4UnsupportedTokenSelected = + protocolVersion === ProtocolVersion.V4 && + (isV4UnsupportedChain(token0?.chainId) || isV4UnsupportedChain(token1?.chainId)) const continueButtonEnabled = derivedPositionInfo.creatingPoolOrPair || (derivedPositionInfo.protocolVersion === ProtocolVersion.V2 && derivedPositionInfo.pair) || @@ -232,6 +244,7 @@ export function SelectTokensStep({ chainId: token0?.chainId, protocolVersion, currencies: derivedPositionInfo.currencies, + hook: hook ?? ZERO_ADDRESS, }) const feeTiers = getDefaultFeeTiersWithData({ chainId: token0?.chainId, feeTierData, t }) @@ -263,190 +276,306 @@ export function SelectTokensStep({ const { chains } = useEnabledChains() const supportedChains = useMemo(() => { - // some chains are not supported for v2 pools, so we need to filter them out - return protocolVersion === ProtocolVersion.V2 - ? chains.filter((chain) => SUPPORTED_V2POOL_CHAIN_IDS.includes(chain)) - : undefined - }, [chains, protocolVersion]) + return protocolVersion === ProtocolVersion.V4 + ? chains.filter((chain) => !isV4UnsupportedChain(chain)) + : protocolVersion === ProtocolVersion.V2 + ? chains.filter((chain) => SUPPORTED_V2POOL_CHAIN_IDS.includes(chain)) + : undefined + }, [protocolVersion, chains]) + + const handleOnContinue = () => { + if (hook !== userApprovedHook) { + setHookModalOpen(true) + } else { + onContinue() + } + } + + const wrappedNativeWarning = useMemo((): + | { wrappedToken: Currency; nativeToken: Currency; swapUrlParams: string } + | undefined => { + if (protocolVersion !== ProtocolVersion.V4) { + return undefined + } + + const wethToken0 = token0 && WRAPPED_NATIVE_CURRENCY[token0?.chainId] + if (token0 && wethToken0?.equals(token0)) { + const nativeToken = nativeOnChain(token0.chainId) + return { + wrappedToken: token0, + nativeToken, + swapUrlParams: serializeSwapStateToURLParameters({ + chainId: token0.chainId, + inputCurrency: token0, + outputCurrency: nativeToken, + }), + } + } + + const wethToken1 = token1 && WRAPPED_NATIVE_CURRENCY[token1?.chainId] + if (token1 && wethToken1?.equals(token1)) { + const nativeToken = nativeOnChain(token1.chainId) + return { + wrappedToken: token1, + nativeToken, + swapUrlParams: serializeSwapStateToURLParameters({ + chainId: token1.chainId, + inputCurrency: token1, + outputCurrency: nativeToken, + }), + } + } + + return undefined + }, [token0, token1, protocolVersion]) return ( - - - - + <> + {hook && ( + setHookModalOpen(false)} + onClearHook={() => setPositionState((state) => ({ ...state, hook: undefined }))} + onContinue={() => { + setPositionState((state) => ({ ...state, userApprovedHook: hook })) + onContinue() + }} + /> + )} + + + + + + {tokensLocked ? t('pool.tokenPair') : t('pool.selectPair')} + + {tokensLocked ? t('position.migrate.liquidity') : t('position.provide.liquidity')} + + + {tokensLocked && token0 && token1 ? ( + + + + + {token0.symbol} / {token1.symbol} + + + + ) : ( + + setCurrencySearchInputState(PositionField.TOKEN0)} + /> + setCurrencySearchInputState(PositionField.TOKEN1)} + /> + + )} + {protocolVersion === ProtocolVersion.V4 && + (isV4UnsupportedTokenSelected ? ( + + + + {t('position.migrate.v4unsupportedChain')} + + + ) : wrappedNativeWarning ? ( + + + + + + + + + + + + navigate(`/swap${wrappedNativeWarning.swapUrlParams}`)} + mt="$spacing2" + {...ClickableTamaguiStyle} + > + + + + + + + ) : ( + + ))} + + + - {tokensLocked ? t('pool.tokenPair') : t('pool.selectPair')} + + + - {tokensLocked ? t('position.migrate.liquidity') : t('position.provide.liquidity')} + {protocolVersion === ProtocolVersion.V2 ? t('fee.tier.description.v2') : t('fee.tier.description')} - {tokensLocked && token0 && token1 ? ( - - - - - {token0.symbol} / {token1.symbol} - - - - ) : ( - - setCurrencySearchInputState(PositionField.TOKEN0)} /> - setCurrencySearchInputState(PositionField.TOKEN1)} /> - - )} - {protocolVersion === ProtocolVersion.V4 && } - - - - - - - - - {protocolVersion === ProtocolVersion.V2 ? t('fee.tier.description.v2') : t('fee.tier.description')} - - - {protocolVersion !== ProtocolVersion.V2 && ( - + {protocolVersion !== ProtocolVersion.V2 && ( - - - - {isDynamicFeeTier(fee) ? ( - - ) : ( - - )} - - {fee.feeAmount === mostUsedFeeTier?.fee.feeAmount ? ( - - + + + + + {isDynamicFeeTier(fee) ? ( + + ) : ( + + )} + + {fee.feeAmount === mostUsedFeeTier?.fee.feeAmount ? ( + + + + + + + + ) : feeTiers.find((tier) => tier.value.feeAmount === fee.feeAmount) ? null : ( + - + - - ) : feeTiers.find((tier) => tier.value.feeAmount === fee.feeAmount) ? null : ( - - - - - - )} + )} + + + + - - - - - - - {isShowMoreFeeTiersEnabled ? t('common.less') : t('common.more')} - - - - - - - - {feeTiers.map((feeTier) => ( - - ))} - - {protocolVersion === ProtocolVersion.V4 && ( - { - setFeeTierSearchModalOpen(true) - }} + + {isShowMoreFeeTiersEnabled ? t('common.less') : t('common.more')} + + - )} + - - - )} - - - - - - - + + + + {feeTiers.map((feeTier) => ( + + ))} + + {protocolVersion === ProtocolVersion.V4 && ( + { + setFeeTierSearchModalOpen(true) + }} + /> + )} + + + + )} + + + + + + + - setCurrencySearchInputState(undefined)} - onCurrencySelect={handleCurrencySelect} - chainIds={supportedChains} - /> - + setCurrencySearchInputState(undefined)} + onCurrencySelect={handleCurrencySelect} + chainIds={supportedChains} + /> + + ) } diff --git a/apps/web/src/pages/Pool/Positions/create/TradingAPIError.tsx b/apps/web/src/pages/Pool/Positions/create/TradingAPIError.tsx index 8d986f607a6..0670bab8424 100644 --- a/apps/web/src/pages/Pool/Positions/create/TradingAPIError.tsx +++ b/apps/web/src/pages/Pool/Positions/create/TradingAPIError.tsx @@ -4,9 +4,13 @@ import { Flex, Text, TouchableArea } from 'ui/src' import { AlertTriangleFilled } from 'ui/src/components/icons/AlertTriangleFilled' import { RotateLeft } from 'ui/src/components/icons/RotateLeft' -export function TradingAPIError({ refetch }: { refetch?: () => void }) { +export function TradingAPIError({ errorMessage, refetch }: { errorMessage: boolean | string; refetch?: () => void }) { const { t } = useTranslation() + if (!errorMessage) { + return null + } + return ( @@ -19,6 +23,12 @@ export function TradingAPIError({ refetch }: { refetch?: () => void }) { {t('pool.liquidity.data.error.message')} + {/* the error message will be of type true or a string. True means there was an error but the message is unknown. */} + {errorMessage !== true && ( + + {t('common.error.label')}: {errorMessage} + + )} {Boolean(refetch) && ( diff --git a/apps/web/src/pages/Pool/Positions/create/hooks.tsx b/apps/web/src/pages/Pool/Positions/create/hooks.tsx index 2047b51420f..02cd195eaa0 100644 --- a/apps/web/src/pages/Pool/Positions/create/hooks.tsx +++ b/apps/web/src/pages/Pool/Positions/create/hooks.tsx @@ -7,13 +7,13 @@ import { Pool as V4Pool } from '@uniswap/v4-sdk' import { DepositInfo, DepositState } from 'components/Liquidity/types' import { getPoolFromRest } from 'components/Liquidity/utils' import { ConnectWalletButtonText } from 'components/NavBar/accountCTAsExperimentUtils' +import { ZERO_ADDRESS } from 'constants/misc' import { checkIsNative, useCurrency, useCurrencyInfo } from 'hooks/Tokens' import { useAccount } from 'hooks/useAccount' import { useIsPoolOutOfSync } from 'hooks/useIsPoolOutOfSync' import { PoolState, usePool } from 'hooks/usePools' import { useSwapTaxes } from 'hooks/useSwapTaxes' import { PairState, useV2Pair } from 'hooks/useV2Pairs' -import { useCurrencyBalances } from 'lib/hooks/useCurrencyBalance' import tryParseCurrencyAmount from 'lib/utils/tryParseCurrencyAmount' import { useCreatePositionContext, usePriceRangeContext } from 'pages/Pool/Positions/create/CreatePositionContext' import { @@ -43,6 +43,7 @@ import { protocolShouldCalculateTaxes, validateCurrencyInput, } from 'pages/Pool/Positions/create/utils' +import { ParsedQs } from 'qs' import { useMemo } from 'react' import { Trans, useTranslation } from 'react-i18next' import { useMultichainContext } from 'state/multichain/useMultichainContext' @@ -53,7 +54,9 @@ import { useUrlContext } from 'uniswap/src/contexts/UrlContext' import { useGetPoolsByTokens } from 'uniswap/src/data/rest/getPools' import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains' import { useSupportedChainId } from 'uniswap/src/features/chains/hooks/useSupportedChainId' +import { useOnChainCurrencyBalance } from 'uniswap/src/features/portfolio/api' import { useUSDCValue } from 'uniswap/src/features/transactions/swap/hooks/useUSDCPrice' +import { getValidAddress } from 'uniswap/src/utils/addresses' import { getParsedChainId } from 'utils/chainParams' /** @@ -91,7 +94,7 @@ export function useDerivedPositionInfo(state: PositionState): CreatePositionInfo protocolVersions: [protocolVersion], token0: getCurrencyAddressWithWrap(sortedCurrencies?.[0], protocolVersion), token1: getCurrencyAddressWithWrap(sortedCurrencies?.[1], protocolVersion), - hooks: state.hook?.toLowerCase(), // BE does not accept checksummed addresses + hooks: state.hook?.toLowerCase() ?? ZERO_ADDRESS, // BE does not accept checksummed addresses }, poolsQueryEnabled, ) @@ -350,7 +353,8 @@ export function useDepositInfo(state: UseDepositInfoProps): DepositInfo { const { protocolVersion, address, token0, token1, exactField, exactAmounts, deposit0Disabled, deposit1Disabled } = state - const [token0Balance, token1Balance] = useCurrencyBalances(address, [token0, token1]) + const { balance: token0Balance } = useOnChainCurrencyBalance(token0, address) + const { balance: token1Balance } = useOnChainCurrencyBalance(token1, address) const [independentToken, dependentToken] = exactField === PositionField.TOKEN0 ? [token0, token1] : [token1, token0] const independentAmount = tryParseCurrencyAmount(exactAmounts[exactField], independentToken) @@ -492,13 +496,23 @@ export function useDepositInfo(state: UseDepositInfoProps): DepositInfo { ) } +function getParsedHookAddrParam(params: ParsedQs): string | undefined { + const hookAddr = params?.hook + if (!hookAddr || typeof hookAddr !== 'string') { + return undefined + } + const validAddress = getValidAddress(hookAddr) + return validAddress || undefined +} + // Prefill currency inputs from URL search params ?currencyA=ETH¤cyB=0x123...&chain=base -export function useInitialCurrencyInputs() { +export function useInitialPoolInputs() { const { defaultChainId } = useEnabledChains() const defaultInitialToken = nativeOnChain(defaultChainId) const { useParsedQueryString } = useUrlContext() const parsedQs = useParsedQueryString() + const hookAddress = getParsedHookAddrParam(parsedQs) const parsedChainId = getParsedChainId(parsedQs) const supportedChainId = useSupportedChainId(parsedChainId) ?? defaultChainId @@ -526,6 +540,7 @@ export function useInitialCurrencyInputs() { return { [PositionField.TOKEN0]: currencyA ?? currencyB ?? defaultInitialToken, [PositionField.TOKEN1]: currencyA && currencyB ? currencyB : undefined, + hook: hookAddress, } - }, [currencyA, currencyB, defaultInitialToken]) + }, [currencyA, currencyB, hookAddress, defaultInitialToken]) } diff --git a/apps/web/src/pages/Pool/Positions/create/shared.tsx b/apps/web/src/pages/Pool/Positions/create/shared.tsx index 1cf549ac793..6b9907cfb3f 100644 --- a/apps/web/src/pages/Pool/Positions/create/shared.tsx +++ b/apps/web/src/pages/Pool/Positions/create/shared.tsx @@ -81,17 +81,25 @@ export function formatPrices( return { formattedPrices: ['', ''], isFullRange: true } } - const { ticksAtLimit, isSorted, prices } = derivedPriceRangeInfo + const { ticksAtLimit, isSorted, prices, invertPrice } = derivedPriceRangeInfo const isLowerAtLimit = ticksAtLimit[isSorted ? 0 : 1] + const [lowerPrice, upperPrice] = isSorted ? [prices?.[0], prices?.[1]] : [prices?.[1], prices?.[0]] + const lowerPriceFormatted = isLowerAtLimit ? '0' - : formatter({ value: prices?.[0]?.toSignificant(), type: NumberType.TokenTx }) + : formatter({ + value: (invertPrice ? lowerPrice?.invert() : lowerPrice)?.toSignificant(), + type: NumberType.TokenTx, + }) const isUpperAtLimit = ticksAtLimit[isSorted ? 1 : 0] const upperPriceFormatted = isUpperAtLimit ? '∞' - : formatter({ value: prices?.[1]?.toSignificant(), type: NumberType.TokenTx }) + : formatter({ + value: (invertPrice ? upperPrice?.invert() : upperPrice)?.toSignificant(), + type: NumberType.TokenTx, + }) return { formattedPrices: [lowerPriceFormatted, upperPriceFormatted], isFullRange: isLowerAtLimit && isUpperAtLimit } } diff --git a/apps/web/src/pages/Pool/Positions/create/types.ts b/apps/web/src/pages/Pool/Positions/create/types.ts index cb2c5616cf9..fe2682a6291 100644 --- a/apps/web/src/pages/Pool/Positions/create/types.ts +++ b/apps/web/src/pages/Pool/Positions/create/types.ts @@ -6,6 +6,7 @@ import { FeeAmount, TICK_SPACINGS, Pool as V3Pool } from '@uniswap/v3-sdk' import { Pool as V4Pool } from '@uniswap/v4-sdk' import { Dispatch, SetStateAction } from 'react' import { PositionField } from 'types/position' +import { TransactionStep } from 'uniswap/src/features/transactions/swap/types/steps' export type FeeData = { feeAmount: number @@ -34,12 +35,14 @@ export interface PositionState { currencyInputs: { [field in PositionField]?: Currency } fee: FeeData hook?: string + userApprovedHook?: string // address of approved hook. If different from `hook`, user needs to reapprove the new hook } export const DEFAULT_POSITION_STATE: PositionState = { currencyInputs: {}, fee: { feeAmount: FeeAmount.MEDIUM, tickSpacing: TICK_SPACINGS[FeeAmount.MEDIUM] }, hook: undefined, + userApprovedHook: undefined, protocolVersion: ProtocolVersion.V4, } @@ -87,6 +90,8 @@ export type CreatePositionContextType = { setFeeTierSearchModalOpen: Dispatch> dynamicFeeTierSpeedbumpData: DynamicFeeTierSpeedbumpData setDynamicFeeTierSpeedbumpData: Dispatch> + currentTransactionStep?: { step: TransactionStep; accepted: boolean } + setCurrentTransactionStep: Dispatch> } export interface PriceRangeState { diff --git a/apps/web/src/pages/Pool/Positions/create/utils.tsx b/apps/web/src/pages/Pool/Positions/create/utils.tsx index a6940b0e42a..d4ef525895c 100644 --- a/apps/web/src/pages/Pool/Positions/create/utils.tsx +++ b/apps/web/src/pages/Pool/Positions/create/utils.tsx @@ -395,22 +395,11 @@ function createMockV4Pool({ return pool } -function createMockPair({ - baseCurrency, - quoteCurrency, - price, -}: { - baseCurrency?: Currency - quoteCurrency?: Currency - price?: Price -}) { - const baseToken = baseCurrency?.wrapped - const quoteToken = quoteCurrency?.wrapped - - if (baseToken && quoteToken && price) { +function createMockPair(price?: Price) { + if (price) { return new Pair( - CurrencyAmount.fromRawAmount(baseToken, price.numerator), - CurrencyAmount.fromRawAmount(quoteToken, price.denominator), + CurrencyAmount.fromRawAmount(price.quoteCurrency.wrapped, price.numerator), + CurrencyAmount.fromRawAmount(price.baseCurrency.wrapped, price.denominator), ) } else { return undefined @@ -542,11 +531,7 @@ export function getV2PriceRangeInfo({ return { protocolVersion: ProtocolVersion.V2, price, - mockPair: createMockPair({ - baseCurrency: currencies[0], - quoteCurrency: currencies[1], - price, - }), + mockPair: createMockPair(price), deposit0Disabled: false, deposit1Disabled: false, } satisfies V2PriceRangeInfo @@ -628,7 +613,7 @@ export function getV3PriceRangeInfo({ : tryParseTick(sortedToken0, sortedToken1, fee.feeAmount, state.maxPrice) const ticks: [OptionalNumber, OptionalNumber] = [lowerTick, upperTick] - const invalidRange = Boolean(lowerTick && upperTick && lowerTick >= upperTick) + const invalidRange = Boolean(lowerTick !== undefined && upperTick !== undefined && lowerTick >= upperTick) const ticksAtLimit: [boolean, boolean] = state.fullRange ? [true, true] @@ -658,8 +643,12 @@ export function getV3PriceRangeInfo({ ) // This is in terms of the sorted tokens - const deposit0Disabled = Boolean(upperTick && poolForPosition && poolForPosition.tickCurrent >= upperTick) - const deposit1Disabled = Boolean(lowerTick && poolForPosition && poolForPosition.tickCurrent <= lowerTick) + const deposit0Disabled = Boolean( + upperTick !== undefined && poolForPosition && poolForPosition.tickCurrent >= upperTick, + ) + const deposit1Disabled = Boolean( + lowerTick !== undefined && poolForPosition && poolForPosition.tickCurrent <= lowerTick, + ) const depositADisabled = invalidRange || @@ -790,7 +779,7 @@ export function getV4PriceRangeInfo({ ? tryParseV4Tick(sortedCurrency1, sortedCurrency0, state.minPrice, poolForPosition?.tickSpacing) : tryParseV4Tick(sortedCurrency0, sortedCurrency1, state.maxPrice, poolForPosition?.tickSpacing) const ticks: [OptionalNumber, OptionalNumber] = [lowerTick, upperTick] - const invalidRange = Boolean(lowerTick && upperTick && lowerTick >= upperTick) + const invalidRange = Boolean(lowerTick !== undefined && upperTick !== undefined && lowerTick >= upperTick) const ticksAtLimit: [boolean, boolean] = state.fullRange ? [true, true] @@ -819,20 +808,25 @@ export function getV4PriceRangeInfo({ !invalidRange && price && prices[0] && prices[1] && (price.lessThan(prices[0]) || price.greaterThan(prices[1])), ) - const deposit0Disabled = Boolean(upperTick && poolForPosition && poolForPosition.tickCurrent >= upperTick) - const deposit1Disabled = Boolean(lowerTick && poolForPosition && poolForPosition.tickCurrent <= lowerTick) + // This is in terms of the sorted tokens + const deposit0Disabled = Boolean( + upperTick !== undefined && poolForPosition && poolForPosition.tickCurrent >= upperTick, + ) + const deposit1Disabled = Boolean( + lowerTick !== undefined && poolForPosition && poolForPosition.tickCurrent <= lowerTick, + ) const depositADisabled = invalidRange || Boolean( - (deposit0Disabled && poolForPosition && baseCurrency && poolForPosition.token0.equals(baseCurrency)) || - (deposit1Disabled && poolForPosition && baseCurrency && poolForPosition.token1.equals(baseCurrency)), + (deposit0Disabled && poolForPosition && currencies[0] && poolForPosition.token0.equals(currencies[0])) || + (deposit1Disabled && poolForPosition && currencies[0] && poolForPosition.token1.equals(currencies[0])), ) const depositBDisabled = invalidRange || Boolean( - (deposit0Disabled && poolForPosition && quoteCurrency && poolForPosition.token0.equals(quoteCurrency)) || - (deposit1Disabled && poolForPosition && quoteCurrency && poolForPosition.token1.equals(quoteCurrency)), + (deposit0Disabled && poolForPosition && currencies[1] && poolForPosition.token0.equals(currencies[1])) || + (deposit1Disabled && poolForPosition && currencies[1] && poolForPosition.token1.equals(currencies[1])), ) return { @@ -1031,7 +1025,7 @@ export function generateCreateCalldataQueryParams({ ? derivedPriceRangeInfo.tickSpaceLimits[1] : derivedPriceRangeInfo.ticks?.[1] - if (!tickLower || !tickUpper) { + if (tickLower === undefined || tickUpper === undefined) { return undefined } diff --git a/apps/web/src/pages/RemoveLiquidity/RemoveLiquidityForm.tsx b/apps/web/src/pages/RemoveLiquidity/RemoveLiquidityForm.tsx index e1d0dd8028b..c577209f8d4 100644 --- a/apps/web/src/pages/RemoveLiquidity/RemoveLiquidityForm.tsx +++ b/apps/web/src/pages/RemoveLiquidity/RemoveLiquidityForm.tsx @@ -1,3 +1,5 @@ +// eslint-disable-next-line no-restricted-imports +import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb' import { LoaderButton } from 'components/Button/LoaderButton' import { LiquidityModalDetailRows } from 'components/Liquidity/LiquidityModalDetailRows' import { LiquidityPositionInfo } from 'components/Liquidity/LiquidityPositionInfo' @@ -39,7 +41,7 @@ export function RemoveLiquidityForm() { const canUnwrap0 = useCanUnwrapCurrency(currency0Amount.currency) const canUnwrap1 = useCanUnwrapCurrency(currency1Amount.currency) const nativeCurrencyInfo = useNativeCurrencyInfo(positionInfo.chainId) - const canUnwrap = canUnwrap0 || canUnwrap1 + const canUnwrap = (canUnwrap0 || canUnwrap1) && positionInfo.version !== ProtocolVersion.V4 const unwrapUnderCard = useMemo(() => { if (!canUnwrap || !nativeCurrencyInfo) { @@ -68,7 +70,7 @@ export function RemoveLiquidityForm() { /> ) - }, [nativeCurrencyInfo, unwrapNativeCurrency, canUnwrap, setUnwrapNativeCurrency]) + }, [canUnwrap, nativeCurrencyInfo, unwrapNativeCurrency, setUnwrapNativeCurrency]) return ( @@ -138,7 +140,7 @@ export function RemoveLiquidityForm() { currency1Amount={currency1Amount} networkCost={gasFeeEstimateUSD} /> - {error && } + setStep(DecreaseLiquidityStep.Review)} diff --git a/apps/web/src/pages/RemoveLiquidity/V2.tsx b/apps/web/src/pages/RemoveLiquidity/V2.tsx index c83ae41d1b0..5ffb147e70d 100644 --- a/apps/web/src/pages/RemoveLiquidity/V2.tsx +++ b/apps/web/src/pages/RemoveLiquidity/V2.tsx @@ -56,6 +56,7 @@ import { FeatureFlags } from 'uniswap/src/features/gating/flags' import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' import Trace from 'uniswap/src/features/telemetry/Trace' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { useUSDCValue } from 'uniswap/src/features/transactions/swap/hooks/useUSDCPrice' import { logger } from 'utilities/src/logger/logger' import { useTrace } from 'utilities/src/telemetry/trace/TraceContext' import { calculateGasMargin } from 'utils/calculateGasMargin' @@ -123,6 +124,10 @@ function RemoveLiquidity() { const [showDetailed, setShowDetailed] = useState(false) const [attemptingTxn, setAttemptingTxn] = useState(false) // clicked confirm + // usd values + const usdValueA = useUSDCValue(parsedAmounts[Field.CURRENCY_A]) + const usdValueB = useUSDCValue(parsedAmounts[Field.CURRENCY_B]) + // txn values const [txHash, setTxHash] = useState('') const getDeadline = useGetTransactionDeadline() @@ -356,8 +361,8 @@ function RemoveLiquidity() { fee: FeeAmount.MEDIUM, currency0: currencyA, currency1: currencyB, - currency0AmountUsd: parsedAmounts[Field.CURRENCY_A], - currency1AmountUsd: parsedAmounts[Field.CURRENCY_B], + currency0AmountUsd: usdValueA, + currency1AmountUsd: usdValueB, version: ProtocolVersion.V2, poolId: computePairAddress({ factoryAddress: V2_FACTORY_ADDRESSES[currencyA.chainId], diff --git a/apps/web/src/pages/RemoveLiquidity/V3.tsx b/apps/web/src/pages/RemoveLiquidity/V3.tsx index 4f577f1503d..8b490f1ddd1 100644 --- a/apps/web/src/pages/RemoveLiquidity/V3.tsx +++ b/apps/web/src/pages/RemoveLiquidity/V3.tsx @@ -45,6 +45,7 @@ import { useIsSupportedChainId } from 'uniswap/src/features/chains/hooks/useSupp import { FeatureFlags } from 'uniswap/src/features/gating/flags' import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' import { sendAnalyticsEvent } from 'uniswap/src/features/telemetry/send' +import { useUSDCValue } from 'uniswap/src/features/transactions/swap/hooks/useUSDCPrice' import { logger } from 'utilities/src/logger/logger' import { useTrace } from 'utilities/src/telemetry/trace/TraceContext' import { calculateGasMargin } from 'utils/calculateGasMargin' @@ -113,6 +114,10 @@ function Remove({ tokenId }: { tokenId: BigNumber }) { const removed = position?.liquidity?.eq(0) + // usd values + const removedLiquidity0Usd = useUSDCValue(liquidityValue0) + const removedLiquidity1Usd = useUSDCValue(liquidityValue1) + // boilerplate for the slider const [percentForSlider, onPercentSelectForSlider] = useDebouncedChangeHandler(percent, onPercentSelect) const getDeadline = useGetTransactionDeadline() // custom from users settings @@ -192,10 +197,9 @@ function Remove({ tokenId }: { tokenId: BigNumber }) { : undefined, currency0: liquidityValue0.currency, currency1: liquidityValue1.currency, - currency0AmountUsd: liquidityValue0, - currency1AmountUsd: liquidityValue1, + currency0AmountUsd: removedLiquidity0Usd, + currency1AmountUsd: removedLiquidity1Usd, version: ProtocolVersion.V3, - chainId: account.chainId, }), expectedAmountBaseRaw: liquidityValue0.quotient.toString(), expectedAmountQuoteRaw: liquidityValue1.quotient.toString(), @@ -239,6 +243,8 @@ function Remove({ tokenId }: { tokenId: BigNumber }) { feeValue1, trace, position, + removedLiquidity0Usd, + removedLiquidity1Usd, percent, addTransaction, ]) diff --git a/apps/web/src/pages/Swap/Buy/CountryListModal.tsx b/apps/web/src/pages/Swap/Buy/CountryListModal.tsx index e5b7ce89f0c..dd81cbf893f 100644 --- a/apps/web/src/pages/Swap/Buy/CountryListModal.tsx +++ b/apps/web/src/pages/Swap/Buy/CountryListModal.tsx @@ -8,7 +8,7 @@ import { useTranslation } from 'react-i18next' import AutoSizer from 'react-virtualized-auto-sizer' import { FixedSizeList } from 'react-window' import { CloseIcon } from 'theme/components' -import { Flex, styled, useSporeColors } from 'ui/src' +import { Flex, styled, useMedia, useSporeColors } from 'ui/src' import { Text } from 'ui/src/components/text/Text' import { iconSizes } from 'ui/src/theme' import { Modal } from 'uniswap/src/components/modals/Modal' @@ -64,11 +64,13 @@ export function CountryListModal({ onDismiss() }, [onDismiss]) + const sm = useMedia().sm + return ( for-connecting-v2.svg diff --git a/apps/web/src/pages/Swap/Buy/__snapshots__/ProviderConnectionError.test.tsx.snap b/apps/web/src/pages/Swap/Buy/__snapshots__/ProviderConnectionError.test.tsx.snap index 1ac7576ae83..6f31efd4e41 100644 --- a/apps/web/src/pages/Swap/Buy/__snapshots__/ProviderConnectionError.test.tsx.snap +++ b/apps/web/src/pages/Swap/Buy/__snapshots__/ProviderConnectionError.test.tsx.snap @@ -33,7 +33,7 @@ exports[`ProviderConnectionError should render the component and call callbacks class="_pr-_sm_t-space-spa94665593 _pl-_sm_t-space-spa94665593 _pb-_sm_t-space-spa1360334076 _display-flex _alignItems-stretch _flexBasis-auto _boxSizing-border-box _minHeight-0px _minWidth-0px _flexShrink-0 _flexDirection-column _gap-t-space-spa1360334076 _position-relative" > for-connecting-v2.svg diff --git a/apps/web/src/pages/Swap/Buy/shared.tsx b/apps/web/src/pages/Swap/Buy/shared.tsx index 9f625ee91b1..9ec5c94505b 100644 --- a/apps/web/src/pages/Swap/Buy/shared.tsx +++ b/apps/web/src/pages/Swap/Buy/shared.tsx @@ -9,7 +9,6 @@ import { FiatCurrencyInfo } from 'uniswap/src/features/fiatOnRamp/types' export const ContentWrapper = styled(Flex, { backgroundColor: '$surface1', width: '100%', - overflow: 'hidden', flex: 1, position: 'relative', }) @@ -17,6 +16,8 @@ export const ContentWrapper = styled(Flex, { const ConnectingBackgroundImage = styled(ForConnectingBackground, { position: 'absolute', zIndex: 0, + width: '100%', + height: '100%', }) const ConnectingBackgroundImageFadeLayer = styled(Flex, { diff --git a/apps/web/src/pages/Swap/Send/__snapshots__/NewAddressSpeedBump.test.tsx.snap b/apps/web/src/pages/Swap/Send/__snapshots__/NewAddressSpeedBump.test.tsx.snap index 862899a1dca..37160d0e32c 100644 --- a/apps/web/src/pages/Swap/Send/__snapshots__/NewAddressSpeedBump.test.tsx.snap +++ b/apps/web/src/pages/Swap/Send/__snapshots__/NewAddressSpeedBump.test.tsx.snap @@ -356,147 +356,151 @@ exports[`NewAddressSpeedBumpModal should not render identicon if account has no style="display: flex; align-items: stretch; flex-basis: auto; box-sizing: border-box; position: absolute; min-height: 0px; min-width: 0px; flex-shrink: 0; flex-direction: column; top: 0px; left: 0px; right: 0px; bottom: 0px; background-color: rgba(0, 0, 0, 0.6); z-index: 1040; pointer-events: auto; opacity: 0;" />
-
-
-
+ + + + Get help +
+ - +
+
+
- New address -
-
- You haven’t transacted with this address before. Make sure it’s the correct address before continuing. + + +
- - 0x9984b4b4E408e8D618A879e5315BD30952c89103 - + New address +
+
+ You haven’t transacted with this address before. Make sure it’s the correct address before continuing. +
+
+ + 0x9984b4b4E408e8D618A879e5315BD30952c89103 + +
-
-
- - + + +
diff --git a/apps/web/src/pages/Swap/Send/__snapshots__/SendCurrencyInputForm.test.tsx.snap b/apps/web/src/pages/Swap/Send/__snapshots__/SendCurrencyInputForm.test.tsx.snap index 52a7bd14a03..2d0495a65e7 100644 --- a/apps/web/src/pages/Swap/Send/__snapshots__/SendCurrencyInputForm.test.tsx.snap +++ b/apps/web/src/pages/Swap/Send/__snapshots__/SendCurrencyInputForm.test.tsx.snap @@ -438,7 +438,7 @@ exports[`SendCurrencyInputform renders input in fiat correctly 1`] = ` fill="none" height="100%" stroke-width="8" - style="color: rgb(191, 191, 191); width: 16px; height: 16px;" + style="width: 16px; height: 16px; color: rgb(191, 191, 191);" viewBox="0 0 16 16" width="100%" > @@ -989,7 +989,7 @@ exports[`SendCurrencyInputform renders input in token amount correctly 1`] = ` fill="none" height="100%" stroke-width="8" - style="color: rgb(191, 191, 191); width: 16px; height: 16px;" + style="width: 16px; height: 16px; color: rgb(191, 191, 191);" viewBox="0 0 16 16" width="100%" > @@ -1555,7 +1555,7 @@ exports[`SendCurrencyInputform should render placeholder values 1`] = ` fill="none" height="100%" stroke-width="8" - style="color: rgb(191, 191, 191); width: 16px; height: 16px;" + style="width: 16px; height: 16px; color: rgb(191, 191, 191);" viewBox="0 0 16 16" width="100%" > diff --git a/apps/web/src/pages/Swap/Send/__snapshots__/SmartContractSpeedbump.test.tsx.snap b/apps/web/src/pages/Swap/Send/__snapshots__/SmartContractSpeedbump.test.tsx.snap index 30f8c21f8b8..5973ae070d2 100644 --- a/apps/web/src/pages/Swap/Send/__snapshots__/SmartContractSpeedbump.test.tsx.snap +++ b/apps/web/src/pages/Swap/Send/__snapshots__/SmartContractSpeedbump.test.tsx.snap @@ -370,136 +370,140 @@ exports[`SmartContractSpeedBumpModal should render correctly 1`] = ` style="display: flex; align-items: stretch; flex-basis: auto; box-sizing: border-box; position: absolute; min-height: 0px; min-width: 0px; flex-shrink: 0; flex-direction: column; top: 0px; left: 0px; right: 0px; bottom: 0px; background-color: rgba(0, 0, 0, 0.6); z-index: 1040; pointer-events: auto; opacity: 0;" />
-
-
-
+ + + + Get help +
+ - +
+
+
- Is this a wallet address? + + +
- You’re about to send tokens to a special type of address - a smart contract. Double-check it’s the address you intended to send to. If it’s wrong, your tokens could be lost forever. +
+ Is this a wallet address? +
+
+ You’re about to send tokens to a special type of address - a smart contract. Double-check it’s the address you intended to send to. If it’s wrong, your tokens could be lost forever. +
-
-
- - + + +
diff --git a/apps/web/src/react-app-env.d.ts b/apps/web/src/react-app-env.d.ts index b8304d5346f..ed492580e38 100644 --- a/apps/web/src/react-app-env.d.ts +++ b/apps/web/src/react-app-env.d.ts @@ -35,26 +35,3 @@ declare module '*.mov' { const src: string export default src } - -declare module 'react-scroll-sync' { - export interface ScrollSyncProps { - children?: React.ReactNode - onSync?(el: Element): void - proportional?: boolean - vertical?: boolean - horizontal?: boolean - enabled?: boolean - } - - export interface ScrollSyncPaneProps { - attachTo?: HTMLElement - children?: React.ReactNode - group?: string | string[] - enabled?: boolean - // https://github.com/okonet/react-scroll-sync/issues/79 - innerRef?: React.Ref - } - - export const ScrollSync: React.FC - export const ScrollSyncPane: React.FC -} diff --git a/apps/web/src/state/lists/reducer.ts b/apps/web/src/state/lists/reducer.ts index 7d083c4138e..432caaf2e3e 100644 --- a/apps/web/src/state/lists/reducer.ts +++ b/apps/web/src/state/lists/reducer.ts @@ -4,6 +4,7 @@ import { DEFAULT_INACTIVE_LIST_URLS } from 'constants/lists' import { updateVersion } from 'state/global/actions' import { acceptListUpdate, addList, fetchTokenList, removeList } from 'state/lists/actions' import { ListsState } from 'state/lists/types' +import { Mutable } from 'types/mutable' type ListState = ListsState['byUrl'][string] @@ -14,8 +15,6 @@ const NEW_LIST_STATE: ListState = { pendingUpdate: null, } -type Mutable = { -readonly [P in keyof T]: T[P] extends ReadonlyArray ? U[] : T[P] } - export const initialState: ListsState = { lastInitializedDefaultListOfLists: DEFAULT_INACTIVE_LIST_URLS, byUrl: { diff --git a/apps/web/src/state/swap/hooks.test.tsx b/apps/web/src/state/swap/hooks.test.tsx index 5efa8171396..0e813233b66 100644 --- a/apps/web/src/state/swap/hooks.test.tsx +++ b/apps/web/src/state/swap/hooks.test.tsx @@ -104,7 +104,6 @@ describe('hooks', () => { swapInputChainId: undefined, navigateToFiatOnRamp: () => {}, onSwapChainsChanged: () => {}, - setSwapInputChainId: () => {}, signer: undefined, // eslint-disable-next-line @typescript-eslint/no-unused-vars useProviderHook: (_chainId: number) => undefined, diff --git a/apps/web/src/state/swap/hooks.tsx b/apps/web/src/state/swap/hooks.tsx index 81482c71b6f..3a7a0dda56a 100644 --- a/apps/web/src/state/swap/hooks.tsx +++ b/apps/web/src/state/swap/hooks.tsx @@ -19,8 +19,6 @@ import { isClassicTrade, isSubmittableTrade, isUniswapXTrade } from 'state/routi import { CurrencyState, SerializedCurrencyState, SwapInfo, SwapState } from 'state/swap/types' import { useSwapAndLimitContext, useSwapContext } from 'state/swap/useSwapContext' import { useUserSlippageToleranceWithDefault } from 'state/user/hooks' -import { getNativeAddress } from 'uniswap/src/constants/addresses' -import { useUniswapContext } from 'uniswap/src/contexts/UniswapContext' import { useUrlContext } from 'uniswap/src/contexts/UrlContext' import { getChainInfo } from 'uniswap/src/features/chains/chainInfo' import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains' @@ -428,17 +426,7 @@ export function useInitialCurrencyState(): { } }, [parsedCurrencyState.inputCurrencyId, parsedCurrencyState.outputCurrencyId, setIsUserSelectedToken]) - const { swapInputChainId } = useUniswapContext() - const { initialInputCurrencyAddress, initialChainId } = useMemo(() => { - // Default to chain override set by context if used - if (swapInputChainId) { - return { - initialInputCurrencyAddress: getNativeAddress(swapInputChainId), - initialChainId: swapInputChainId, - } - } - // Default to ETH if multichain if (!hasCurrencyQueryParams) { return { @@ -459,7 +447,6 @@ export function useInitialCurrencyState(): { initialChainId: supportedChainId, } }, [ - swapInputChainId, hasCurrencyQueryParams, parsedCurrencyState.inputCurrencyId, parsedCurrencyState.outputCurrencyId, diff --git a/apps/web/src/state/user/hooks.tsx b/apps/web/src/state/user/hooks.tsx index c781a6e4656..034ca2ac7d4 100644 --- a/apps/web/src/state/user/hooks.tsx +++ b/apps/web/src/state/user/hooks.tsx @@ -52,7 +52,6 @@ export function useUserSlippageTolerance(): [ return state.user.userSlippageTolerance }) - // TODO(WEB-1985): Keep `userSlippageTolerance` as Percent in Redux store and remove this conversion const userSlippageTolerance = useMemo( () => userSlippageToleranceRaw === SlippageTolerance.Auto diff --git a/apps/web/src/theme/components/index.tsx b/apps/web/src/theme/components/index.tsx index e537d7de557..238d4856085 100644 --- a/apps/web/src/theme/components/index.tsx +++ b/apps/web/src/theme/components/index.tsx @@ -373,14 +373,6 @@ export const BackArrowIcon = styled(ArrowLeft)` color: ${({ theme }) => theme.neutral1}; ` -export function BackArrowLink({ to }: { to: string }) { - return ( - - - - ) -} - export const CustomLightSpinner = styled(Spinner)<{ size: string }>` height: ${({ size }) => size}; width: ${({ size }) => size}; diff --git a/apps/web/src/types/mutable.ts b/apps/web/src/types/mutable.ts new file mode 100644 index 00000000000..6f87c0958c5 --- /dev/null +++ b/apps/web/src/types/mutable.ts @@ -0,0 +1 @@ +export type Mutable = { -readonly [P in keyof T]: T[P] extends ReadonlyArray ? U[] : T[P] } diff --git a/apps/web/src/utils/networkSupportsV4.test.ts b/apps/web/src/utils/networkSupportsV4.test.ts new file mode 100644 index 00000000000..7d82461ad94 --- /dev/null +++ b/apps/web/src/utils/networkSupportsV4.test.ts @@ -0,0 +1,27 @@ +import { UniverseChainId } from 'uniswap/src/features/chains/types' +import { isV4UnsupportedChain } from 'utils/networkSupportsV4' + +describe('isV4UnsupportedChain', () => { + it('returns true for Zksync', () => { + expect(isV4UnsupportedChain(UniverseChainId.Zksync)).toBe(true) + }) + + it('returns true for Celo', () => { + expect(isV4UnsupportedChain(UniverseChainId.Celo)).toBe(true) + }) + + it.each([ + UniverseChainId.Mainnet, + UniverseChainId.Avalanche, + UniverseChainId.ArbitrumOne, + UniverseChainId.Base, + UniverseChainId.Blast, + UniverseChainId.Bnb, + UniverseChainId.Optimism, + UniverseChainId.Polygon, + UniverseChainId.Unichain, + UniverseChainId.Zora, + ])('returns false for other chains', (chainId) => { + expect(isV4UnsupportedChain(chainId)).toBe(false) + }) +}) diff --git a/apps/web/src/utils/networkSupportsV4.ts b/apps/web/src/utils/networkSupportsV4.ts new file mode 100644 index 00000000000..c576c75950a --- /dev/null +++ b/apps/web/src/utils/networkSupportsV4.ts @@ -0,0 +1,10 @@ +import { UniverseChainId } from 'uniswap/src/features/chains/types' + +const V4_UNSUPPORTED_CHAIN_IDS = [UniverseChainId.Zksync, UniverseChainId.Celo] + +export function isV4UnsupportedChain(chainId?: number) { + if (!chainId) { + return false + } + return V4_UNSUPPORTED_CHAIN_IDS.includes(chainId) +} diff --git a/apps/web/src/utils/signing.test.ts b/apps/web/src/utils/signing.test.ts index c0a16e5ed3d..ccc499c4d98 100644 --- a/apps/web/src/utils/signing.test.ts +++ b/apps/web/src/utils/signing.test.ts @@ -1,8 +1,7 @@ import { ExternalProvider, JsonRpcProvider, JsonRpcSigner, Web3Provider } from '@ethersproject/providers' +import { Mutable } from 'types/mutable' import { signTypedData } from 'utils/signing' -type Mutable = { -readonly [P in keyof T]: T[P] } - describe('signing', () => { describe('signTypedData', () => { const wallet = '0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826' diff --git a/apps/web/src/utils/transfer.test.ts b/apps/web/src/utils/transfer.test.ts index d35024aefca..4de1febf1a5 100644 --- a/apps/web/src/utils/transfer.test.ts +++ b/apps/web/src/utils/transfer.test.ts @@ -1,12 +1,10 @@ import { ExternalProvider, JsonRpcProvider, JsonRpcSigner, Web3Provider } from '@ethersproject/providers' import { CurrencyAmount } from '@uniswap/sdk-core' import { act, renderHook } from 'test-utils/render' +import { Mutable } from 'types/mutable' import { DAI, nativeOnChain } from 'uniswap/src/constants/tokens' import { UniverseChainId } from 'uniswap/src/features/chains/types' import { useCreateTransferTransaction } from 'utils/transfer' - -type Mutable = { -readonly [P in keyof T]: T[P] } - describe('useCreateTransfer', () => { const wallet = '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826' diff --git a/package.json b/package.json index 2901eea4545..24da561a5af 100644 --- a/package.json +++ b/package.json @@ -56,9 +56,9 @@ "@tamagui/animations-moti@1.92.0": "patch:@tamagui/animations-moti@npm%3A1.92.0#./.yarn/patches/@tamagui-animations-moti-npm-1.92.0-a8dde990ec.patch", "@tanstack/react-query@5.51.16": "patch:@tanstack/react-query@npm%3A5.51.16#./.yarn/patches/@tanstack-react-query-npm-5.51.16-8fa6414eca.patch", "@typescript-eslint/eslint-plugin": "6.20.0", - "@uniswap/router-sdk": "1.18.0", - "@uniswap/sdk-core": "7.1.0", - "@uniswap/v2-sdk": "4.9.0", + "@uniswap/router-sdk": "1.21.0", + "@uniswap/sdk-core": "7.5.0", + "@uniswap/v2-sdk": "4.13.0", "@vercel/og@0.5.8": "patch:@vercel/og@npm%3A0.5.8#./.yarn/patches/@vercel-og-npm-0.5.8-83a79f2744.patch", "@walletconnect/ethereum-provider": "2.17.1", "@xmldom/xmldom": "0.7.7", diff --git a/packages/ui/jest-package-mocks.js b/packages/ui/jest-package-mocks.js index 9c9cccbe48e..a48406dfeb2 100644 --- a/packages/ui/jest-package-mocks.js +++ b/packages/ui/jest-package-mocks.js @@ -7,6 +7,12 @@ * * mocks can be overridden */ +jest.mock('react-native-safe-area-context', () => ({ + useSafeAreaInsets: jest.fn().mockImplementation(() => ({})), + useSafeAreaFrame: jest.fn().mockImplementation(() => ({})), + SafeAreaProvider: jest.fn(({ children }) => children), +})) + jest.mock('ui/src/assets', () => { const assets = { ...jest.requireActual('ui/src/assets'), diff --git a/packages/ui/src/animations/components/HeightAnimator.tsx b/packages/ui/src/animations/components/HeightAnimator.tsx index 28d8eb288d1..097ea9d312e 100644 --- a/packages/ui/src/animations/components/HeightAnimator.tsx +++ b/packages/ui/src/animations/components/HeightAnimator.tsx @@ -1,9 +1,9 @@ import { useState } from 'react' import { View, useEvent } from 'tamagui' -export const HeightAnimator = View.styleable<{ open?: boolean }>((props, ref) => { - const { open = true, children, ...rest } = props - const [visibleHeight, setVisibleHeight] = useState(0) +export const HeightAnimator = View.styleable<{ open?: boolean; useInitialHeight?: boolean }>((props, ref) => { + const { open = true, children, useInitialHeight, ...rest } = props + const [visibleHeight, setVisibleHeight] = useState(useInitialHeight ? children.height : 0) const onLayout = useEvent(({ nativeEvent }) => { if (nativeEvent.layout.height) { diff --git a/packages/ui/src/assets/backgrounds/android/notifications-dark.png b/packages/ui/src/assets/backgrounds/android/notifications-dark.png index 17213a99638..a2465b91b5b 100644 Binary files a/packages/ui/src/assets/backgrounds/android/notifications-dark.png and b/packages/ui/src/assets/backgrounds/android/notifications-dark.png differ diff --git a/packages/ui/src/assets/backgrounds/android/notifications-light.png b/packages/ui/src/assets/backgrounds/android/notifications-light.png index 85f4f1acb75..5b922df22d0 100644 Binary files a/packages/ui/src/assets/backgrounds/android/notifications-light.png and b/packages/ui/src/assets/backgrounds/android/notifications-light.png differ diff --git a/packages/ui/src/assets/backgrounds/ios/notifications-dark.png b/packages/ui/src/assets/backgrounds/ios/notifications-dark.png index 4e11f215c94..c656004bf83 100644 Binary files a/packages/ui/src/assets/backgrounds/ios/notifications-dark.png and b/packages/ui/src/assets/backgrounds/ios/notifications-dark.png differ diff --git a/packages/ui/src/assets/backgrounds/ios/notifications-light.png b/packages/ui/src/assets/backgrounds/ios/notifications-light.png index fd3b8176134..f5c4d5525c3 100644 Binary files a/packages/ui/src/assets/backgrounds/ios/notifications-light.png and b/packages/ui/src/assets/backgrounds/ios/notifications-light.png differ diff --git a/packages/ui/src/assets/icons/loading-price-curve.svg b/packages/ui/src/assets/icons/loading-price-curve.svg index 6e99baec357..c82a5c8d74b 100644 --- a/packages/ui/src/assets/icons/loading-price-curve.svg +++ b/packages/ui/src/assets/icons/loading-price-curve.svg @@ -1,17 +1,17 @@ - - + + - + - + diff --git a/packages/ui/src/components/factories/createIcon.tsx b/packages/ui/src/components/factories/createIcon.tsx index 0a7e4a380ff..d385ac640db 100644 --- a/packages/ui/src/components/factories/createIcon.tsx +++ b/packages/ui/src/components/factories/createIcon.tsx @@ -1,7 +1,7 @@ import type { IconProps as TamaguiIconProps } from '@tamagui/helpers-icon' -import { createElement, forwardRef } from 'react' +import { createElement, forwardRef, useState } from 'react' import { Svg, SvgProps } from 'react-native-svg' -import { ColorTokens, SpecificTokens, Stack, ThemeKeys, isWeb, styled, usePropsAndStyle } from 'tamagui' +import { ColorTokens, SpecificTokens, Stack, ThemeKeys, View, isWeb, styled, usePropsAndStyle } from 'tamagui' import { withAnimated } from 'ui/src/components/factories/animated' import { DynamicColor } from 'ui/src/hooks/useSporeColors' import { IconSizeTokens } from 'ui/src/theme' @@ -9,7 +9,7 @@ import { IconSizeTokens } from 'ui/src/theme' type SvgPropsWithRef = SvgProps & { ref: React.ForwardedRef; style?: { color?: string } } export type IconProps = Omit, 'color'> & { - size?: IconSizeTokens | number + size?: IconSizeTokens | number | { width: number; height: number } // we need the string & {} to allow strings but not lose the intellisense autocomplete // eslint-disable-next-line @typescript-eslint/ban-types color?: (ColorTokens | ThemeKeys | (string & {})) | DynamicColor | null @@ -30,7 +30,8 @@ const IconFrame = styled(Stack, { }, }) -export type GeneratedIcon = React.ForwardRefExoticComponent> +export type GeneratedIconProps = IconProps & { hoverColor?: IconProps['color'] } +export type GeneratedIcon = React.ForwardRefExoticComponent> export function createIcon({ name, @@ -41,13 +42,17 @@ export function createIcon({ getIcon: (props: SvgPropsWithRef) => JSX.Element defaultFill?: string }): readonly [GeneratedIcon, GeneratedIcon] { - const Icon = forwardRef((propsIn, ref) => { + const Icon = forwardRef(({ color, hoverColor: hoverColorProp, ...propsIn }, ref) => { + const [hover, setHover] = useState(false) + const renderColor = color ?? defaultFill ?? (isWeb ? 'currentColor' : undefined) + const hoverColor = hoverColorProp ?? renderColor + const [props, style] = usePropsAndStyle( { - color: defaultFill ?? (isWeb ? 'currentColor' : undefined), size: '$icon.8', strokeWidth: 8, ...propsIn, + color: hover ? hoverColor : renderColor, }, { resolveValues: 'value', @@ -62,11 +67,19 @@ export function createIcon({ style, } - if (props.Component) { - return createElement(props.Component, svgProps) + const comp = props.Component ? createElement(props.Component, svgProps) : getIcon(svgProps) + + // Only enabled on web because mobile doesn't support hover events + // It is also optional because it breaks some layouts + if (isWeb && hoverColorProp) { + return ( + setHover(true)} onHoverOut={() => setHover(false)}> + {comp} + + ) } - return getIcon(svgProps) + return comp }) Icon.displayName = name diff --git a/packages/ui/src/components/icons/LoadingPriceCurve.tsx b/packages/ui/src/components/icons/LoadingPriceCurve.tsx index 52325ee0d8d..90fc5d63c29 100644 --- a/packages/ui/src/components/icons/LoadingPriceCurve.tsx +++ b/packages/ui/src/components/icons/LoadingPriceCurve.tsx @@ -8,9 +8,9 @@ export const [LoadingPriceCurve, AnimatedLoadingPriceCurve] = createIcon({ getIcon: (props) => ( - + @@ -18,7 +18,7 @@ export const [LoadingPriceCurve, AnimatedLoadingPriceCurve] = createIcon({ - <_Circle cx="-0.156054" cy="28.1994" r="17.676" fill="currentColor" fillOpacity="0.24" /> + <_Circle cx="-0.156054" cy="19.1994" r="17.676" fill="currentColor" fillOpacity="0.24" /> @@ -26,7 +26,7 @@ export const [LoadingPriceCurve, AnimatedLoadingPriceCurve] = createIcon({ = { flex: 1, height: rest.$sm?.['$platform-web']?.height, - maxHeight: rest.$sm?.['$platform-web']?.maxHeight ?? '100dvh', + maxHeight: isInterface + ? `calc(100vh - ${INTERFACE_NAV_HEIGHT}px)` + : rest.$sm?.['$platform-web']?.maxHeight ?? '100dvh', } return ( @@ -54,8 +58,8 @@ export function WebBottomSheet({ isOpen, onClose, children, gap, ...rest }: Moda borderWidth="$spacing1" px="$spacing8" zIndex={zIndices.modal} - {...sheetHeightStyles} {...sheetOverrideStyles} + {...sheetHeightStyles} > setHandlePressed(true)} onMouseUp={() => setHandlePressed(false)} > - + {children} @@ -120,6 +124,16 @@ export function AdaptiveWebModal({ ...rest }: ModalProps): JSX.Element { const filteredRest = Object.fromEntries(Object.entries(rest).filter(([_, v]) => v !== undefined)) // Filter out undefined properties from rest + const scrollbarStyles = useScrollbarStyles() + const isTopAligned = alignment === 'top' + + const topAlignedStyles: FlexProps = isTopAligned + ? { + position: 'absolute', + justifyContent: 'flex-start', + top: '$spacing16', + } + : {} const handleClose = useCallback( (open: boolean) => { @@ -130,8 +144,6 @@ export function AdaptiveWebModal({ [onClose], ) - const isTopAligned = alignment === 'top' - return ( @@ -157,30 +169,38 @@ export function AdaptiveWebModal({ - - {children} - + + {children} + + ) diff --git a/packages/ui/src/components/text/ElementAfterText.tsx b/packages/ui/src/components/text/ElementAfterText.tsx index 9dd5e63f46b..db1ad3e8929 100644 --- a/packages/ui/src/components/text/ElementAfterText.tsx +++ b/packages/ui/src/components/text/ElementAfterText.tsx @@ -1,7 +1,7 @@ -import { isWeb } from 'tamagui' import { Flex, FlexProps } from 'ui/src/components/layout/Flex' import { Text, TextProps } from 'ui/src/components/text/Text' import { usePostTextElementPositionProps } from 'ui/src/utils/layout' +import { isInterface, isMobileWeb } from 'utilities/src/platform' type ElementAfterTextProps = { element?: JSX.Element @@ -18,7 +18,7 @@ const DEFAULT_TEXT_PROPS: TextProps = { export function ElementAfterText({ element, text, wrapperProps, textProps }: ElementAfterTextProps): JSX.Element { const { postTextElementPositionProps, onTextLayout } = usePostTextElementPositionProps() - if (isWeb) { + if (isInterface && !isMobileWeb) { return ( diff --git a/packages/ui/src/components/text/UnichainAnimatedText.tsx b/packages/ui/src/components/text/UnichainAnimatedText.tsx new file mode 100644 index 00000000000..d74e5a36077 --- /dev/null +++ b/packages/ui/src/components/text/UnichainAnimatedText.tsx @@ -0,0 +1,62 @@ +import { GetProps } from 'tamagui' +import { Text } from 'ui/src/components/text' +import { isInterface } from 'utilities/src/platform' + +export const unichainGradientAnimatedStyle = ({ + textColor, + delayMs, +}: { + textColor: string + delayMs?: number +}): string => ` + .unichain-gradient { + background: linear-gradient(to right, ${textColor}, ${textColor}, #FA0ABF, #FC63DF, ${textColor}, ${textColor}); + background-clip: text; + background-position: 100% center; + background-size: 500% 100%; + animation: swipe 575ms forwards; + animation-delay: ${delayMs ?? 375}ms; + } + + @keyframes swipe { + 0% { + background-position: 100% center; + } + 100% { + background-position: 0% center + } + } +` + +interface UnichainAnimatedTextProps extends GetProps { + gradientTextColor: string + delayMs?: number + enabled?: boolean +} + +/** + * @param gradientTextColor Must be a string hex color value (e.g. '#FF0000'). Cannot be a Spore variable name. + */ +export function UnichainAnimatedText({ + children, + gradientTextColor, + delayMs, + enabled = true, + ...props +}: UnichainAnimatedTextProps): JSX.Element { + const showAnimation = enabled && isInterface + return ( + <> + {/* TODO(WALL-5596): Find why this causes a 'string rendered outside of ' error on mobile */} + {/* */} + {showAnimation ? : null} + + {children} + + + ) +} diff --git a/packages/ui/src/components/text/index.ts b/packages/ui/src/components/text/index.ts index 32f4d644cf5..9adaf54697e 100644 --- a/packages/ui/src/components/text/index.ts +++ b/packages/ui/src/components/text/index.ts @@ -1,4 +1,5 @@ export * from './ElementAfterText' export * from './HiddenFromScreenReaders' export * from './Text' +export * from './UnichainAnimatedText' export * from './UniswapXText' diff --git a/packages/ui/src/theme/animations.ts b/packages/ui/src/theme/animations.ts index 4bb6e18ea2e..c7584670990 100644 --- a/packages/ui/src/theme/animations.ts +++ b/packages/ui/src/theme/animations.ts @@ -6,6 +6,23 @@ export const animations = createAnimations({ type: 'timing', duration: 100, }, + '125ms': { + type: 'timing', + duration: 125, + easing: Easing.inOut(Easing.quad), + }, + '125msDelayed': { + type: 'timing', + duration: 125, + easing: Easing.inOut(Easing.quad), + delay: 250, + }, + '125msDelayedLong': { + type: 'timing', + duration: 125, + easing: Easing.inOut(Easing.quad), + delay: 2000, + }, '200ms': { type: 'timing', duration: 200, diff --git a/packages/uniswap/src/theme/heights.ts b/packages/ui/src/theme/heights.ts similarity index 100% rename from packages/uniswap/src/theme/heights.ts rename to packages/ui/src/theme/heights.ts diff --git a/packages/ui/src/theme/index.ts b/packages/ui/src/theme/index.ts index a0f83a115e5..1b8872b230f 100644 --- a/packages/ui/src/theme/index.ts +++ b/packages/ui/src/theme/index.ts @@ -2,6 +2,7 @@ export * from './borderRadii' export * from './breakpoints' export * from './color' export * from './fonts' +export * from './heights' export * from './iconSizes' export * from './imageSizes' export * from './sizing' diff --git a/packages/uniswap/jest-package-mocks.js b/packages/uniswap/jest-package-mocks.js index 6ba1948d84a..262a4d8668e 100644 --- a/packages/uniswap/jest-package-mocks.js +++ b/packages/uniswap/jest-package-mocks.js @@ -7,6 +7,7 @@ * * mocks can be overridden */ +import '@shopify/react-native-skia/jestSetup' import mockRNLocalize from 'react-native-localize/mock' import { mockLocalizationContext } from 'uniswap/src/test/mocks/locale' import { mockSharedPersistQueryClientProvider } from 'uniswap/src/test/mocks/mockSharedPersistQueryClientProvider' diff --git a/packages/uniswap/jest-setup.js b/packages/uniswap/jest-setup.js index 7793142c0b1..2239068e7e6 100644 --- a/packages/uniswap/jest-setup.js +++ b/packages/uniswap/jest-setup.js @@ -1,5 +1,6 @@ import 'utilities/jest-package-mocks' import 'uniswap/jest-package-mocks' +import 'ui/jest-package-mocks' import 'uniswap/src/i18n' // Uses real translations for tests diff --git a/packages/uniswap/jest.config.js b/packages/uniswap/jest.config.js index 0cd24c725a5..dbf919d0803 100644 --- a/packages/uniswap/jest.config.js +++ b/packages/uniswap/jest.config.js @@ -21,8 +21,7 @@ module.exports = { }, haste: { defaultPlatform: 'ios', - // avoid native because wallet tests assume no .native.ts - platforms: ['web', 'ios', 'android'], + platforms: ['ios', 'native'], }, setupFiles: [ './jest-setup.js', @@ -31,5 +30,6 @@ module.exports = { moduleNameMapper: { ...preset.moduleNameMapper, '@tamagui/core': '@tamagui/core/native-test', + '@tamagui/web': '@tamagui/core/native-test', }, } diff --git a/packages/uniswap/package.json b/packages/uniswap/package.json index c3d3dfb7191..9946f372361 100644 --- a/packages/uniswap/package.json +++ b/packages/uniswap/package.json @@ -42,17 +42,17 @@ "@tanstack/react-query": "5.51.16", "@tanstack/react-query-persist-client": "5.51.23", "@typechain/ethers-v5": "7.2.0", - "@uniswap/analytics-events": "2.40.0", + "@uniswap/analytics-events": "2.41.0", "@uniswap/client-embeddedwallet": "0.0.13", "@uniswap/client-explore": "0.0.14", "@uniswap/client-pools": "0.0.12", "@uniswap/permit2-sdk": "1.3.0", - "@uniswap/router-sdk": "1.18.0", - "@uniswap/sdk-core": "7.1.0", + "@uniswap/router-sdk": "1.21.0", + "@uniswap/sdk-core": "7.5.0", "@uniswap/uniswapx-sdk": "3.0.0-beta.1", - "@uniswap/v2-sdk": "4.9.0", - "@uniswap/v3-sdk": "3.21.0", - "@uniswap/v4-sdk": "1.15.0", + "@uniswap/v2-sdk": "4.13.0", + "@uniswap/v3-sdk": "3.24.0", + "@uniswap/v4-sdk": "1.18.0", "apollo-link-rest": "0.9.0", "axios": "1.6.5", "date-fns": "2.30.0", @@ -114,6 +114,7 @@ "@graphql-tools/merge": "9.0.1", "@graphql-tools/mock": "9.0.0", "@react-native-community/netinfo": "9.3.0", + "@shopify/react-native-skia": "1.4.2", "@testing-library/jest-native": "5.4.2", "@testing-library/react-hooks": "7.0.2", "@testing-library/react-native": "11.5.0", diff --git a/packages/uniswap/src/components/BaseCard/__snapshots__/BaseCard.test.tsx.snap b/packages/uniswap/src/components/BaseCard/__snapshots__/BaseCard.test.tsx.snap index 245a3da6fb4..1bafcbdbbe0 100644 --- a/packages/uniswap/src/components/BaseCard/__snapshots__/BaseCard.test.tsx.snap +++ b/packages/uniswap/src/components/BaseCard/__snapshots__/BaseCard.test.tsx.snap @@ -33,13 +33,13 @@ exports[`EmptyState renders without error 1`] = ` } > { + if (showUnichainPromoAnimation) { + // delay to prevent ux jank + const delay = setTimeout(() => { + dispatch(setIsFirstUnichainBridgeSelection(false)) + }, 2000) + return () => clearTimeout(delay) + } + return undefined + }, [dispatch, showUnichainPromoAnimation]) const validTokenColor = validColor(tokenColor) const hoverStyle: { backgroundColor: ComponentProps['backgroundColor'] } = useMemo( @@ -76,11 +109,18 @@ export const SelectTokenButton = memo(function _SelectTokenButton({ )} - + {selectedCurrencyInfo ? getSymbolDisplayText(selectedCurrencyInfo.currency.symbol) : t('tokens.selector.button.choose')} - + {!isCompact && ( )} diff --git a/packages/uniswap/src/components/CurrencyLogo/AnimatedNetworkLogo.tsx b/packages/uniswap/src/components/CurrencyLogo/AnimatedNetworkLogo.tsx new file mode 100644 index 00000000000..663f1b57492 --- /dev/null +++ b/packages/uniswap/src/components/CurrencyLogo/AnimatedNetworkLogo.tsx @@ -0,0 +1,57 @@ +import { useMemo } from 'react' +import { AnimateInOrder } from 'ui/src/animations/components/AnimateInOrder' +import { Flex } from 'ui/src/components/layout/Flex' +import { NetworkLogo } from 'uniswap/src/components/CurrencyLogo/NetworkLogo' +import { NewTag } from 'uniswap/src/components/pill/NewTag' +import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains' +import { UniverseChainId } from 'uniswap/src/features/chains/types' + +const ANIMATION_DELAY = 1500 + +export function AnimatedNetworkLogo({ + promoChainId, + size, + selectedChain, + includeAllNetworks, +}: { + promoChainId: UniverseChainId + size: number + selectedChain: UniverseChainId | null + includeAllNetworks: boolean | undefined +}): JSX.Element { + const { defaultChainId } = useEnabledChains() + + const selectedChainLogo = useMemo(() => { + return + }, [defaultChainId, includeAllNetworks, selectedChain, size]) + + return ( + + + {selectedChainLogo} + + + + + + + + + + + + + + {selectedChainLogo} + + + + ) +} diff --git a/packages/uniswap/src/components/CurrencyLogo/__snapshots__/CurrencyLogo.test.tsx.snap b/packages/uniswap/src/components/CurrencyLogo/__snapshots__/CurrencyLogo.test.tsx.snap index 69ed3a95198..fce56cb177b 100644 --- a/packages/uniswap/src/components/CurrencyLogo/__snapshots__/CurrencyLogo.test.tsx.snap +++ b/packages/uniswap/src/components/CurrencyLogo/__snapshots__/CurrencyLogo.test.tsx.snap @@ -73,34 +73,28 @@ exports[`CurrencyLogo renders a currency logo with network logo 1`] = ` style={ { "borderColor": "#131313", - "borderRadius": 6.3, + "borderRadius": 6.6, "borderStyle": "solid", - "borderWidth": 1.5, + "borderWidth": 2, "flexDirection": "column", - "height": 21, + "height": 22, "overflow": "hidden", - "width": 21, + "width": 22, "zIndex": 10, } } testID="network-logo" > -
-
-
+ /> diff --git a/packages/uniswap/src/components/CurrencyLogo/__snapshots__/NetworkLogo.test.tsx.snap b/packages/uniswap/src/components/CurrencyLogo/__snapshots__/NetworkLogo.test.tsx.snap index 0b86e893dcd..916284706ae 100644 --- a/packages/uniswap/src/components/CurrencyLogo/__snapshots__/NetworkLogo.test.tsx.snap +++ b/packages/uniswap/src/components/CurrencyLogo/__snapshots__/NetworkLogo.test.tsx.snap @@ -17,22 +17,16 @@ exports[`NetworkLogo renders without error 1`] = ` } testID="network-logo" > -
-
-
+ /> `; @@ -53,21 +47,15 @@ exports[`TransactionSummaryNetworkLogo renders without error 1`] = ` } testID="network-logo" > -
-
-
+ /> `; diff --git a/packages/uniswap/src/components/CurrencyLogo/__snapshots__/SplitLogo.test.tsx.snap b/packages/uniswap/src/components/CurrencyLogo/__snapshots__/SplitLogo.test.tsx.snap index ade468b193c..35949289032 100644 --- a/packages/uniswap/src/components/CurrencyLogo/__snapshots__/SplitLogo.test.tsx.snap +++ b/packages/uniswap/src/components/CurrencyLogo/__snapshots__/SplitLogo.test.tsx.snap @@ -181,22 +181,16 @@ exports[`SplitLogo renders without error 1`] = ` } testID="network-logo" > -
-
-
+ /> diff --git a/packages/uniswap/src/components/CurrencyLogo/__snapshots__/TokenLogo.test.tsx.snap b/packages/uniswap/src/components/CurrencyLogo/__snapshots__/TokenLogo.test.tsx.snap index 049b5b84c73..825f43aff06 100644 --- a/packages/uniswap/src/components/CurrencyLogo/__snapshots__/TokenLogo.test.tsx.snap +++ b/packages/uniswap/src/components/CurrencyLogo/__snapshots__/TokenLogo.test.tsx.snap @@ -73,34 +73,28 @@ exports[`TokenLogo renders without error 1`] = ` style={ { "borderColor": "#131313", - "borderRadius": 6.3, + "borderRadius": 6.6, "borderStyle": "solid", - "borderWidth": 1.5, + "borderWidth": 2, "flexDirection": "column", - "height": 21, + "height": 22, "overflow": "hidden", - "width": 21, + "width": 22, "zIndex": 10, } } testID="network-logo" > -
-
-
+ /> diff --git a/packages/uniswap/src/components/TokenSelector/TokenSelector.tsx b/packages/uniswap/src/components/TokenSelector/TokenSelector.tsx index c2fa7143ac8..2f307a77e68 100644 --- a/packages/uniswap/src/components/TokenSelector/TokenSelector.tsx +++ b/packages/uniswap/src/components/TokenSelector/TokenSelector.tsx @@ -3,6 +3,7 @@ import { Currency } from '@uniswap/sdk-core' import { hasStringAsync } from 'expo-clipboard' import { memo, useCallback, useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' +import { useSelector } from 'react-redux' import { Flex, Text, TouchableArea, isWeb, useMedia, useScrollbarStyles, useSporeColors } from 'ui/src' import { InfoCircleFilled } from 'ui/src/components/icons/InfoCircleFilled' import { X } from 'ui/src/components/icons/X' @@ -21,6 +22,7 @@ import { Modal } from 'uniswap/src/components/modals/Modal' import { NetworkFilter } from 'uniswap/src/components/network/NetworkFilter' import { useUniswapContext } from 'uniswap/src/contexts/UniswapContext' import { TradeableAsset } from 'uniswap/src/entities/assets' +import { selectHasSeenUnichainPromotionNetworkSelectorTooltip } from 'uniswap/src/features/behaviorHistory/selectors' import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains' import { UniverseChainId } from 'uniswap/src/features/chains/types' import { CurrencyInfo } from 'uniswap/src/features/dataApi/types' @@ -87,6 +89,9 @@ export function TokenSelectorContent({ const scrollbarStyles = useScrollbarStyles() const isKeyboardOpen = useIsKeyboardOpen() const { navigateToBuyOrReceiveWithEmptyWallet } = useUniswapContext() + const hasSeenUnichainPromotionNetworkSelectorTooltip = useSelector( + selectHasSeenUnichainPromotionNetworkSelectorTooltip, + ) const media = useMedia() const isSmallScreen = (media.sm && isInterface) || isMobileApp || isMobileWeb @@ -238,9 +243,9 @@ export function TokenSelectorContent({ onSelectCurrency={onSelectCurrencyCallback} /> ) + default: + return undefined } - - return undefined }, [ searchInFocus, searchFilter, @@ -279,7 +284,9 @@ export function TokenSelectorContent({ backgroundColor="$surface2" endAdornment={ - {hasClipboardString && } + {hasClipboardString && hasSeenUnichainPromotionNetworkSelectorTooltip && ( + + )} ), - [], + [chainFilter], + ) + + const renderSectionFooter = useCallback( + ({ section }: { section: TokenSectionFooterProps }): JSX.Element => ( + + ), + [chainFilter], ) if (hasError) { @@ -223,6 +237,7 @@ function _TokenSelectorList({ keyExtractor={key} renderItem={renderItem} renderSectionHeader={renderSectionHeader} + renderSectionFooter={renderSectionFooter} sectionListRef={sectionListRef} sections={sections ?? []} expandedItems={expandedItems} diff --git a/packages/uniswap/src/components/TokenSelector/items/TokenOptionItem.tsx b/packages/uniswap/src/components/TokenSelector/items/TokenOptionItem.tsx index c22b1b2e2f1..c1f1ab61e72 100644 --- a/packages/uniswap/src/components/TokenSelector/items/TokenOptionItem.tsx +++ b/packages/uniswap/src/components/TokenSelector/items/TokenOptionItem.tsx @@ -1,5 +1,6 @@ import React, { useCallback, useState } from 'react' -import { Flex, Text, TouchableArea, useSporeColors } from 'ui/src' +import { useDispatch, useSelector } from 'react-redux' +import { Flex, Text, TouchableArea, UnichainAnimatedText, useSporeColors } from 'ui/src' import Check from 'ui/src/assets/icons/check.svg' import { iconSizes } from 'ui/src/theme' import { TokenLogo } from 'uniswap/src/components/CurrencyLogo/TokenLogo' @@ -8,6 +9,11 @@ import { WarningSeverity } from 'uniswap/src/components/modals/WarningModal/type import WarningIcon from 'uniswap/src/components/warnings/WarningIcon' import { getWarningIconColors } from 'uniswap/src/components/warnings/utils' import { SafetyLevel } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' +import { selectHasSeenUnichainPromotionBridgingTooltip } from 'uniswap/src/features/behaviorHistory/selectors' +import { setHasSeenBridgingTooltip } from 'uniswap/src/features/behaviorHistory/slice' +import { UniverseChainId } from 'uniswap/src/features/chains/types' +import { FeatureFlags } from 'uniswap/src/features/gating/flags' +import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' import TokenWarningModal from 'uniswap/src/features/tokens/TokenWarningModal' import { getTokenWarningSeverity } from 'uniswap/src/features/tokens/safetyUtils' import { getSymbolDisplayText } from 'uniswap/src/utils/currency' @@ -54,12 +60,19 @@ function _TokenOptionItem({ const { colorSecondary: warningIconColor } = getWarningIconColors(severity) const shouldShowWarningModalOnPress = isBlocked || (severity !== WarningSeverity.None && !tokenWarningDismissed) + const hasSeenUnichainPromotionBridgingTooltip = useSelector(selectHasSeenUnichainPromotionBridgingTooltip) + const isUnichainPromoEnabled = useFeatureFlag(FeatureFlags.UnichainPromo) + const dispatch = useDispatch() + const isUnichainEth = currency.isNative && currency.chainId === UniverseChainId.Unichain + const showUnichainPromoAnimation = isUnichainPromoEnabled && !hasSeenUnichainPromotionBridgingTooltip && isUnichainEth + const handleShowWarningModal = useCallback((): void => { dismissNativeKeyboard() setShowWarningModal(true) }, [setShowWarningModal]) const onPressTokenOption = useCallback(() => { + dispatch(setHasSeenBridgingTooltip(true)) if (showWarnings && shouldShowWarningModalOnPress) { // On mobile web we need to wait for the keyboard to hide // before showing the modal to avoid height issues @@ -74,7 +87,7 @@ function _TokenOptionItem({ } onPress() - }, [showWarnings, shouldShowWarningModalOnPress, onPress, isKeyboardOpen, handleShowWarningModal]) + }, [dispatch, showWarnings, shouldShowWarningModalOnPress, onPress, isKeyboardOpen, handleShowWarningModal]) const onAcceptTokenWarning = useCallback(() => { setShowWarningModal(false) @@ -111,9 +124,16 @@ function _TokenOptionItem({ /> - + {currency.name} - + {warningIconColor && ( diff --git a/packages/uniswap/src/components/TokenSelector/items/TokenSectionFooter.tsx b/packages/uniswap/src/components/TokenSelector/items/TokenSectionFooter.tsx new file mode 100644 index 00000000000..08d394c3c81 --- /dev/null +++ b/packages/uniswap/src/components/TokenSelector/items/TokenSectionFooter.tsx @@ -0,0 +1,89 @@ +import { memo } from 'react' +import { useTranslation } from 'react-i18next' +import { useDispatch, useSelector } from 'react-redux' +import { AnimateInOrder, ElementAfterText, Flex, TouchableArea } from 'ui/src' +import { X } from 'ui/src/components/icons/X' +import { TokenOptionSection } from 'uniswap/src/components/TokenSelector/types' +import { selectHasSeenUnichainPromotionBridgingTooltip } from 'uniswap/src/features/behaviorHistory/selectors' +import { setHasSeenBridgingTooltip } from 'uniswap/src/features/behaviorHistory/slice' +import { UniverseChainId } from 'uniswap/src/features/chains/types' +import { FeatureFlags } from 'uniswap/src/features/gating/flags' +import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' +import { isInterface, isMobileWeb } from 'utilities/src/platform' + +export type TokenSectionFooterProps = { + sectionKey: TokenOptionSection + rightElement?: JSX.Element + name?: string + chainId?: UniverseChainId | null +} + +export const SectionFooter = memo(function _SectionFooter({ + sectionKey, + rightElement, + name, + chainId, +}: TokenSectionFooterProps): JSX.Element | null { + const isUnichainPromoEnabled = useFeatureFlag(FeatureFlags.UnichainPromo) + const dispatch = useDispatch() + const hasSeenUnichainPromotionBridgingTooltip = useSelector(selectHasSeenUnichainPromotionBridgingTooltip) + const promoEnabledAndOnUnichainBridge = + isUnichainPromoEnabled && chainId === UniverseChainId.Unichain && sectionKey === TokenOptionSection.BridgingTokens + const showUnichainPromo = + promoEnabledAndOnUnichainBridge && (!isInterface || isMobileWeb) && !hasSeenUnichainPromotionBridgingTooltip + + const title = useTokenOptionsSectionTitle(sectionKey) + + // Hide footer if we shouldn't display it + if (!showUnichainPromo) { + return null + } + + return ( + + + + + { + dispatch(setHasSeenBridgingTooltip(true)) + }} + > + + + + + + + ) +}) + +function useTokenOptionsSectionTitle(section: TokenOptionSection): string { + const { t } = useTranslation() + switch (section) { + case TokenOptionSection.BridgingTokens: + return t('unichain.promotion.bridging.tooltip.description') + default: + return section + } +} diff --git a/packages/uniswap/src/components/TokenSelector/items/TokenSectionHeader.tsx b/packages/uniswap/src/components/TokenSelector/items/TokenSectionHeader.tsx index a1030f59b82..b7d149a4c51 100644 --- a/packages/uniswap/src/components/TokenSelector/items/TokenSectionHeader.tsx +++ b/packages/uniswap/src/components/TokenSelector/items/TokenSectionHeader.tsx @@ -1,21 +1,28 @@ import { memo } from 'react' import { useTranslation } from 'react-i18next' -import { ElementAfterText, Flex, Text } from 'ui/src' +import { useSelector } from 'react-redux' +import { AnimateInOrder, ElementAfterText, Flex, Text, Tooltip } from 'ui/src' import { Clock } from 'ui/src/components/icons/Clock' import { Coins } from 'ui/src/components/icons/Coins' import { Pin } from 'ui/src/components/icons/Pin' import { Search } from 'ui/src/components/icons/Search' import { Shuffle } from 'ui/src/components/icons/Shuffle' import { Star } from 'ui/src/components/icons/Star' +import { UnichainBridgingTooltip } from 'uniswap/src/components/TokenSelector/tooltips/UnichainBridgingTooltip' import { TokenOptionSection } from 'uniswap/src/components/TokenSelector/types' +import { NewTag } from 'uniswap/src/components/pill/NewTag' +import { selectHasSeenUnichainPromotionBridgingTooltip } from 'uniswap/src/features/behaviorHistory/selectors' +import { UniverseChainId } from 'uniswap/src/features/chains/types' import { FeatureFlags } from 'uniswap/src/features/gating/flags' import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' +import { isInterface, isMobileWeb } from 'utilities/src/platform' export type TokenSectionHeaderProps = { sectionKey: TokenOptionSection rightElement?: JSX.Element endElement?: JSX.Element name?: string + chainId?: UniverseChainId | null } export const SectionHeader = memo(function _SectionHeader({ @@ -23,31 +30,66 @@ export const SectionHeader = memo(function _SectionHeader({ rightElement, endElement, name, + chainId, }: TokenSectionHeaderProps): JSX.Element | null { - const title = useTokenOptionsSectionTitle(sectionKey) + const { t } = useTranslation() + const isUnichainPromoEnabled = useFeatureFlag(FeatureFlags.UnichainPromo) + const hasSeenUnichainPromotionBridgingTooltip = useSelector(selectHasSeenUnichainPromotionBridgingTooltip) + const promoEnabledAndOnUnichainBridge = + isUnichainPromoEnabled && chainId === UniverseChainId.Unichain && sectionKey === TokenOptionSection.BridgingTokens + const showUnichainWebPromo = + promoEnabledAndOnUnichainBridge && isInterface && !isMobileWeb && !hasSeenUnichainPromotionBridgingTooltip + + const showUnichainWalletPromo = + promoEnabledAndOnUnichainBridge && !hasSeenUnichainPromotionBridgingTooltip && (!isInterface || isMobileWeb) + + let title = useTokenOptionsSectionTitle(sectionKey) + if (promoEnabledAndOnUnichainBridge) { + title = t('unichain.promotion.bridging.description') + } const icon = getTokenOptionsSectionIcon(sectionKey) if (sectionKey === TokenOptionSection.SuggestedTokens) { return null } return ( - - - - {icon} - - {endElement && {endElement}} + + + + + + {icon} + + + + ) : ( + rightElement + ) + } + /> + {endElement && {endElement}} + + - - + + {showUnichainWebPromo ? : null} + ) }) -export function useTokenOptionsSectionTitle(section: TokenOptionSection): string { +function useTokenOptionsSectionTitle(section: TokenOptionSection): string { const { t } = useTranslation() const isTokenSelectorTrendingTokensEnabled = useFeatureFlag(FeatureFlags.TokenSelectorTrendingTokens) diff --git a/packages/uniswap/src/components/TokenSelector/lists/TokenSectionBaseList/TokenSectionBaseList.native.tsx b/packages/uniswap/src/components/TokenSelector/lists/TokenSectionBaseList/TokenSectionBaseList.native.tsx index bda4e38b7fa..02533a4a1b4 100644 --- a/packages/uniswap/src/components/TokenSelector/lists/TokenSectionBaseList/TokenSectionBaseList.native.tsx +++ b/packages/uniswap/src/components/TokenSelector/lists/TokenSectionBaseList/TokenSectionBaseList.native.tsx @@ -12,6 +12,7 @@ export function TokenSectionBaseList({ keyExtractor, renderItem, renderSectionHeader, + renderSectionFooter, sections, }: TokenSectionBaseListProps): JSX.Element { const insets = useAppInsets() @@ -38,6 +39,7 @@ export function TokenSectionBaseList({ keyboardDismissMode="on-drag" keyboardShouldPersistTaps="always" renderItem={renderItem} + renderSectionFooter={renderSectionFooter} renderSectionHeader={renderSectionHeader} sections={sections ?? []} showsVerticalScrollIndicator={false} diff --git a/packages/uniswap/src/components/TokenSelector/lists/TokenSectionBaseList/TokenSectionBaseList.tsx b/packages/uniswap/src/components/TokenSelector/lists/TokenSectionBaseList/TokenSectionBaseList.tsx index 560eba73f42..13c238dd109 100644 --- a/packages/uniswap/src/components/TokenSelector/lists/TokenSectionBaseList/TokenSectionBaseList.tsx +++ b/packages/uniswap/src/components/TokenSelector/lists/TokenSectionBaseList/TokenSectionBaseList.tsx @@ -23,6 +23,7 @@ export interface TokenSectionBaseListProps { keyExtractor?: (item: TokenOption | TokenOption[], index: number) => string renderItem: (info: ItemRowInfo) => JSX.Element | null renderSectionHeader?: (info: SectionRowInfo) => JSX.Element + renderSectionFooter?: (info: SectionRowInfo) => JSX.Element sections: TokenSection[] expandedItems?: string[] } diff --git a/packages/uniswap/src/components/TokenSelector/lists/TokenSectionBaseList/TokenSectionBaseList.web.tsx b/packages/uniswap/src/components/TokenSelector/lists/TokenSectionBaseList/TokenSectionBaseList.web.tsx index fe24d372a14..585fd014d7a 100644 --- a/packages/uniswap/src/components/TokenSelector/lists/TokenSectionBaseList/TokenSectionBaseList.web.tsx +++ b/packages/uniswap/src/components/TokenSelector/lists/TokenSectionBaseList/TokenSectionBaseList.web.tsx @@ -21,16 +21,25 @@ type BaseListRowInfo = { key: Key | undefined } type BaseListSectionRowInfo = SectionRowInfo & BaseListRowInfo & Pick +type BaseListSectionFooterRowInfo = SectionRowInfo & + BaseListRowInfo & + Pick type BaseListItemRowInfo = ItemRowInfo & BaseListRowInfo & Pick -type BaseListData = BaseListItemRowInfo | BaseListSectionRowInfo +type BaseListData = BaseListItemRowInfo | BaseListSectionRowInfo | BaseListSectionFooterRowInfo -function isSectionHeader(rowInfo: BaseListData): rowInfo is BaseListSectionRowInfo { +function isSectionHeaderOrFooter( + rowInfo: BaseListData, +): rowInfo is BaseListSectionRowInfo | BaseListSectionFooterRowInfo { return !('renderItem' in rowInfo) } +function isOnlySectionHeader(rowInfo: BaseListData): rowInfo is BaseListSectionRowInfo { + return 'renderSectionHeader' in rowInfo +} + function isHorizontalTokenRowInfo(rowInfo: BaseListData): boolean { - const isHeader = isSectionHeader(rowInfo) + const isHeader = isSectionHeaderOrFooter(rowInfo) return !isHeader && isArray(rowInfo.item) } @@ -39,6 +48,7 @@ export function TokenSectionBaseList({ keyExtractor, renderItem, renderSectionHeader, + renderSectionFooter, sections, sectionListRef, expandedItems, @@ -76,7 +86,7 @@ export function TokenSectionBaseList({ acc.push(sectionInfo) } - return acc.concat( + const rows = acc.concat( section.data.map((item, index) => { const itemInfo: BaseListItemRowInfo = { item, @@ -89,13 +99,24 @@ export function TokenSectionBaseList({ return itemInfo }), ) + + if (section.sectionKey === TokenOptionSection.BridgingTokens) { + const unichainPromotion = { + section: { sectionKey: TokenOptionSection.BridgingTokens }, + key: TokenOptionSection.BridgingTokens, + renderSectionFooter, + } + rows.push(unichainPromotion) + } + + return rows }, []) - }, [sections, renderSectionHeader, keyExtractor, renderItem, expandedItems]) + }, [sections, renderSectionHeader, renderSectionFooter, keyExtractor, renderItem, expandedItems]) // Used for rendering the sticky header const activeSessionIndex = useMemo(() => { return items.slice(0, firstVisibleIndex + 1).reduceRight((acc, item, index) => { - return acc === -1 && isSectionHeader(item) ? index : acc + return acc === -1 && isSectionHeaderOrFooter(item) ? index : acc }, -1) }, [firstVisibleIndex, items]) @@ -115,7 +136,7 @@ export function TokenSectionBaseList({ } if (isHorizontalTokenRowInfo(item)) { - if (!isSectionHeader(item)) { + if (!isSectionHeaderOrFooter(item)) { if (isArray(item.item) && !item.item.length) { return 0 } @@ -127,7 +148,7 @@ export function TokenSectionBaseList({ } } - return isSectionHeader(item) ? ITEM_SECTION_HEADER_ROW_HEIGHT : ITEM_ROW_HEIGHT + return isSectionHeaderOrFooter(item) ? ITEM_SECTION_HEADER_ROW_HEIGHT : ITEM_ROW_HEIGHT }, [items], ) @@ -216,7 +237,7 @@ function TokenSectionBaseListRow({ type RowProps = { index: number - itemData: BaseListItemRowInfo | BaseListSectionRowInfo + itemData: BaseListItemRowInfo | BaseListSectionRowInfo | BaseListSectionFooterRowInfo style?: CSSProperties windowWidth: number updateRowHeight?: (index: number, height: number) => void @@ -234,11 +255,26 @@ function _Row({ index, itemData, style, updateRowHeight }: RowProps): JSX.Elemen [updateRowHeight, index], ) + const item = useMemo((): JSX.Element | null => { + if (!itemData) { + return null + } + + if (isSectionHeaderOrFooter(itemData)) { + if (isOnlySectionHeader(itemData)) { + return itemData.renderSectionHeader?.(itemData) ?? null + } else { + return itemData.renderSectionFooter?.(itemData) ?? null + } + } + + return itemData.renderItem(itemData) + }, [itemData]) + return ( - {itemData && - (isSectionHeader(itemData) ? itemData.renderSectionHeader?.(itemData) : itemData.renderItem(itemData))} + {item} ) diff --git a/packages/uniswap/src/components/TokenSelector/tooltips/TokenSelectorTooltipBase.tsx b/packages/uniswap/src/components/TokenSelector/tooltips/TokenSelectorTooltipBase.tsx new file mode 100644 index 00000000000..2ed133f366c --- /dev/null +++ b/packages/uniswap/src/components/TokenSelector/tooltips/TokenSelectorTooltipBase.tsx @@ -0,0 +1,68 @@ +import { AnimateInOrder, Flex, Text, Tooltip, TouchableArea } from 'ui/src' +import { X } from 'ui/src/components/icons/X' +import { NewTag } from 'uniswap/src/components/pill/NewTag' + +export const TOOLTIP_ICON_SIZE = 20 + +interface TokenSelectorTooltipBaseProps { + icon: JSX.Element + title: string + subtitle: string + actionElement: JSX.Element + showNewTag?: boolean + placement: { + delayMs: number + maxWidth: number + left?: number + top?: number + } + onPress: () => void + onDismiss: () => void +} + +export function TokenSelectorTooltipBase({ + icon, + title, + subtitle, + actionElement, + showNewTag = false, + placement: { delayMs, maxWidth, left, top }, + onPress, + onDismiss, +}: TokenSelectorTooltipBaseProps): JSX.Element { + return ( + + e.stopPropagation()}> + + + {icon} + + {title} + + {showNewTag && } + { + e.stopPropagation() + onDismiss() + }} + > + + + + + {subtitle} + + { + e.stopPropagation() + onPress() + }} + > + {actionElement} + + + + + + ) +} diff --git a/packages/uniswap/src/components/TokenSelector/tooltips/UnichainBridgingTooltip.tsx b/packages/uniswap/src/components/TokenSelector/tooltips/UnichainBridgingTooltip.tsx new file mode 100644 index 00000000000..f099ae45ce1 --- /dev/null +++ b/packages/uniswap/src/components/TokenSelector/tooltips/UnichainBridgingTooltip.tsx @@ -0,0 +1,38 @@ +import { useTranslation } from 'react-i18next' +import { useDispatch } from 'react-redux' +import { Text } from 'ui/src' +import { Shuffle } from 'ui/src/components/icons/Shuffle' +import { + TOOLTIP_ICON_SIZE, + TokenSelectorTooltipBase, +} from 'uniswap/src/components/TokenSelector/tooltips/TokenSelectorTooltipBase' +import { setHasSeenBridgingTooltip } from 'uniswap/src/features/behaviorHistory/slice' + +export function UnichainBridgingTooltip(): JSX.Element { + const { t } = useTranslation() + const dispatch = useDispatch() + + const markAsSeen = (): void => { + dispatch(setHasSeenBridgingTooltip(true)) + } + + return ( + } + actionElement={ + + {t('common.dismiss')} + + } + title={t('unichain.promotion.bridging.description')} + subtitle={t('unichain.promotion.bridging.tooltip.description')} + placement={{ + delayMs: 800, + maxWidth: 280, + top: 54, + }} + onPress={markAsSeen} + onDismiss={markAsSeen} + /> + ) +} diff --git a/packages/uniswap/src/components/TokenSelector/tooltips/UnichainNetworkTooltip.tsx b/packages/uniswap/src/components/TokenSelector/tooltips/UnichainNetworkTooltip.tsx new file mode 100644 index 00000000000..30864eaf097 --- /dev/null +++ b/packages/uniswap/src/components/TokenSelector/tooltips/UnichainNetworkTooltip.tsx @@ -0,0 +1,40 @@ +import { useTranslation } from 'react-i18next' +import { useDispatch } from 'react-redux' +import { Text } from 'ui/src' +import { NetworkLogo } from 'uniswap/src/components/CurrencyLogo/NetworkLogo' +import { + TOOLTIP_ICON_SIZE, + TokenSelectorTooltipBase, +} from 'uniswap/src/components/TokenSelector/tooltips/TokenSelectorTooltipBase' +import { setHasSeenNetworkSelectorTooltip } from 'uniswap/src/features/behaviorHistory/slice' +import { UniverseChainId } from 'uniswap/src/features/chains/types' + +interface UnichainTooltipProps { + onPress: () => void +} + +export function UnichainTooltip({ onPress }: UnichainTooltipProps): JSX.Element { + const { t } = useTranslation() + const dispatch = useDispatch() + + return ( + } + actionElement={ + + {t('unichain.promotion.tooltip.switch')} + + } + title={t('unichain.promotion.tooltip.title')} + subtitle={t('unichain.promotion.tooltip.description')} + placement={{ + delayMs: 750, + maxWidth: 300, + left: 40, + }} + onPress={onPress} + onDismiss={() => dispatch(setHasSeenNetworkSelectorTooltip(true))} + /> + ) +} diff --git a/packages/uniswap/src/components/buttons/__snapshots__/PasteButton.test.tsx.snap b/packages/uniswap/src/components/buttons/__snapshots__/PasteButton.test.tsx.snap index 7493f1f830f..95e00be8303 100644 --- a/packages/uniswap/src/components/buttons/__snapshots__/PasteButton.test.tsx.snap +++ b/packages/uniswap/src/components/buttons/__snapshots__/PasteButton.test.tsx.snap @@ -98,15 +98,15 @@ exports[`SplitLogo inline renders inline button 1`] = ` - @@ -212,7 +199,7 @@ exports[`NetworkFee renders a NetworkFee in an error state 1`] = ` } > -
-
-
+ /> -
-
-
+ /> + {showIcon && Icon && ( + + + + + + )} + {title && ( + + {title} + + )} + {subtitle && ( + + {subtitle} + + )} + + ) +} diff --git a/packages/uniswap/src/components/modals/Modal.web.tsx b/packages/uniswap/src/components/modals/Modal.web.tsx index 960d32a08bb..db235a36ab7 100644 --- a/packages/uniswap/src/components/modals/Modal.web.tsx +++ b/packages/uniswap/src/components/modals/Modal.web.tsx @@ -1,9 +1,9 @@ import { useEffect, useState } from 'react' // eslint-disable-next-line no-restricted-imports import { AdaptiveWebModal, WebModalWithBottomAttachment } from 'ui/src/components/modal/AdaptiveWebModal' +import { INTERFACE_NAV_HEIGHT } from 'ui/src/theme' import { ModalProps } from 'uniswap/src/components/modals/ModalProps' import Trace from 'uniswap/src/features/telemetry/Trace' -import { INTERFACE_NAV_HEIGHT } from 'uniswap/src/theme/heights' import { isExtension, isInterface } from 'utilities/src/platform' const ANIMATION_MS = 200 @@ -50,9 +50,6 @@ export function Modal({ return undefined }, [isModalOpen]) - const isTopAligned = alignment === 'top' - const justifyContent = isTopAligned ? 'flex-start' : undefined - const ModalComponent = bottomAttachment ? WebModalWithBottomAttachment : AdaptiveWebModal return ( @@ -67,7 +64,6 @@ export function Modal({ backgroundColor={backgroundColor} height={height ?? (fullScreen ? '100%' : undefined)} isOpen={isModalOpen} - justifyContent={justifyContent} m="$none" maxWidth={maxWidth} maxHeight={maxHeight} @@ -84,8 +80,6 @@ export function Modal({ px={paddingX} py={paddingY} flex={flex} - position={isTopAligned ? 'absolute' : undefined} - top={isTopAligned ? '$spacing16' : undefined} onClose={isDismissible ? onClose : undefined} > {/* diff --git a/packages/uniswap/src/components/modals/WarningModal/types.ts b/packages/uniswap/src/components/modals/WarningModal/types.ts index 4742b08fbc7..74bd722ca0c 100644 --- a/packages/uniswap/src/components/modals/WarningModal/types.ts +++ b/packages/uniswap/src/components/modals/WarningModal/types.ts @@ -52,6 +52,7 @@ export enum WarningLabel { ViewOnlyAccount = 'view_only_account', NetworkError = 'network_error', BlockedToken = 'blocked_token', + NoQuotesFound = 'no_quotes_found', } export interface Warning { diff --git a/packages/uniswap/src/components/network/NetworkFilter.test.tsx b/packages/uniswap/src/components/network/NetworkFilter.test.tsx index 4d04036f4d3..9a73f688c98 100644 --- a/packages/uniswap/src/components/network/NetworkFilter.test.tsx +++ b/packages/uniswap/src/components/network/NetworkFilter.test.tsx @@ -17,6 +17,7 @@ describe(NetworkFilter, () => { jest.useRealTimers() }) + // TODO WALL-5689 - enable this test once tamagui fixes this issue it('renders a NetworkFilter', async () => { const tree = render( null} />) diff --git a/packages/uniswap/src/components/network/NetworkFilter.tsx b/packages/uniswap/src/components/network/NetworkFilter.tsx index 97848866821..70ea4f24721 100644 --- a/packages/uniswap/src/components/network/NetworkFilter.tsx +++ b/packages/uniswap/src/components/network/NetworkFilter.tsx @@ -1,18 +1,25 @@ import { useCallback } from 'react' -import { Flex } from 'ui/src' +import { useDispatch, useSelector } from 'react-redux' +import { Flex, Tooltip } from 'ui/src' import { easeInEaseOutLayoutAnimation } from 'ui/src/animations/layout/layoutAnimation' import { AlertTriangle } from 'ui/src/components/icons/AlertTriangle' import { Ellipsis } from 'ui/src/components/icons/Ellipsis' import { colors, iconSizes } from 'ui/src/theme' +import { AnimatedNetworkLogo } from 'uniswap/src/components/CurrencyLogo/AnimatedNetworkLogo' import { NetworkLogo, SQUIRCLE_BORDER_RADIUS_RATIO } from 'uniswap/src/components/CurrencyLogo/NetworkLogo' +import { UnichainTooltip } from 'uniswap/src/components/TokenSelector/tooltips/UnichainNetworkTooltip' import { ActionSheetDropdown, ActionSheetDropdownStyleProps, } from 'uniswap/src/components/dropdowns/ActionSheetDropdown' import { useNetworkOptions } from 'uniswap/src/components/network/hooks' +import { selectHasSeenUnichainPromotionNetworkSelectorTooltip } from 'uniswap/src/features/behaviorHistory/selectors' +import { setHasSeenNetworkSelectorTooltip } from 'uniswap/src/features/behaviorHistory/slice' import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains' import { UniverseChainId } from 'uniswap/src/features/chains/types' -import { isMobileApp } from 'utilities/src/platform' +import { FeatureFlags } from 'uniswap/src/features/gating/flags' +import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' +import { isInterface, isMobileApp, isMobileWeb } from 'utilities/src/platform' const ELLIPSIS = 'ellipsis' const NETWORK_ICON_SIZE = iconSizes.icon20 @@ -87,6 +94,19 @@ export function NetworkFilter({ hideArrow = false, }: NetworkFilterProps): JSX.Element { const { defaultChainId } = useEnabledChains() + const dispatch = useDispatch() + const unichainPromotionEnabled = useFeatureFlag(FeatureFlags.UnichainPromo) + const unichainEnabled = useFeatureFlag(FeatureFlags.Unichain) + const hasSeenUnichainPromotionNetworkSelectorTooltip = useSelector( + selectHasSeenUnichainPromotionNetworkSelectorTooltip, + ) + const showUnichainPromo = + unichainEnabled && unichainPromotionEnabled && !hasSeenUnichainPromotionNetworkSelectorTooltip + // Desktop Web exclusive + const showUnichainPromoTooltip = isInterface && !isMobileWeb && showUnichainPromo + // Wallet and MWeb exclusive + const showUnichainPromoAnimation = (!isInterface || isMobileWeb) && showUnichainPromo + const onPress = useCallback( async (chainId: UniverseChainId | null) => { // Ensures smooth animation on mobile @@ -95,10 +115,21 @@ export function NetworkFilter({ } onPressChain(chainId) + + if (showUnichainPromo) { + dispatch(setHasSeenNetworkSelectorTooltip(true)) + } }, - [onPressChain], + [dispatch, onPressChain, showUnichainPromo], ) + const wrappedOnDismiss = useCallback(() => { + if (showUnichainPromo) { + dispatch(setHasSeenNetworkSelectorTooltip(true)) + } + onDismiss?.() + }, [dispatch, onDismiss, showUnichainPromo]) + const networkOptions = useNetworkOptions({ selectedChain, onPress, @@ -107,22 +138,37 @@ export function NetworkFilter({ }) return ( - - {showUnsupportedConnectedChainWarning ? ( - - ) : ( - - )} - + + + + {showUnsupportedConnectedChainWarning ? ( + + ) : showUnichainPromoAnimation ? ( + + ) : ( + + )} + + + onPress(UniverseChainId.Unichain)} /> + ) } diff --git a/packages/uniswap/src/components/network/NetworkOption.tsx b/packages/uniswap/src/components/network/NetworkOption.tsx index 073d36d0945..6be8624e307 100644 --- a/packages/uniswap/src/components/network/NetworkOption.tsx +++ b/packages/uniswap/src/components/network/NetworkOption.tsx @@ -1,12 +1,26 @@ -import { ReactNode } from 'react' +import { ReactNode, useEffect, useMemo } from 'react' import { useTranslation } from 'react-i18next' -import { ElementAfterText, Flex, Text, isWeb, useSporeColors } from 'ui/src' +import { useDispatch, useSelector } from 'react-redux' +import { + AnimateInOrder, + ElementAfterText, + Flex, + Text, + isWeb, + unichainGradientAnimatedStyle, + useSporeColors, +} from 'ui/src' import { CheckmarkCircle } from 'ui/src/components/icons/CheckmarkCircle' import { iconSizes } from 'ui/src/theme' import { NetworkLogo } from 'uniswap/src/components/CurrencyLogo/NetworkLogo' import { NewTag } from 'uniswap/src/components/pill/NewTag' +import { selectHasSeenUnichainPromotionNetworkSelectorAnimation } from 'uniswap/src/features/behaviorHistory/selectors' +import { setHasSeenNetworkSelectorAnimation } from 'uniswap/src/features/behaviorHistory/slice' import { getChainInfo } from 'uniswap/src/features/chains/chainInfo' import { UniverseChainId } from 'uniswap/src/features/chains/types' +import { FeatureFlags } from 'uniswap/src/features/gating/flags' +import { useFeatureFlag } from 'uniswap/src/features/gating/hooks' +import { isInterface } from 'utilities/src/platform' const NETWORK_OPTION_ICON_SIZE = iconSizes.icon24 const OPTION_GAP = isWeb ? '$spacing8' : '$spacing6' @@ -22,10 +36,45 @@ export function NetworkOption({ }): JSX.Element { const { t } = useTranslation() const colors = useSporeColors() + const dispatch = useDispatch() const info = chainId && getChainInfo(chainId) + const isUnichainPromoEnabled = useFeatureFlag(FeatureFlags.UnichainPromo) + const hasSeenUnichainAnimation = useSelector(selectHasSeenUnichainPromotionNetworkSelectorAnimation) + const showUnichainAnimation = + isUnichainPromoEnabled && !hasSeenUnichainAnimation && chainId === UniverseChainId.Unichain let content: ReactNode = null + useEffect(() => { + if (showUnichainAnimation) { + // delay to prevent ux jank + const delay = setTimeout(() => { + dispatch(setHasSeenNetworkSelectorAnimation(true)) + }, 1000) + return () => clearTimeout(delay) + } + return undefined + }, [showUnichainAnimation, dispatch]) + + const wrappedNewTag = useMemo( + () => + hasSeenUnichainAnimation ? ( + + ) : ( + + + + ), + [hasSeenUnichainAnimation], + ) + if (!info?.label) { content = ( @@ -38,24 +87,54 @@ export function NetworkOption({ } else { content = ( - {(chainId && ) || ( - - )} + + {(chainId && ) || ( + + )} + + {isInterface ? ( + + ) : null} : undefined} + element={isNew || showUnichainAnimation ? wrappedNewTag : undefined} text={info.label} - textProps={{ color: '$neutral1', variant: 'body2' }} + textProps={ + showUnichainAnimation && isInterface + ? { + color: 'transparent', + variant: 'body2', + className: 'unichain-gradient', + } + : { color: '$neutral1', variant: 'body2' } + } /> ) } return ( - - {content} - - {currentlySelected && } + + + {content} + + {currentlySelected && } + - + ) } diff --git a/packages/uniswap/src/components/network/__snapshots__/NetworkFilter.test.tsx.snap b/packages/uniswap/src/components/network/__snapshots__/NetworkFilter.test.tsx.snap index dcb195fa3c7..54f04dc6d3a 100644 --- a/packages/uniswap/src/components/network/__snapshots__/NetworkFilter.test.tsx.snap +++ b/packages/uniswap/src/components/network/__snapshots__/NetworkFilter.test.tsx.snap @@ -57,22 +57,16 @@ exports[`NetworkFilter renders a NetworkFilter 1`] = ` } testID="network-logo" > -
-
-
+ /> , , + - - Learn more - - + Learn more + `; diff --git a/packages/uniswap/src/components/unichain/UnichainIntroModal.tsx b/packages/uniswap/src/components/unichain/UnichainIntroModal.tsx index 90263bcab4d..7bac949aa17 100644 --- a/packages/uniswap/src/components/unichain/UnichainIntroModal.tsx +++ b/packages/uniswap/src/components/unichain/UnichainIntroModal.tsx @@ -8,7 +8,12 @@ import { ChartBarAxis } from 'ui/src/components/icons/ChartBarAxis' import { UniswapXUncolored } from 'ui/src/components/icons/UniswapXUncolored' import { X } from 'ui/src/components/icons/X' import { Modal } from 'uniswap/src/components/modals/Modal' -import { setHasDismissedUnichainColdBanner } from 'uniswap/src/features/behaviorHistory/slice' +import { + setHasDismissedUnichainColdBanner, + setHasSeenBridgingTooltip, + setHasSeenNetworkSelectorTooltip, + setIsFirstUnichainBridgeSelection, +} from 'uniswap/src/features/behaviorHistory/slice' import { ModalName } from 'uniswap/src/features/telemetry/constants' import { isExtension, isInterface, isMobileApp, isMobileWeb } from 'utilities/src/platform' @@ -24,13 +29,19 @@ export function UnichainIntroModal({ const onPressGetStarted = useMemo(() => { return () => { + // Guarantee show the bridging if reached via intro modal + dispatch(setHasSeenNetworkSelectorTooltip(true)) + dispatch(setHasSeenBridgingTooltip(false)) + dispatch(setIsFirstUnichainBridgeSelection(false)) + + // Open swap flow, close modal, mark as dismissed openSwapFlow() onClose() dispatch(setHasDismissedUnichainColdBanner(true)) } }, [openSwapFlow, onClose, dispatch]) - const assetSize = isInterface && !isMobileWeb ? 300 : 200 + const assetSize = isInterface && !isMobileWeb ? 225 : 200 const isWebNonMobile = isExtension || (isInterface && !isMobileWeb) return ( @@ -57,10 +68,11 @@ export function UnichainIntroModal({ @@ -72,6 +84,7 @@ export function UnichainIntroModal({ void - setSwapInputChainId: (chainId: UniverseChainId) => void swapInputChainId?: UniverseChainId setSwapOutputChainId: (chainId: UniverseChainId) => void swapOutputChainId?: UniverseChainId @@ -43,10 +42,7 @@ export function UniswapProvider({ useProviderHook, onConnectWallet, }: PropsWithChildren< - Omit< - UniswapContext, - 'isSwapTokenSelectorOpen' | 'setIsSwapTokenSelectorOpen' | 'setSwapInputChainId' | 'setSwapOutputChainId' - > + Omit >): JSX.Element { const [swapInputChainId, setSwapInputChainId] = useState() const [swapOutputChainId, setSwapOutputChainId] = useState() @@ -75,7 +71,6 @@ export function UniswapProvider({ navigateToFiatOnRamp, onConnectWallet, swapInputChainId, - setSwapInputChainId, swapOutputChainId, setSwapOutputChainId, isSwapTokenSelectorOpen, diff --git a/packages/uniswap/src/data/apiClients/tradingApi/useCheckLpApprovalQuery.ts b/packages/uniswap/src/data/apiClients/tradingApi/useCheckLpApprovalQuery.ts index 40ab5920501..6eab5e81736 100644 --- a/packages/uniswap/src/data/apiClients/tradingApi/useCheckLpApprovalQuery.ts +++ b/packages/uniswap/src/data/apiClients/tradingApi/useCheckLpApprovalQuery.ts @@ -15,10 +15,9 @@ export function useCheckLpApprovalQuery({ return useQuery({ queryKey, - enabled: !!params, queryFn: async () => { if (!params) { - throw new Error('Params are required') + throw { name: 'Params are required' } } return await checkLpApproval(params, headers) }, diff --git a/packages/uniswap/src/data/apiClients/tradingApi/useClaimLpFeesCalldataQuery.ts b/packages/uniswap/src/data/apiClients/tradingApi/useClaimLpFeesCalldataQuery.ts index 335804ee16c..bc5db98e928 100644 --- a/packages/uniswap/src/data/apiClients/tradingApi/useClaimLpFeesCalldataQuery.ts +++ b/packages/uniswap/src/data/apiClients/tradingApi/useClaimLpFeesCalldataQuery.ts @@ -12,10 +12,9 @@ export function useClaimLpFeesCalldataQuery({ return useQuery({ queryKey, - enabled: !!params, queryFn: async () => { if (!params) { - throw new Error('Params are required') + throw { name: 'Params are required' } } return await claimLpFees(params) }, diff --git a/packages/uniswap/src/data/apiClients/tradingApi/useCreateLpPositionCalldataQuery.ts b/packages/uniswap/src/data/apiClients/tradingApi/useCreateLpPositionCalldataQuery.ts index 8185d8ca0c1..131f08fe587 100644 --- a/packages/uniswap/src/data/apiClients/tradingApi/useCreateLpPositionCalldataQuery.ts +++ b/packages/uniswap/src/data/apiClients/tradingApi/useCreateLpPositionCalldataQuery.ts @@ -18,10 +18,9 @@ export function useCreateLpPositionCalldataQuery({ return useQuery({ queryKey, - enabled: !!params, queryFn: async () => { if (!params) { - throw new Error('Params are required') + throw { name: 'Params are required' } } return await createLpPosition(paramsWithDeadline) }, diff --git a/packages/uniswap/src/data/apiClients/tradingApi/useDecreaseLpPositionCalldataQuery.ts b/packages/uniswap/src/data/apiClients/tradingApi/useDecreaseLpPositionCalldataQuery.ts index 0c85401e79d..2989846b8a9 100644 --- a/packages/uniswap/src/data/apiClients/tradingApi/useDecreaseLpPositionCalldataQuery.ts +++ b/packages/uniswap/src/data/apiClients/tradingApi/useDecreaseLpPositionCalldataQuery.ts @@ -19,10 +19,9 @@ export function useDecreaseLpPositionCalldataQuery({ return useQuery({ queryKey, - enabled: !!params, queryFn: async () => { if (!params) { - throw new Error('Params are required') + throw { name: 'Params are required' } } return await decreaseLpPosition(paramsWithDeadline) }, diff --git a/packages/uniswap/src/data/apiClients/tradingApi/useIncreaseLpPositionCalldataQuery.ts b/packages/uniswap/src/data/apiClients/tradingApi/useIncreaseLpPositionCalldataQuery.ts index 0fa7d0c2be1..bcc7c29449f 100644 --- a/packages/uniswap/src/data/apiClients/tradingApi/useIncreaseLpPositionCalldataQuery.ts +++ b/packages/uniswap/src/data/apiClients/tradingApi/useIncreaseLpPositionCalldataQuery.ts @@ -19,10 +19,9 @@ export function useIncreaseLpPositionCalldataQuery({ const paramsWithDeadline = { ...params, deadline } return useQuery({ queryKey, - enabled: !!params, queryFn: async () => { if (!params) { - throw new Error('Params are required') + throw { name: 'Params are required' } } return await increaseLpPosition(paramsWithDeadline) }, diff --git a/packages/uniswap/src/data/apiClients/tradingApi/useMigrateV3LpPositionCalldataQuery.ts b/packages/uniswap/src/data/apiClients/tradingApi/useMigrateV3LpPositionCalldataQuery.ts index e366c6d464c..4e5f857c50f 100644 --- a/packages/uniswap/src/data/apiClients/tradingApi/useMigrateV3LpPositionCalldataQuery.ts +++ b/packages/uniswap/src/data/apiClients/tradingApi/useMigrateV3LpPositionCalldataQuery.ts @@ -15,10 +15,9 @@ export function useMigrateV3LpPositionCalldataQuery({ return useQuery({ queryKey, - enabled: !!params, queryFn: async () => { if (!params) { - throw new Error('Params are required') + throw { name: 'Params are required' } } return await migrateLpPosition(params) }, diff --git a/packages/uniswap/src/data/graphql/uniswap-data-api/queries.ts b/packages/uniswap/src/data/graphql/uniswap-data-api/queries.ts index 89acb1e2985..ed65c0624de 100644 --- a/packages/uniswap/src/data/graphql/uniswap-data-api/queries.ts +++ b/packages/uniswap/src/data/graphql/uniswap-data-api/queries.ts @@ -11,7 +11,6 @@ export enum GQLQueries { TokenPriceHistory = 'TokenPriceHistory', TokenProjects = 'TokenProjects', TransactionList = 'TransactionList', - FeedTransactionList = 'FeedTransactionList', TopTokens = 'TopTokens', SearchTokens = 'SearchTokens', ExploreSearch = 'ExploreSearch', diff --git a/packages/uniswap/src/features/behaviorHistory/selectors.ts b/packages/uniswap/src/features/behaviorHistory/selectors.ts index 0afa5d7d650..dedcec8b2bf 100644 --- a/packages/uniswap/src/features/behaviorHistory/selectors.ts +++ b/packages/uniswap/src/features/behaviorHistory/selectors.ts @@ -14,3 +14,15 @@ export const selectHasDismissedUnichainColdBanner = (state: UniswapState): boole export const selectHasDismissedUnichainWarmBanner = (state: UniswapState): boolean => state.uniswapBehaviorHistory.unichainPromotion?.warmBannerDismissed === true + +export const selectHasSeenUnichainPromotionNetworkSelectorAnimation = (state: UniswapState): boolean => + state.uniswapBehaviorHistory.unichainPromotion?.networkSelectorAnimationSeen === true + +export const selectHasSeenUnichainPromotionNetworkSelectorTooltip = (state: UniswapState): boolean => + state.uniswapBehaviorHistory.unichainPromotion?.networkSelectorTooltipSeen === true + +export const selectHasSeenUnichainPromotionBridgingTooltip = (state: UniswapState): boolean => + state.uniswapBehaviorHistory.unichainPromotion?.bridgingTooltipSeen === true + +export const selectIsFirstUnichainBridgeSelection = (state: UniswapState): boolean => + state.uniswapBehaviorHistory.unichainPromotion?.isFirstUnichainBridgeSelection === true diff --git a/packages/uniswap/src/features/behaviorHistory/slice.ts b/packages/uniswap/src/features/behaviorHistory/slice.ts index 6b4f17379a0..681f1cf44ac 100644 --- a/packages/uniswap/src/features/behaviorHistory/slice.ts +++ b/packages/uniswap/src/features/behaviorHistory/slice.ts @@ -11,6 +11,10 @@ export interface UniswapBehaviorHistoryState { unichainPromotion?: { coldBannerDismissed?: boolean warmBannerDismissed?: boolean + networkSelectorAnimationSeen?: boolean + networkSelectorTooltipSeen?: boolean + bridgingTooltipSeen?: boolean + isFirstUnichainBridgeSelection?: boolean } } @@ -18,6 +22,14 @@ export const initialUniswapBehaviorHistoryState: UniswapBehaviorHistoryState = { hasViewedBridgingBanner: false, hasDismissedBridgingWarning: false, hasDismissedLowNetworkTokenWarning: false, + unichainPromotion: { + coldBannerDismissed: false, + warmBannerDismissed: false, + networkSelectorAnimationSeen: false, + networkSelectorTooltipSeen: false, + bridgingTooltipSeen: false, + isFirstUnichainBridgeSelection: true, + }, } const slice = createSlice({ @@ -41,7 +53,22 @@ const slice = createSlice({ state.unichainPromotion ??= {} state.unichainPromotion.warmBannerDismissed = action.payload }, - + setHasSeenNetworkSelectorAnimation: (state, action: PayloadAction) => { + state.unichainPromotion ??= {} + state.unichainPromotion.networkSelectorAnimationSeen = action.payload + }, + setHasSeenNetworkSelectorTooltip: (state, action: PayloadAction) => { + state.unichainPromotion ??= {} + state.unichainPromotion.networkSelectorTooltipSeen = action.payload + }, + setHasSeenBridgingTooltip: (state, action: PayloadAction) => { + state.unichainPromotion ??= {} + state.unichainPromotion.bridgingTooltipSeen = action.payload + }, + setIsFirstUnichainBridgeSelection: (state, action: PayloadAction) => { + state.unichainPromotion ??= {} + state.unichainPromotion.isFirstUnichainBridgeSelection = action.payload + }, // Should only be used for testing resetUniswapBehaviorHistory: (_state, _action: PayloadAction) => { return initialUniswapBehaviorHistoryState @@ -55,6 +82,10 @@ export const { setHasDismissedLowNetworkTokenWarning, setHasDismissedUnichainColdBanner, setHasDismissedUnichainWarmBanner, + setHasSeenNetworkSelectorAnimation, + setHasSeenNetworkSelectorTooltip, + setHasSeenBridgingTooltip, + setIsFirstUnichainBridgeSelection, resetUniswapBehaviorHistory, } = slice.actions diff --git a/packages/uniswap/src/features/chains/chainInfo.ts b/packages/uniswap/src/features/chains/chainInfo.ts index 8d6d6027271..9fe680e7d15 100644 --- a/packages/uniswap/src/features/chains/chainInfo.ts +++ b/packages/uniswap/src/features/chains/chainInfo.ts @@ -107,7 +107,7 @@ export function getQuicknodeChainId(chainId: UniverseChainId): string { case UniverseChainId.Sepolia: return 'ethereum-sepolia' case UniverseChainId.Unichain: - return 'unichain' + return 'unichain-mainnet' case UniverseChainId.UnichainSepolia: return 'unichain-sepolia' case UniverseChainId.WorldChain: @@ -188,7 +188,7 @@ export const UNIVERSE_CHAIN_INFO: Record = { http: [getQuicknodeEndpointUrl(UniverseChainId.Mainnet)], }, [RPCType.Default]: { - http: ['https://cloudflare-eth.com'], + http: [getQuicknodeEndpointUrl(UniverseChainId.Mainnet)], }, [RPCType.Fallback]: { http: ['https://rpc.ankr.com/eth', 'https://eth-mainnet.public.blastapi.io'], diff --git a/packages/uniswap/src/features/fiatOnRamp/TokenSelectorBalanceDisplay.tsx b/packages/uniswap/src/features/fiatOnRamp/TokenSelectorBalanceDisplay.tsx index 80e264d773a..7dfd9870173 100644 --- a/packages/uniswap/src/features/fiatOnRamp/TokenSelectorBalanceDisplay.tsx +++ b/packages/uniswap/src/features/fiatOnRamp/TokenSelectorBalanceDisplay.tsx @@ -1,5 +1,5 @@ import { ComponentProps } from 'react' -import { Flex, SpinningLoader, Text, TouchableArea } from 'ui/src' +import { Flex, SpinningLoader, Text, TouchableArea, useIsDarkMode } from 'ui/src' import { RotatableChevron } from 'ui/src/components/icons/RotatableChevron' import { iconSizes, spacing } from 'ui/src/theme' import { MaxAmountButton } from 'uniswap/src/components/CurrencyInputPanel/MaxAmountButton' @@ -39,6 +39,7 @@ export function TokenSelectorBalanceDisplay({ }: TokenSelectorBalanceDisplayProps): JSX.Element { const balanceQuantity = portfolioBalance?.quantity.toString() || '0' const formattedAmount = useFormatExactCurrencyAmount(balanceQuantity, selectedCurrencyInfo?.currency) || '-' + const isDarkMode = useIsDarkMode() const currencyBalance = getCurrencyAmount({ value: balanceQuantity, @@ -57,7 +58,7 @@ export function TokenSelectorBalanceDisplay({ { diff --git a/packages/uniswap/src/features/gating/flags.ts b/packages/uniswap/src/features/gating/flags.ts index 6d10fe1964d..80e9e119340 100644 --- a/packages/uniswap/src/features/gating/flags.ts +++ b/packages/uniswap/src/features/gating/flags.ts @@ -14,6 +14,7 @@ export enum FeatureFlags { PortionFields, SharedSwapArbitrumUniswapXExperiment, TokenSelectorTrendingTokens, + TwoSecondSwapQuotePollingInterval, Unichain, UnichainPromo, UniswapX, @@ -28,8 +29,8 @@ export enum FeatureFlags { ExtensionAutoConnect, ExtensionClaimUnitag, ExtensionPromotionGA, - FeedTab, FiatOffRamp, + NotificationPriceAlerts, OnboardingKeyring, OpenAIAssistant, PrivateRpc, @@ -48,6 +49,7 @@ export enum FeatureFlags { L2NFTs, LimitsFees, LPRedesign, + MigrateV3ToV4, MultipleRoutingOptions, NavigationHotkeys, PriceRangeInputV2, @@ -60,11 +62,6 @@ export enum FeatureFlags { UniversalSwap, V4Data, Zora, - - // TODO(WEB-3625): Remove these once we have a generalized system for outage banners. - OutageBannerArbitrum, - OutageBannerOptimism, - OutageBannerPolygon, } // These names must match the gate name on statsig @@ -77,6 +74,7 @@ export const SHARED_FEATURE_FLAG_NAMES = new Map([ [FeatureFlags.PortionFields, 'portion-fields'], [FeatureFlags.SharedSwapArbitrumUniswapXExperiment, 'shared_swap_arbitrum_uniswapx_experiment'], [FeatureFlags.TokenSelectorTrendingTokens, 'token_selector_trending_tokens'], + [FeatureFlags.TwoSecondSwapQuotePollingInterval, 'two_second_swap_quote_polling_interval'], [FeatureFlags.Unichain, 'unichain'], [FeatureFlags.UnichainPromo, 'unichain_promo'], [FeatureFlags.UniswapX, 'uniswapx'], @@ -98,12 +96,9 @@ export const WEB_FEATURE_FLAG_NAMES = new Map([ [FeatureFlags.L2NFTs, 'l2_nfts'], [FeatureFlags.LPRedesign, 'lp_redesign'], [FeatureFlags.LimitsFees, 'limits_fees'], + [FeatureFlags.MigrateV3ToV4, 'migrate-v3-to-v4'], [FeatureFlags.MultipleRoutingOptions, 'multiple_routing_options'], [FeatureFlags.NavigationHotkeys, 'navigation_hotkeys'], - // TODO(WEB-3625): Remove these once we have a generalized system for outage banners. - [FeatureFlags.OutageBannerArbitrum, 'outage_banner_feb_2024_arbitrum'], - [FeatureFlags.OutageBannerOptimism, 'outage_banner_feb_2024_optimism'], - [FeatureFlags.OutageBannerPolygon, 'outage_banner_feb_2024_polygon'], [FeatureFlags.PriceRangeInputV2, 'price_range_input_v2'], [FeatureFlags.QuickRouteMainnet, 'enable_quick_route_mainnet'], @@ -125,9 +120,9 @@ export const WALLET_FEATURE_FLAG_NAMES = new Map([ [FeatureFlags.ExtensionAutoConnect, 'extension-auto-connect'], [FeatureFlags.ExtensionClaimUnitag, 'extension-claim-unitag'], [FeatureFlags.ExtensionPromotionGA, 'extension-promotion-ga'], - [FeatureFlags.FeedTab, 'feed-tab'], [FeatureFlags.FiatOffRamp, 'fiat-offramp'], [FeatureFlags.ForAggregator, 'for-aggregator'], + [FeatureFlags.NotificationPriceAlerts, 'notification_price_alerts'], [FeatureFlags.OnboardingKeyring, 'onboarding-keyring'], [FeatureFlags.OpenAIAssistant, 'openai-assistant'], [FeatureFlags.PrivateRpc, 'mev-blocker'], diff --git a/packages/uniswap/src/features/telemetry/constants/trace.ts b/packages/uniswap/src/features/telemetry/constants/trace.ts index b2d7fd67345..b9b584636ce 100644 --- a/packages/uniswap/src/features/telemetry/constants/trace.ts +++ b/packages/uniswap/src/features/telemetry/constants/trace.ts @@ -66,6 +66,7 @@ export const ModalName = { NetworkFeeInfo: 'network-fee-info', NetworkSelector: 'network-selector-modal', NftCollection: 'nft-collection', + NotificationsOSSettings: 'notifications-os-settings-modal', OffchainActivity: 'offchain-activity-modal', OnDeviceRecoveryConfirmation: 'on-device-recovery-confirmation', OtpInputExpired: 'otp-input-expired', @@ -263,7 +264,6 @@ export const SectionName = { ExploreTopTokensSection: 'explore-top-tokens-section', HomeActivityTab: 'home-activity-tab', HomeExploreTab: 'home-explore-tab', - HomeFeedTab: 'home-feed-tab', HomeNFTsTab: 'home-nfts-tab', HomeTokensTab: 'home-tokens-tab', ImportAccountForm: 'import-account-form', diff --git a/packages/uniswap/src/features/telemetry/constants/wallet.ts b/packages/uniswap/src/features/telemetry/constants/wallet.ts index 5174cf54f80..d461a67fa0c 100644 --- a/packages/uniswap/src/features/telemetry/constants/wallet.ts +++ b/packages/uniswap/src/features/telemetry/constants/wallet.ts @@ -40,9 +40,7 @@ export enum WalletEventName { export const WALLET_TESTNET_CONFIG: TestnetModeConfig = { allowlistEvents: [ SharedEventName.PAGE_VIEWED, - SharedEventName.ELEMENT_CLICKED, UniswapEventName.TokenSelected, - WalletEventName.ExternalLinkOpened, WalletEventName.NetworkFilterSelected, WalletEventName.SwapSubmitted, WalletEventName.TransferCompleted, diff --git a/packages/uniswap/src/features/telemetry/types.ts b/packages/uniswap/src/features/telemetry/types.ts index 17b1cce8b4d..a8c7badef1d 100644 --- a/packages/uniswap/src/features/telemetry/types.ts +++ b/packages/uniswap/src/features/telemetry/types.ts @@ -306,7 +306,11 @@ export type FORTransactionUpdatedProperties = { serviceProvider: string } -export type OfframpSendTransactionProperties = ITraceContext & { +export type FORWidgetCompletedProperties = ITraceContext & { + externalTransactionId: Maybe +} + +export type FORFundsSentProperties = ITraceContext & { cryptoCurrency: string currencyAmount: number serviceProvider: string @@ -341,8 +345,8 @@ export type LiquidityAnalyticsProperties = ITraceContext & { chain_id?: UniverseChainId baseCurrencyId: string quoteCurrencyId: string - token0AmountUSD: number - token1AmountUSD: number + token0AmountUSD?: number + token1AmountUSD?: number transaction_hash: string } @@ -379,8 +383,8 @@ export type UniverseEventProperties = { [FiatOffRampEventName.FiatOffRampUnsupportedTokenBack]: FORUnsupportedTokenSelectedProperties [FiatOffRampEventName.FiatOffRampUnsupportedTokenSwap]: FORUnsupportedTokenSelectedProperties [FiatOffRampEventName.FiatOffRampWidgetOpened]: FORWidgetOpenedProperties - [FiatOffRampEventName.FiatOffRampWidgetCompleted]: OfframpSendTransactionProperties - [FiatOffRampEventName.FiatOffRampFundsSent]: OfframpSendTransactionProperties + [FiatOffRampEventName.FiatOffRampWidgetCompleted]: FORWidgetCompletedProperties + [FiatOffRampEventName.FiatOffRampFundsSent]: FORFundsSentProperties [FiatOnRampEventName.FiatOnRampAmountEntered]: FORAmountEnteredProperties [FiatOnRampEventName.FiatOnRampTokenSelected]: FORTokenSelectedProperties [FiatOnRampEventName.FiatOnRampTransactionUpdated]: FORTransactionUpdatedProperties diff --git a/packages/uniswap/src/features/transactions/swap/SwapFlow.tsx b/packages/uniswap/src/features/transactions/swap/SwapFlow.tsx index 6a1745c823b..a892bb9a986 100644 --- a/packages/uniswap/src/features/transactions/swap/SwapFlow.tsx +++ b/packages/uniswap/src/features/transactions/swap/SwapFlow.tsx @@ -95,9 +95,9 @@ function CurrentScreen({ {/* - We want to render the `Modal` from the start to allow the tamagui animation to happen once we switch the `isModalOpen` prop to `true`. - We only render `SwapReviewScreen` once the user is truly on that step though. - */} + We want to render the `Modal` from the start to allow the tamagui animation to happen once we switch the `isModalOpen` prop to `true`. + We only render `SwapReviewScreen` once the user is truly on that step though. + */} diff --git a/packages/uniswap/src/features/transactions/swap/form/footer/GasAndWarningRows.native.tsx b/packages/uniswap/src/features/transactions/swap/form/footer/GasAndWarningRows.native.tsx index 9162a3aa816..56755877952 100644 --- a/packages/uniswap/src/features/transactions/swap/form/footer/GasAndWarningRows.native.tsx +++ b/packages/uniswap/src/features/transactions/swap/form/footer/GasAndWarningRows.native.tsx @@ -7,7 +7,7 @@ import { WarningWithStyle } from 'uniswap/src/components/modals/WarningModal/typ import { useAccountMeta } from 'uniswap/src/contexts/UniswapContext' import { InsufficientNativeTokenWarning } from 'uniswap/src/features/transactions/InsufficientNativeTokenWarning/InsufficientNativeTokenWarning' import { BlockedAddressWarning } from 'uniswap/src/features/transactions/modals/BlockedAddressWarning' -import { GasTradeRow, useDebouncedGasInfo } from 'uniswap/src/features/transactions/swap/form/footer/GasTradeRow' +import { TradeInfoRow, useDebouncedGasInfo } from 'uniswap/src/features/transactions/swap/form/footer/TradeInfoRow' import { useParsedSwapWarnings } from 'uniswap/src/features/transactions/swap/hooks/useSwapWarnings' import { SwapWarningModal } from 'uniswap/src/features/transactions/swap/modals/SwapWarningModal' import { useIsBlocked } from 'uniswap/src/features/trm/hooks' @@ -68,7 +68,7 @@ export function GasAndWarningRows(): JSX.Element { /> )} - + {showFormWarning && ( - + diff --git a/packages/uniswap/src/features/transactions/swap/form/footer/GasTradeRow.tsx b/packages/uniswap/src/features/transactions/swap/form/footer/TradeInfoRow.tsx similarity index 78% rename from packages/uniswap/src/features/transactions/swap/form/footer/GasTradeRow.tsx rename to packages/uniswap/src/features/transactions/swap/form/footer/TradeInfoRow.tsx index 86c77cf4000..f7e755431bd 100644 --- a/packages/uniswap/src/features/transactions/swap/form/footer/GasTradeRow.tsx +++ b/packages/uniswap/src/features/transactions/swap/form/footer/TradeInfoRow.tsx @@ -1,15 +1,20 @@ import { PropsWithChildren, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' -import { Accordion, Flex, Text } from 'ui/src' +import { Accordion, Flex, Text, TouchableArea } from 'ui/src' +import { Arrow } from 'ui/src/components/arrow/Arrow' import { AlertTriangleFilled } from 'ui/src/components/icons/AlertTriangleFilled' import { Gas } from 'ui/src/components/icons/Gas' import { RotatableChevron } from 'ui/src/components/icons/RotatableChevron' -import { iconSizes } from 'ui/src/theme' +import { iconSizes, validColor } from 'ui/src/theme' +import { NetworkLogo } from 'uniswap/src/components/CurrencyLogo/NetworkLogo' import { UniswapXFee } from 'uniswap/src/components/gas/NetworkFee' import { WarningInfo } from 'uniswap/src/components/modals/WarningModal/WarningInfo' import { getAlertColor } from 'uniswap/src/components/modals/WarningModal/getAlertColor' -import { Warning } from 'uniswap/src/components/modals/WarningModal/types' +import { Warning, WarningLabel } from 'uniswap/src/components/modals/WarningModal/types' +import { getCanonicalBridgingDappUrls } from 'uniswap/src/features/bridging/constants' import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains' +import { UniverseChainId } from 'uniswap/src/features/chains/types' +import { getChainLabel, toSupportedChainId } from 'uniswap/src/features/chains/utils' import { useFormattedUniswapXGasFeeInfo, useGasFeeFormattedDisplayAmounts, @@ -22,8 +27,10 @@ import { useSwapTxContext } from 'uniswap/src/features/transactions/swap/context import { NetworkFeeWarning } from 'uniswap/src/features/transactions/swap/modals/NetworkFeeWarning' import { SwapRateRatio } from 'uniswap/src/features/transactions/swap/review/SwapRateRatio' import { IndicativeTrade, Trade } from 'uniswap/src/features/transactions/swap/types/trade' -import { isUniswapX } from 'uniswap/src/features/transactions/swap/utils/routing' +import { isBridge, isUniswapX } from 'uniswap/src/features/transactions/swap/utils/routing' import { CurrencyField } from 'uniswap/src/types/currency' +import { useNetworkColors } from 'uniswap/src/utils/colors' +import { openUri } from 'uniswap/src/utils/linking' import { isInterface, isMobileApp } from 'utilities/src/platform' import { usePrevious } from 'utilities/src/react/hooks' @@ -143,9 +150,9 @@ function GasRow({ gasInfo, hidden }: { gasInfo: DebouncedGasInfo; hidden?: boole } } -// GasTradeRow take `gasInfo` as a prop (rather than directly using useDebouncedGasInfo) because on mobile, +// TradeInfoRow take `gasInfo` as a prop (rather than directly using useDebouncedGasInfo) because on mobile, // the parent needs to check whether to render an empty row based on `gasInfo` fields first. -export function GasTradeRow({ +export function TradeInfoRow({ gasInfo, warning, }: { @@ -165,6 +172,14 @@ export function GasTradeRow({ return } + // On interface, if the warning is a no quotes found warning, we want to show an external link to a canonical bridge + const showCanonicalBridge = + isInterface && + warning?.type === WarningLabel.NoQuotesFound && + !debouncedTrade?.indicative && + debouncedTrade && + isBridge(debouncedTrade) + return ( @@ -184,7 +199,11 @@ export function GasTradeRow({ )} - {debouncedTrade ? ( + {showCanonicalBridge ? ( + + ) : debouncedTrade ? ( ) } + +function CanonicalBridgeLink({ chainId }: { chainId: UniverseChainId }): JSX.Element { + const { foreground } = useNetworkColors(chainId) + + const networkLabel = getChainLabel(chainId) + const networkColor = validColor(foreground) + const canonicalBridgeUrl = getCanonicalBridgingDappUrls([chainId])?.[0] + + return ( + canonicalBridgeUrl && openUri(canonicalBridgeUrl)}> + + + + {networkLabel} Bridge + + + + + ) +} diff --git a/packages/uniswap/src/features/transactions/swap/hooks/usePollingIntervalByChain.ts b/packages/uniswap/src/features/transactions/swap/hooks/usePollingIntervalByChain.ts index 35d134c20e8..b7398fccb03 100644 --- a/packages/uniswap/src/features/transactions/swap/hooks/usePollingIntervalByChain.ts +++ b/packages/uniswap/src/features/transactions/swap/hooks/usePollingIntervalByChain.ts @@ -1,7 +1,8 @@ import { UniverseChainId } from 'uniswap/src/features/chains/types' import { isMainnetChainId } from 'uniswap/src/features/chains/utils' import { DynamicConfigs, SwapConfigKey } from 'uniswap/src/features/gating/configs' -import { useDynamicConfigValue } from 'uniswap/src/features/gating/hooks' +import { FeatureFlags } from 'uniswap/src/features/gating/flags' +import { useDynamicConfigValue, useFeatureFlag } from 'uniswap/src/features/gating/hooks' import { ONE_SECOND_MS } from 'utilities/src/time/time' export const AVERAGE_L1_BLOCK_TIME_MS = 12 * ONE_SECOND_MS @@ -20,5 +21,9 @@ export function usePollingIntervalByChain(chainId?: UniverseChainId): number { AVERAGE_L2_BLOCK_TIME_MS, ) - return isMainnetChainId(chainId) ? averageL1BlockTimeMs : averageL2BlockTimeMs + // TODO(WEB-6132): remove this flag once short term experiment is complete + const enableTwoSecondInterval = useFeatureFlag(FeatureFlags.TwoSecondSwapQuotePollingInterval) + const l2PollingInterval = enableTwoSecondInterval ? 2 * ONE_SECOND_MS : averageL2BlockTimeMs + + return isMainnetChainId(chainId) ? averageL1BlockTimeMs : l2PollingInterval } diff --git a/packages/uniswap/src/features/transactions/swap/hooks/useSwapWarnings.tsx b/packages/uniswap/src/features/transactions/swap/hooks/useSwapWarnings.tsx index 543150e06f5..f815ad550e9 100644 --- a/packages/uniswap/src/features/transactions/swap/hooks/useSwapWarnings.tsx +++ b/packages/uniswap/src/features/transactions/swap/hooks/useSwapWarnings.tsx @@ -98,7 +98,7 @@ export function getSwapWarnings( } if (trade.error) { - warnings.push(getSwapWarningFromError(trade.error, t)) + warnings.push(getSwapWarningFromError(trade.error, t, derivedSwapInfo)) } // swap form is missing input, output fields @@ -265,7 +265,8 @@ export function useParsedSwapWarnings(): ParsedWarnings { return useFormattedWarnings(allWarnings) } -function getSwapWarningFromError(error: Error, t: TFunction): Warning { +function getSwapWarningFromError(error: Error, t: TFunction, derivedSwapInfo: DerivedSwapInfo): Warning { + const isBridgeTrade = derivedSwapInfo.trade.trade !== null && isBridge(derivedSwapInfo.trade.trade) if (error instanceof FetchError) { // Special case: rate limit errors are not parsed by errorCode if (isRateLimitFetchError(error)) { @@ -289,6 +290,18 @@ function getSwapWarningFromError(error: Error, t: TFunction): Warning { message: undefined, } } + + // no bridging quotes found warning + case Err404.errorCode.RESOURCE_NOT_FOUND && isBridgeTrade: { + return { + type: WarningLabel.NoQuotesFound, + severity: WarningSeverity.Low, + action: WarningAction.DisableReview, + title: t('swap.warning.noQuotesFound.title'), + message: t('swap.warning.noQuotesFound.bridging.message'), + } + } + case Err404.errorCode.RESOURCE_NOT_FOUND: { return { type: WarningLabel.NoRoutesError, diff --git a/packages/uniswap/src/features/transactions/swap/review/SwapDetails.tsx b/packages/uniswap/src/features/transactions/swap/review/SwapDetails.tsx index 50060130a86..cf6c8d69f98 100644 --- a/packages/uniswap/src/features/transactions/swap/review/SwapDetails.tsx +++ b/packages/uniswap/src/features/transactions/swap/review/SwapDetails.tsx @@ -252,7 +252,11 @@ function HeightAnimatorWrapper({ children }: { children: React.ReactNode }): JSX if (isMobileApp || isMobileWeb) { return <>{children} } else { - return {children} + return ( + + {children} + + ) } } diff --git a/packages/uniswap/src/features/transactions/swap/settings/configs/ProtocolPreference.tsx b/packages/uniswap/src/features/transactions/swap/settings/configs/ProtocolPreference.tsx index 8f13b3021f1..53313d1d404 100644 --- a/packages/uniswap/src/features/transactions/swap/settings/configs/ProtocolPreference.tsx +++ b/packages/uniswap/src/features/transactions/swap/settings/configs/ProtocolPreference.tsx @@ -157,7 +157,15 @@ export function getProtocolTitle(preference: FrontendSupportedProtocol, t: TFunc return ( + , @@ -249,7 +257,14 @@ function DefaultOptionDescription({ isDefault }: { isDefault: boolean }): JSX.El {showIncludesUniswapX && ( + , diff --git a/packages/uniswap/src/features/unichain/hooks/useUnichainBannerVisibility.ts b/packages/uniswap/src/features/unichain/hooks/useUnichainBannerVisibility.ts index 956cec09782..95ce10c39a1 100644 --- a/packages/uniswap/src/features/unichain/hooks/useUnichainBannerVisibility.ts +++ b/packages/uniswap/src/features/unichain/hooks/useUnichainBannerVisibility.ts @@ -1,7 +1,10 @@ import { useSelector } from 'react-redux' import { PollingInterval } from 'uniswap/src/constants/misc' import { useUniswapContext } from 'uniswap/src/contexts/UniswapContext' -import { selectHasDismissedUnichainColdBanner } from 'uniswap/src/features/behaviorHistory/selectors' +import { + selectHasDismissedUnichainColdBanner, + selectHasDismissedUnichainWarmBanner, +} from 'uniswap/src/features/behaviorHistory/selectors' import { UniverseChainId } from 'uniswap/src/features/chains/types' import { useSortedPortfolioBalances } from 'uniswap/src/features/dataApi/balances' import { FeatureFlags } from 'uniswap/src/features/gating/flags' @@ -19,6 +22,7 @@ export function useUnichainBannerVisibility(): { }) const unichainPromoEnabled = useFeatureFlag(FeatureFlags.UnichainPromo) const hasDismissedUnichainColdBanner = useSelector(selectHasDismissedUnichainColdBanner) + const hasDismissedUnichainWarmBanner = useSelector(selectHasDismissedUnichainWarmBanner) const unichainVisibleBalances = sortedBalancesData?.balances.filter((b) => b.currencyInfo.currency.chainId === UniverseChainId.Unichain) ?? [] @@ -28,6 +32,7 @@ export function useUnichainBannerVisibility(): { return { shouldShowUnichainBannerCold: unichainPromoEnabled && !hasDismissedUnichainColdBanner && !hasUnichainBalance, - shouldShowUnichainBannerWarm: unichainPromoEnabled && hasUnichainEth && !hasUnichainTokens, + shouldShowUnichainBannerWarm: + unichainPromoEnabled && !hasDismissedUnichainWarmBanner && hasUnichainEth && !hasUnichainTokens, } } diff --git a/packages/uniswap/src/i18n/locales/source/en-US.json b/packages/uniswap/src/i18n/locales/source/en-US.json index 594290711d8..f91da29e832 100644 --- a/packages/uniswap/src/i18n/locales/source/en-US.json +++ b/packages/uniswap/src/i18n/locales/source/en-US.json @@ -338,6 +338,7 @@ "common.dismiss": "Dismiss", "common.displaySettings": "Display settings", "common.dnsRegistrar": "DNS Registrar", + "common.donate": "Donate", "common.dontShowAgain": "Don’t show this again", "common.download": "Download", "common.downloadAppStore": "Download in the App Store", @@ -853,6 +854,7 @@ "fee.dynamic": "Dynamic fee", "fee.percentEarned": "The % you will earn in fees.", "fee.selectPercent": "{{pct}}% select", + "fee.selectPercentDescription": "{{pct}}% of liquidity selected this tier", "fee.tier": "Fee tier", "fee.tier.create": "Create fee tier", "fee.tier.create.button": "Create new fee tier", @@ -862,11 +864,11 @@ "fee.tier.dynamic": "Dynamic fee tier", "fee.tier.dynamic.create": "Creating dynamic fee tier", "fee.tier.dynamic.create.info": "You are about to create a pool with a dynamic fee tier. Before proceeding, please ensure that the selected hook supports dynamic fees.", + "fee.tier.highestTvl": "Highest TVL", "fee.tier.label": "The % you will earn in fees", "fee.tier.missing.description": "Can’t find the tier you’re looking for?", "fee.tier.new": "New tier", "fee.tier.percent.select": "{{percentage}} select", - "fee.tier.recommended": "Recommended", "fee.tier.recommended.description": "Recommended based on having the highest share of liquidity for the selected token pair.", "fee.tier.search": "Search or create other fee tiers", "fee.tier.search.short": "Search tiers", @@ -952,10 +954,6 @@ "home.explore.footer": "Tap “search” to explore more", "home.explore.title": "Explore tokens", "home.extension.error": "Error loading accounts", - "home.feed.empty.description": "When your favorited wallets makes transactions, they’ll appear here.", - "home.feed.empty.title": "No activity yet", - "home.feed.error": "Couldn’t load activity", - "home.feed.title": "Feed", "home.label.buy": "Buy", "home.label.for": "Buy/Sell", "home.label.receive": "Receive", @@ -1042,6 +1040,7 @@ "limits.price.label": "Limit price", "limits.selectSupportedTokens": "Select supported tokens", "liquidity.hooks": "Hooks on v4", + "liquidity.hooks.address.input": "Enter hook address", "liquidity.learnMoreLabel": "Learn about liquidity provision", "liquidity.notEnough.label": "Not enough liquidity to show accurate USD value.", "liquidity.provideOnProtocols": "Providing liquidity on different protocols", @@ -1416,6 +1415,7 @@ "pool.max.label": "Max:", "pool.maxPrice": "Max price", "pool.migrateLiquidity": "Migrate liquidity", + "pool.migrateLiquidityDisabledTooltip": "This chain does not support v4 liquidity pools.", "pool.migrateToV4": "Migrate to v4", "pool.min.label": "Min:", "pool.minPrice": "Min price", @@ -1439,6 +1439,8 @@ "pool.positions": "Positions", "pool.positions.title": "Your positions", "pool.positions.transaction.settings": "Transaction settings", + "pool.positions.usdValueUnavailable": "USD value unavailable", + "pool.positions.usdValueUnavailable.tooltip": "USD value is currently unavailable for this position. See position details for deposited token amounts.", "pool.priceRange": "Price range", "pool.rangeBadge.tooltip.outsideRange": "The price of this pool is outside of your selected range. Your position is not currently earning fees.", "pool.rangeBadge.tooltip.text": "Your position has 0 liquidity, and is not earning fees.", @@ -1494,15 +1496,17 @@ "position.currentValue": "Current position value", "position.deposit.description": "Specify the token amounts for your liquidity contribution.", "position.depositedCurrency": "Deposited {{currencySymbol}}", - "position.hook.disclaimer": "I understand the risks.", + "position.hook.disclaimer": "I understand the potential risks involved in adding this hook.", + "position.hook.donateWarning": "This flag may result in changes to fees earned.", "position.hook.liquidityWarning": "This flag can cause the pool to block the addition of new liquidity. Your transaction may revert.", "position.hook.removeWarning": "May cause your funds to be locked or block you from collecting fees.", - "position.hook.swapWarning": "This flag can allow sophisticated users to more easily leverage Just-In-Time liquidity resulting in lower fees earned.", - "position.hook.warningHeader": "High risk hook detected", - "position.hook.warningInfo": "We’ve identified potential risks with this hook. Please review the flags and verify that this is the hook you want to use before proceeding.", + "position.hook.swapWarning": "This flag may allow liquidity providers to more easily leverage Just-In-Time liquidity, which may result in lower fees earned.", + "position.hook.warningHeader": "Important: hook risks identified", + "position.hook.warningInfo": "We’ve identified potential risks with this hook. Please make sure that you understand how this hook works before deciding to proceed.", "position.initialPrice": "Initial price", "position.initialPrice.info": "Set the starting exchange rate between the two tokens you are providing.", "position.migrate.liquidity": "When migrating positions, you cannot change your token pair, but you can add a hook to enhance functionality.", + "position.migrate.v4unsupportedChain": "This chain is not supported for v4 pools.", "position.new": "New position", "position.new.protocol": "New {{protocol}} position", "position.noLiquidity": "Liquidity data not available.", @@ -1522,7 +1526,10 @@ "position.step.range": "Set price range", "position.step.select": "Select token pair and fees", "position.value": "Position value", - "position.valueUnavailable": "Position value is unavailable due to low liquidity.", + "position.valueUnavailable": "USD value is currently unavailable for this position. See position details for deposited token amounts.", + "position.wrapped.unwrap": "Unwrap {{wrappedToken}}", + "position.wrapped.warning": "{{nativeToken}} required for v4 pools", + "position.wrapped.warning.info": "Unwrap your {{wrappedToken}} and deposit {{nativeToken}} to provide more cost effective and efficient liquidity.", "position.your": "Your position", "positions.welcome": "Welcome to your positions", "positions.welcome.connect": "Connect your wallet to view your current positions.", @@ -1658,6 +1665,7 @@ "setting.recoveryPhrase.warning.screenshot.title": "Screenshots aren’t secure", "setting.recoveryPhrase.warning.view.message": "Anyone who knows your recovery phrase can access your wallet and funds.", "setting.recoveryPhrase.warning.view.title": "View this in a private place", + "settings.action.enableInSettings": "Enable in Settings", "settings.action.feedback": "Share feedback", "settings.action.help": "Get help", "settings.action.lock": "Lock wallet", @@ -1738,6 +1746,10 @@ "settings.setting.language.title": "Language", "settings.setting.notifications.row.activity.description": "Transfers, requests, and other activity", "settings.setting.notifications.row.activity.title": "Wallet Activity", + "settings.setting.notifications.row.priceAlerts.description": "Big price changes for favorited tokens", + "settings.setting.notifications.row.priceAlerts.title": "Price alerts", + "settings.setting.notifications.row.updates.description": "Recommendations and new features", + "settings.setting.notifications.row.updates.title": "Updates from Uniswap", "settings.setting.notifications.title": "Notifications", "settings.setting.password.title": "Change password", "settings.setting.privacy.analytics.description": "We use anonymous usage data to enhance your experience across Uniswap Labs products. When disabled, we only track errors and essential usage.", @@ -1750,11 +1762,10 @@ "settings.setting.wallet.action.editLabel": "Edit label", "settings.setting.wallet.action.editProfile": "Edit profile", "settings.setting.wallet.action.remove": "Remove wallet", - "settings.setting.wallet.connections.title": "Manage connections", + "settings.setting.wallet.connections.title": "Connections", "settings.setting.wallet.editLabel.description": "Labels are not public. They are stored locally and only visible to you.", "settings.setting.wallet.editLabel.save": "Save changes", "settings.setting.wallet.label": "Nickname", - "settings.setting.wallet.preferences.title": "Wallet preferences", "settings.setting.wallet.testnetMode.description": "This turns on testnets for developers to try out features and transactions without using real assets. Tokens on testnets do not hold any real value.", "settings.setting.wallet.testnetMode.title": "Testnet mode", "settings.switchNetwork.warning": "To use Uniswap on {{label}}, switch the network in your wallet’s settings.", @@ -1773,7 +1784,7 @@ "stats.fdv.description": "Fully diluted valuation (FDV) calculates the total market value assuming all tokens are in circulation.", "stats.marketCap": "Market cap", "stats.marketCap.description": "Market capitalization is the total market value of an asset’s circulating supply.", - "stats.tvl": "Total volume", + "stats.tvl": "Total value locked", "stats.tvl.description": "Total value locked (TVL) is the aggregate amount of the asset available across all Uniswap v3 liquidity pools.", "stats.volume.1d": "1 day volume", "stats.volume.1d.description": "1 day volume is the amount of the asset that has been traded on Uniswap v3 during the past 24 hours.", @@ -1930,6 +1941,8 @@ "swap.warning.networkFee.message": "This is the cost to process your transaction on the blockchain. Uniswap does not receive any share of these fees.", "swap.warning.networkFee.message.uniswapX": "This is the cost to process your transaction on the blockchain. Uniswap does not receive any share of these fees. UniswapX aggregates liquidity sources for better prices and gas free swaps.", "swap.warning.networkFee.wrap": "Wrap ETH", + "swap.warning.noQuotesFound.bridging.message": "No bridging quotes found. Try using the official bridge at this time.", + "swap.warning.noQuotesFound.title": "No quotes found", "swap.warning.noRoutesFound.message": "There are currently no routes available for your selected tokens. Please try a different pair or check again later.", "swap.warning.noRoutesFound.title": "No routes available", "swap.warning.offline.message": "You may have lost internet connection or the network may be down. Please check your internet connection and try again.", @@ -2233,12 +2246,17 @@ "transaction.warning.maxNative.title": "Low network token balance", "transaction.watcher.error.cancel": "Unable to cancel transaction", "transaction.watcher.error.status": "Error while checking transaction status", + "unichain.promotion.bridging.description": "Swap to Unichain", + "unichain.promotion.bridging.tooltip.description": "Bridge your ETH to get started on Unichain.", "unichain.promotion.cold.description": "Faster swaps. Lower fees. Unichain is the home for DeFi.", "unichain.promotion.cold.title": "Introducing Unichain", - "unichain.promotion.modal.description": "Faster swaps. Lower fees. Unichain is the home for cross-chain liquidity.", + "unichain.promotion.modal.description": "Faster swaps. Lower fees. Unichain is the home for cross‑chain liquidity.", "unichain.promotion.modal.detail.costs": "Lower costs for creating pools & managing positions.", "unichain.promotion.modal.detail.fees": "Save 95% on fees compared to Ethereum.", "unichain.promotion.modal.detail.instant": "Swap instantly", + "unichain.promotion.tooltip.description": "Faster swaps. Lower fees. Unichain is the home for cross‑chain liquidity.", + "unichain.promotion.tooltip.switch": "Switch to Unichain", + "unichain.promotion.tooltip.title": "Unichain is here", "unichain.promotion.warm.description": "Swap your favorite tokens faster and with lower gas costs.", "unichain.promotion.warm.title": "Start swapping on Unichain", "uniswapX.aggregatesLiquidity": " aggregates liquidity sources for better prices and gas free swaps.", @@ -2325,7 +2343,7 @@ "walletConnect.dapps.connection": "Connected to {{dappNameOrUrl}}", "walletConnect.dapps.empty.description": "Connect to an app by scanning a code via WalletConnect", "walletConnect.dapps.manage.empty.title": "No apps connected", - "walletConnect.dapps.manage.title": "Manage connections", + "walletConnect.dapps.manage.title": "Connections", "walletConnect.error.connection.message": "Uniswap Wallet currently supports {{chainNames}}. Please only use \"{{dappName}}\" on these chains", "walletConnect.error.connection.title": "Connection Error", "walletConnect.error.general.message": "There was an issue with WalletConnect. Please try again", diff --git a/packages/uniswap/src/i18n/locales/translations/pt-PT.json b/packages/uniswap/src/i18n/locales/translations/pt-PT.json index e966cf8290c..4f2fbf50562 100644 --- a/packages/uniswap/src/i18n/locales/translations/pt-PT.json +++ b/packages/uniswap/src/i18n/locales/translations/pt-PT.json @@ -762,7 +762,7 @@ "downloadApp.modal.getStarted.description": "Comece baixando a Uniswap Wallet, disponível para celular ou navegador.", "downloadApp.modal.getStarted.title": "Como começar a usar a Uniswap", "downloadApp.modal.signUp.description": "Comece baixando a Uniswap Wallet, disponível para celular ou navegador.", - "downloadApp.modal.signUp.description.embeddedWallet": "Crie uma conta abaixo ou baixe nossa carteira em segundos para começar a usar — disponível para celular e navegador.", + "downloadApp.modal.signUp.description.embeddedWallet": "Comece a usar em um instante inscrevendo-se abaixo ou baixando nossa carteira, disponível em seu smartphone ou navegador.", "downloadApp.modal.signUp.title": "Criar conta no Uniswap", "downloadApp.modal.uniswapProducts.subtitle": "Os produtos Uniswap funcionam muito bem juntos para criar a melhor experiência de on-chain.", "error.access.expiry": "Com isso, o Uniswap Protocol tem acesso ao seu token para negociações. Por questões de segurança, o acesso expira em 30 dias.", @@ -1302,7 +1302,7 @@ "onboarding.name.wallet.title": "Dê um nome à carteira", "onboarding.notification.permission.message": "Para receber notificações, ative as notificações da Uniswap Wallet nas configurações do seu dispositivo.", "onboarding.notification.permission.title": "Permissão de notificações", - "onboarding.notification.subtitle": "Fique por dentro do status das transações e das principais oscilações de preço dos seus tokens favoritos", + "onboarding.notification.subtitle": "Mantenha-se atualizado sobre o status das transações e as principais alterações de preço de seus tokens favoritos", "onboarding.notification.title": "Ativar notificações", "onboarding.passkey.account.protection": "Sua conta é protegida por sua senha de armazenamento segura.", "onboarding.passkey.biometric.scan": "Smartphone, tablet ou navegador: basta digitalizar sua biometria para se conectar.", diff --git a/packages/utilities/package.json b/packages/utilities/package.json index f8127297486..17df9fd49a9 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -10,7 +10,6 @@ "@datadog/browser-logs": "5.20.0", "@datadog/browser-rum": "5.23.3", "@datadog/mobile-react-native": "2.4.1", - "@datadog/mobile-react-native-apollo-client": "2.4.3", "@ethersproject/abstract-signer": "5.7.0", "@ethersproject/address": "5.7.0", "@ethersproject/constants": "5.7.0", @@ -21,12 +20,13 @@ "@sentry/core": "7.80.0", "@sentry/react": "7.80.0", "@uniswap/analytics": "1.7.0", - "@uniswap/analytics-events": "2.40.0", - "@uniswap/sdk-core": "7.1.0", + "@uniswap/analytics-events": "2.41.0", + "@uniswap/sdk-core": "7.5.0", "aws-appsync-auth-link": "3.0.7", "aws-appsync-subscription-link": "3.1.3", "dayjs": "1.11.7", "expo-localization": "14.8.3", + "graphql": "16.6.0", "jsbi": "3.2.5", "promise": "8.3.0", "react": "18.2.0", diff --git a/packages/utilities/src/logger/datadogLink.native.ts b/packages/utilities/src/logger/datadogLink.native.ts index 3f6f1088ecf..aeab5691878 100644 --- a/packages/utilities/src/logger/datadogLink.native.ts +++ b/packages/utilities/src/logger/datadogLink.native.ts @@ -1,6 +1,68 @@ +import type { Operation } from '@apollo/client' import { ApolloLink } from '@apollo/client' -import { DatadogLink } from '@datadog/mobile-react-native-apollo-client' +import { + DATADOG_GRAPH_QL_OPERATION_NAME_HEADER, + DATADOG_GRAPH_QL_OPERATION_TYPE_HEADER, +} from '@datadog/mobile-react-native' +import type { DefinitionNode, OperationDefinitionNode } from 'graphql' export const getDatadogApolloLink = (): ApolloLink => { return new DatadogLink() } +/** + * Based on https://github.com/DataDog/dd-sdk-reactnative/blob/75a7d291ebe477a58e9d1239883b2b6b45d4117d/packages/react-native-apollo-client/src/DatadogLink.ts + * + * Some of our graphql requests were failing because the headers were too large. + * To fix this, we copy/pasted the DatadogLink and removed the graphql variables header. + * + * We're still confused about why DD needs to inject this data in the header of every request, + * so ideally we could find a better way of adding this data to RUM to avoid increasing our network requests size. + */ +class DatadogLink extends ApolloLink { + constructor() { + super((operation, forward) => { + const operationName = getOperationName(operation) + const operationType = getOperationType(operation) + + operation.setContext(({ headers = {} }) => { + const newHeaders: Record = { + ...headers, + } + + newHeaders[DATADOG_GRAPH_QL_OPERATION_TYPE_HEADER] = operationType + newHeaders[DATADOG_GRAPH_QL_OPERATION_NAME_HEADER] = operationName + + return { + headers: newHeaders, + } + }) + + return forward(operation) + }) + } +} + +// Below helpers copy/pasted from https://github.com/DataDog/dd-sdk-reactnative/blob/75a7d291ebe477a58e9d1239883b2b6b45d4117d/packages/react-native-apollo-client/src/helpers.ts + +export const getOperationName = (operation: Operation): string | null => { + if (operation.operationName) { + return operation.operationName + } + return null +} + +const getOperationDefinitionNode = (definition: DefinitionNode): definition is OperationDefinitionNode => { + return definition.kind === 'OperationDefinition' && !!definition.operation +} + +export const getOperationType = (operation: Operation): 'query' | 'mutation' | 'subscription' | null => { + try { + return ( + operation.query.definitions.filter(getOperationDefinitionNode).map((operationDefinitionNode) => { + return operationDefinitionNode.operation + })[0] || null + ) + } catch (e) { + return null + } +} diff --git a/packages/utilities/src/logger/datadogLink.web.ts b/packages/utilities/src/logger/datadogLink.web.ts new file mode 100644 index 00000000000..f886ac54804 --- /dev/null +++ b/packages/utilities/src/logger/datadogLink.web.ts @@ -0,0 +1,7 @@ +import { ApolloLink } from '@apollo/client' +import { NotImplementedError } from 'utilities/src/errors' + +// This is currently only used on native. No implementation exists for web. +export const getDatadogApolloLink = (): ApolloLink => { + throw new NotImplementedError('getDatadogApolloLink') +} diff --git a/packages/wallet/jest-setup.js b/packages/wallet/jest-setup.js index 2a0015f7476..0b6a994ee2a 100644 --- a/packages/wallet/jest-setup.js +++ b/packages/wallet/jest-setup.js @@ -16,13 +16,6 @@ jest.mock('uniswap/src/features/gas/hooks', () => ({ useShadowGasStrategies: jest.fn().mockReturnValue([]), })) - -jest.mock('react-native-safe-area-context', () => ({ - useSafeAreaInsets: jest.fn().mockImplementation(() => ({})), - useSafeAreaFrame: jest.fn().mockImplementation(() => ({})), - SafeAreaProvider: jest.fn(({ children }) => children), -})) - // Use web unicon jest.mock('ui/src/components/Unicon', () => { return jest.requireActual('ui/src/components/Unicon/index.web.tsx') diff --git a/packages/wallet/package.json b/packages/wallet/package.json index c1f05a4b502..80065d15a3a 100644 --- a/packages/wallet/package.json +++ b/packages/wallet/package.json @@ -24,13 +24,13 @@ "@scure/bip32": "1.3.2", "@sentry/types": "7.80.0", "@shopify/flash-list": "1.6.3", - "@uniswap/analytics-events": "2.40.0", + "@uniswap/analytics-events": "2.41.0", "@uniswap/permit2-sdk": "1.3.0", - "@uniswap/router-sdk": "1.18.0", - "@uniswap/sdk-core": "7.1.0", + "@uniswap/router-sdk": "1.21.0", + "@uniswap/sdk-core": "7.5.0", "@uniswap/uniswapx-sdk": "3.0.0-beta.1", - "@uniswap/universal-router-sdk": "4.10.0", - "@uniswap/v3-sdk": "3.21.0", + "@uniswap/universal-router-sdk": "4.14.0", + "@uniswap/v3-sdk": "3.24.0", "apollo3-cache-persist": "0.14.1", "axios": "1.6.5", "dayjs": "1.11.7", @@ -49,7 +49,7 @@ "react-native-context-menu-view": "1.15.0", "react-native-fast-image": "8.6.3", "react-native-gesture-handler": "2.19.0", - "react-native-image-picker": "7.2.3", + "react-native-image-picker": "7.0.1", "react-native-localize": "2.2.6", "react-native-reanimated": "3.15.0", "react-native-restart": "0.0.27", diff --git a/packages/wallet/src/data/onRampAuthLink.ts b/packages/wallet/src/data/onRampAuthLink.ts index af958384fab..b6af35a5415 100644 --- a/packages/wallet/src/data/onRampAuthLink.ts +++ b/packages/wallet/src/data/onRampAuthLink.ts @@ -1,23 +1,40 @@ import { ApolloLink } from '@apollo/client' import { setContext } from '@apollo/client/link/context' import { GQLQueries } from 'uniswap/src/data/graphql/uniswap-data-api/queries' +import { AccountType } from 'uniswap/src/features/accounts/types' +import { logger } from 'utilities/src/logger/logger' import { ON_RAMP_AUTH_MAX_LIMIT, createOnRampTransactionsAuth } from 'wallet/src/data/utils' import { Account } from 'wallet/src/features/wallet/accounts/types' import { SignerManager } from 'wallet/src/features/wallet/signing/SignerManager' export function getOnRampAuthLink(accounts: Record, signerManager: SignerManager): ApolloLink { - return setContext((operation, prevContext) => { + return setContext(async (operation, prevContext) => { const account = accounts[operation.variables?.address] - if (!account || operation.operationName !== GQLQueries.TransactionList) { + + if (account?.type !== AccountType.SignerMnemonic || operation.operationName !== GQLQueries.TransactionList) { return prevContext } - return createOnRampTransactionsAuth(ON_RAMP_AUTH_MAX_LIMIT, account, signerManager).then((onRampAuth) => { + try { + const onRampAuth = await createOnRampTransactionsAuth(ON_RAMP_AUTH_MAX_LIMIT, account, signerManager) + return { ...prevContext, onRampAuth, } - }) + } catch (error) { + logger.error(error, { + tags: { + file: 'onRampAuthLink.ts', + function: 'getOnRampAuthLink', + }, + extra: { + address: account.address, + }, + }) + + return prevContext + } }).concat((operation, forward) => { if (operation.getContext().onRampAuth) { operation.variables = { diff --git a/packages/wallet/src/features/activity/useActivityData.tsx b/packages/wallet/src/features/activity/hooks/useActivityData.tsx similarity index 98% rename from packages/wallet/src/features/activity/useActivityData.tsx rename to packages/wallet/src/features/activity/hooks/useActivityData.tsx index bba745f2a4e..75cfc3770fe 100644 --- a/packages/wallet/src/features/activity/useActivityData.tsx +++ b/packages/wallet/src/features/activity/hooks/useActivityData.tsx @@ -9,7 +9,7 @@ import { useHideSpamTokensSetting } from 'uniswap/src/features/settings/hooks' import { TransactionDetails } from 'uniswap/src/features/transactions/types/transactionDetails' import { TransactionState } from 'uniswap/src/features/transactions/types/transactionState' import { useWalletNavigation } from 'wallet/src/contexts/WalletNavigationContext' -import { useFormattedTransactionDataForActivity } from 'wallet/src/features/activity/hooks' +import { useFormattedTransactionDataForActivity } from 'wallet/src/features/activity/hooks/useFormattedTransactionDataForActivity' import { LoadingItem, SectionHeader } from 'wallet/src/features/activity/utils' import { SwapSummaryCallbacks } from 'wallet/src/features/transactions/SummaryCards/types' import { ActivityItemRenderer, generateActivityItemRenderer } from 'wallet/src/features/transactions/SummaryCards/utils' diff --git a/packages/wallet/src/features/activity/hooks.ts b/packages/wallet/src/features/activity/hooks/useFormattedTransactionDataForActivity.ts similarity index 65% rename from packages/wallet/src/features/activity/hooks.ts rename to packages/wallet/src/features/activity/hooks/useFormattedTransactionDataForActivity.ts index 270ad7746ff..dc5a6e4591c 100644 --- a/packages/wallet/src/features/activity/hooks.ts +++ b/packages/wallet/src/features/activity/hooks/useFormattedTransactionDataForActivity.ts @@ -2,11 +2,9 @@ import { ApolloError, NetworkStatus, QueryHookOptions } from '@apollo/client' import isEqual from 'lodash/isEqual' import { useCallback, useMemo, useRef } from 'react' import { useSelector } from 'react-redux' -import { PollingInterval } from 'uniswap/src/constants/misc' import { TransactionListQuery, TransactionListQueryVariables, - useFeedTransactionListQuery, useTransactionListQuery, } from 'uniswap/src/data/graphql/uniswap-data-api/__generated__/types-and-hooks' import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains' @@ -19,7 +17,6 @@ import { isNonPollingRequestInFlight } from 'wallet/src/data/utils' import { LoadingItem, SectionHeader, isLoadingItem, isSectionHeader } from 'wallet/src/features/activity/utils' import { formatTransactionsByDate, - parseDataResponseToFeedTransactionDetails, parseDataResponseToTransactionDetails, } from 'wallet/src/features/transactions/history/utils' import { useMergeLocalAndRemoteTransactions } from 'wallet/src/features/transactions/hooks' @@ -28,104 +25,6 @@ import { useAccounts } from 'wallet/src/features/wallet/hooks' const LOADING_ITEM = (index: number): LoadingItem => ({ itemType: 'LOADING', id: index }) const LOADING_DATA = [LOADING_ITEM(1), LOADING_ITEM(2), LOADING_ITEM(3), LOADING_ITEM(4)] -export function useFormattedTransactionDataForFeed( - addresses: Address[], - hideSpamTokens: boolean, -): { - hasData: boolean - isLoading: boolean - isError: ApolloError | undefined - sectionData: Array | undefined - keyExtractor: (item: TransactionDetails | SectionHeader | LoadingItem) => string - onRetry: () => void -} { - const { gqlChains } = useEnabledChains() - - const { - refetch, - networkStatus, - loading: requestLoading, - data, - error: requestError, - } = useFeedTransactionListQuery({ - variables: { addresses, chains: gqlChains }, - notifyOnNetworkStatusChange: true, - // TODO: determine how often to poll for feed - currently slow - pollInterval: PollingInterval.Slow, - }) - - const keyExtractor = useCallback((info: TransactionDetails | SectionHeader | LoadingItem) => { - // for loading items, use the index as the key - if (isLoadingItem(info)) { - return `feed-${info.id}` - } - // for section headers, use the title as the key - if (isSectionHeader(info)) { - return `feed-${info.title}` - } - // for transactions, use the transaction hash as the key - return info.id - }, []) - - const transactions = useMemo(() => { - if (!data) { - return undefined - } - - return parseDataResponseToFeedTransactionDetails(data, hideSpamTokens) - }, [data, hideSpamTokens]) - - // Format transactions for section list - const localizedDayjs = useLocalizedDayjs() - const { pending, last24hTransactionList, priorByMonthTransactionList } = useMemo( - () => formatTransactionsByDate(transactions, localizedDayjs), - [transactions, localizedDayjs], - ) - - const hasTransactions = transactions && transactions.length > 0 - - const hasData = !!data?.portfolios?.[0]?.assetActivities - const isLoading = isNonPollingRequestInFlight(networkStatus) - const isError = usePersistedError(requestLoading, requestError) - - // show loading if no data and fetching, or refetching when there is error (for UX when "retry" is clicked). - const showLoading = (!hasData && isLoading) || (Boolean(isError) && networkStatus === NetworkStatus.refetch) - - const sectionData = useMemo(() => { - if (showLoading) { - return LOADING_DATA - } - - if (!hasTransactions) { - return undefined - } - - return [ - ...pending, - ...last24hTransactionList, - // for each month prior, detect length and render if includes transactions - ...Object.keys(priorByMonthTransactionList).reduce( - (accum: (TransactionDetails | SectionHeader | LoadingItem)[], month) => { - const transactionList = priorByMonthTransactionList[month] - if (transactionList && transactionList.length > 0) { - accum.push({ itemType: 'HEADER', title: month }, ...transactionList) - } - return accum - }, - [], - ), - ] - }, [showLoading, hasTransactions, pending, last24hTransactionList, priorByMonthTransactionList]) - - const onRetry = useCallback(async () => { - await refetch({ - addresses, - }) - }, [addresses, refetch]) - - return { onRetry, sectionData, hasData, isError, isLoading, keyExtractor } -} - export function useFormattedTransactionDataForActivity({ address, hideSpamTokens, diff --git a/packages/wallet/src/features/fiatOnRamp/api.ts b/packages/wallet/src/features/fiatOnRamp/api.ts index c321f9f5beb..be70ca317af 100644 --- a/packages/wallet/src/features/fiatOnRamp/api.ts +++ b/packages/wallet/src/features/fiatOnRamp/api.ts @@ -23,9 +23,7 @@ export async function fetchFORTransaction( forceFetch: boolean, activeAccountAddress: Address | null, ): Promise { - const isOffRamp = - previousTransactionDetails.typeInfo.type === TransactionType.LocalOffRamp || - previousTransactionDetails.typeInfo.type === TransactionType.OffRampSale + const isOffRamp = previousTransactionDetails.typeInfo.type === TransactionType.LocalOffRamp const isRecent = dayjs(previousTransactionDetails.addedTime).isAfter( dayjs().subtract(FIAT_ONRAMP_FORCE_FETCH_TX_TIMEOUT, 'ms'), ) diff --git a/packages/wallet/src/features/transactions/SummaryCards/DetailsModal/TransactionDetailsInfoRows.tsx b/packages/wallet/src/features/transactions/SummaryCards/DetailsModal/TransactionDetailsInfoRows.tsx index 8d8dbd3ff85..d7d83281c17 100644 --- a/packages/wallet/src/features/transactions/SummaryCards/DetailsModal/TransactionDetailsInfoRows.tsx +++ b/packages/wallet/src/features/transactions/SummaryCards/DetailsModal/TransactionDetailsInfoRows.tsx @@ -3,6 +3,7 @@ import { useTranslation } from 'react-i18next' import { useDispatch } from 'react-redux' import { Flex, + FlexProps, Loader, Text, TouchableArea, @@ -49,16 +50,18 @@ const UNISWAP_FEE = 0.0025 export function TransactionDetailsInfoRows({ transactionDetails, isShowingMore, + pt, onClose, }: { transactionDetails: TransactionDetails isShowingMore: boolean + pt?: FlexProps['pt'] onClose: () => void }): JSX.Element { const rows = useTransactionDetailsInfoRows(transactionDetails, isShowingMore, onClose) return ( - + {rows} ) diff --git a/packages/wallet/src/features/transactions/SummaryCards/DetailsModal/TransactionDetailsModal.tsx b/packages/wallet/src/features/transactions/SummaryCards/DetailsModal/TransactionDetailsModal.tsx index 9b3b4de9bba..9ac7ad687c5 100644 --- a/packages/wallet/src/features/transactions/SummaryCards/DetailsModal/TransactionDetailsModal.tsx +++ b/packages/wallet/src/features/transactions/SummaryCards/DetailsModal/TransactionDetailsModal.tsx @@ -219,6 +219,7 @@ export function TransactionDetailsModal({ {buttons.length > 0 && ( diff --git a/packages/wallet/src/features/transactions/SummaryCards/DetailsModal/TransactionParticipantRow.web.tsx b/packages/wallet/src/features/transactions/SummaryCards/DetailsModal/TransactionParticipantRow.web.tsx index 9e2a011f829..83701b26e30 100644 --- a/packages/wallet/src/features/transactions/SummaryCards/DetailsModal/TransactionParticipantRow.web.tsx +++ b/packages/wallet/src/features/transactions/SummaryCards/DetailsModal/TransactionParticipantRow.web.tsx @@ -1,7 +1,7 @@ import { useTranslation } from 'react-i18next' import { useDispatch } from 'react-redux' import { Flex, Popover } from 'ui/src' -import { ExternalLink } from 'ui/src/components/icons' +import { CopyAlt } from 'ui/src/components/icons' import { pushNotification } from 'uniswap/src/features/notifications/slice' import { AppNotificationType, CopyNotificationType } from 'uniswap/src/features/notifications/types' import { setClipboard } from 'uniswap/src/utils/clipboard' @@ -28,17 +28,24 @@ export function TransactionParticipantRow({ address, isSend = false }: Transacti const options: MenuContentItem[] = [ { - label: 'Copy address', + label: t('common.copy.address'), onPress: onCopyAddress, - Icon: !isMobileApp ? ExternalLink : undefined, + Icon: !isMobileApp ? CopyAlt : undefined, iconPlacement: 'left', iconTextGap: '$spacing8', + iconProps: { + size: '$icon.16', + }, + textProps: { + variant: 'body4', + pr: '$spacing16', + }, }, ] return ( - + @@ -52,7 +59,7 @@ export function TransactionParticipantRow({ address, isSend = false }: Transacti }, ]} borderColor="$surface3" - borderRadius="$rounded16" + borderRadius="$rounded12" borderWidth="$spacing1" disableRemoveScroll={false} enterStyle={{ y: -10, opacity: 0 }} @@ -60,7 +67,7 @@ export function TransactionParticipantRow({ address, isSend = false }: Transacti p="$none" > - + diff --git a/packages/wallet/src/features/transactions/SummaryCards/SummaryItems/OffRampTransferSummaryItem.tsx b/packages/wallet/src/features/transactions/SummaryCards/SummaryItems/OffRampTransferSummaryItem.tsx index 0b3e863d132..ac613d0fa33 100644 --- a/packages/wallet/src/features/transactions/SummaryCards/SummaryItems/OffRampTransferSummaryItem.tsx +++ b/packages/wallet/src/features/transactions/SummaryCards/SummaryItems/OffRampTransferSummaryItem.tsx @@ -29,7 +29,7 @@ export function OffRampTransferSummaryItem({ state, setHasBalanceOrActivity: (state, action: PayloadAction<{ address: Address; hasBalanceOrActivity: boolean }>) => { const { address, hasBalanceOrActivity } = action.payload - const account = state.accounts[address] + const id = getValidAddress(address, true) + if (!id) { + logger.error('Unexpected call to `setHasBalanceOrActivity` with invalid `address`', { + extra: { payload: action.payload }, + tags: { file: 'wallet/slice.ts', function: 'setHasBalanceOrActivity' }, + }) + return + } + const account = state.accounts[id] if (account) { account.hasBalanceOrActivity = hasBalanceOrActivity } diff --git a/yarn.lock b/yarn.lock index 955bd9c5a14..ab81391add0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3648,18 +3648,6 @@ __metadata: languageName: node linkType: hard -"@datadog/mobile-react-native-apollo-client@npm:2.4.3": - version: 2.4.3 - resolution: "@datadog/mobile-react-native-apollo-client@npm:2.4.3" - peerDependencies: - "@apollo/client": ">=3.0" - "@datadog/mobile-react-native": ^2.0.1 - react: ">=16.13.1" - react-native: ">=0.63.4 <1.0" - checksum: 1e90d77da2a82cd51436958b6ea5eb9354da386249d5c8f03615be7c866286e8a4b74da5d60b5441c85180f2a77bf43f3f290a4de22dbc8733b3e8c6c4cfa26d - languageName: node - linkType: hard - "@datadog/mobile-react-native@npm:2.4.1": version: 2.4.1 resolution: "@datadog/mobile-react-native@npm:2.4.1" @@ -16193,12 +16181,12 @@ __metadata: languageName: node linkType: hard -"@types/react-scroll-sync@npm:0.8.7": - version: 0.8.7 - resolution: "@types/react-scroll-sync@npm:0.8.7" +"@types/react-scroll-sync@npm:0.9.0": + version: 0.9.0 + resolution: "@types/react-scroll-sync@npm:0.9.0" dependencies: "@types/react": "*" - checksum: e147ff4588d3b97c17ba5b3f683ea0baf7514189a9ad6e2ef24eb2f92b7af18017698099c993b704c74683aaac1fa711e17ba2088a4435181132b02b74812e85 + checksum: 4302b1c5eee01761903873926ce097ede0c04b781aaad58fd6302697676046d494750cb9b40b657b76c87836ad52f497784f0160b29520db3390be9d490ecc65 languageName: node linkType: hard @@ -16881,10 +16869,10 @@ __metadata: languageName: node linkType: hard -"@uniswap/analytics-events@npm:2.40.0": - version: 2.40.0 - resolution: "@uniswap/analytics-events@npm:2.40.0" - checksum: c8eb76aa1566c382cd54f156a54b951b7ea636f9dfefff128da74dc5d3ec60a50fe1734866475f4dcc5d1339e485e7d2bf1540d1c14f75182681cb506c72e650 +"@uniswap/analytics-events@npm:2.41.0": + version: 2.41.0 + resolution: "@uniswap/analytics-events@npm:2.41.0" + checksum: 552f89113b75a09f8ff8332c823363888f59cc2521eb5f4007f87cf931b7121cd057c2450a1a06152116a9353de295d0ffdd2c4b29c56d0bb7b9b497fc5a1f53 languageName: node linkType: hard @@ -16999,12 +16987,12 @@ __metadata: "@types/redux-persist-webextension-storage": 1.0.3 "@types/ua-parser-js": 0.7.31 "@types/uuid": 9.0.1 - "@uniswap/analytics-events": 2.40.0 + "@uniswap/analytics-events": 2.41.0 "@uniswap/eslint-config": "workspace:^" "@uniswap/uniswapx-sdk": 3.0.0-beta.1 - "@uniswap/universal-router-sdk": 4.10.0 - "@uniswap/v3-sdk": 3.21.0 - "@uniswap/v4-sdk": 1.15.0 + "@uniswap/universal-router-sdk": 4.14.0 + "@uniswap/v3-sdk": 3.24.0 + "@uniswap/v4-sdk": 1.18.0 "@welldone-software/why-did-you-render": 8.0.1 clean-webpack-plugin: 4.0.0 concurrently: 8.2.2 @@ -17126,7 +17114,7 @@ __metadata: "@types/react": 18.0.38 "@types/react-dom": 18.2.15 "@types/react-redux": 7.1.30 - "@types/react-scroll-sync": 0.8.7 + "@types/react-scroll-sync": 0.9.0 "@types/react-table": 7.7.12 "@types/react-virtualized-auto-sizer": 1.0.0 "@types/react-window": 1.8.2 @@ -17138,7 +17126,7 @@ __metadata: "@types/wcag-contrast": 3.0.0 "@types/xml2js": 0.4.14 "@uniswap/analytics": 1.7.0 - "@uniswap/analytics-events": 2.40.0 + "@uniswap/analytics-events": 2.41.0 "@uniswap/client-explore": 0.0.14 "@uniswap/client-pools": 0.0.12 "@uniswap/default-token-list": 11.19.0 @@ -17147,19 +17135,19 @@ __metadata: "@uniswap/merkle-distributor": 1.0.1 "@uniswap/permit2-sdk": 1.3.0 "@uniswap/redux-multicall": 1.1.8 - "@uniswap/router-sdk": 1.18.0 - "@uniswap/sdk-core": 7.1.0 + "@uniswap/router-sdk": 1.21.0 + "@uniswap/sdk-core": 7.5.0 "@uniswap/smart-order-router": 3.17.3 "@uniswap/token-lists": 1.0.0-beta.33 "@uniswap/uniswapx-sdk": 3.0.0-beta.1 - "@uniswap/universal-router-sdk": 4.10.0 + "@uniswap/universal-router-sdk": 4.14.0 "@uniswap/v2-core": 1.0.1 "@uniswap/v2-periphery": 1.1.0-beta.0 - "@uniswap/v2-sdk": 4.9.0 + "@uniswap/v2-sdk": 4.13.0 "@uniswap/v3-core": 1.0.1 "@uniswap/v3-periphery": 1.4.4 - "@uniswap/v3-sdk": 3.21.0 - "@uniswap/v4-sdk": 1.15.0 + "@uniswap/v3-sdk": 3.24.0 + "@uniswap/v4-sdk": 1.18.0 "@vanilla-extract/css": 1.14.0 "@vanilla-extract/dynamic": 2.1.0 "@vanilla-extract/jest-transform": 1.1.1 @@ -17377,11 +17365,11 @@ __metadata: "@testing-library/react-native": 11.5.0 "@types/redux-mock-store": 1.0.6 "@uniswap/analytics": 1.7.0 - "@uniswap/analytics-events": 2.40.0 + "@uniswap/analytics-events": 2.41.0 "@uniswap/client-explore": 0.0.14 "@uniswap/eslint-config": "workspace:^" "@uniswap/ethers-rs-mobile": 0.0.5 - "@uniswap/sdk-core": 7.1.0 + "@uniswap/sdk-core": 7.5.0 "@walletconnect/core": 2.17.1 "@walletconnect/react-native-compat": 2.17.1 "@walletconnect/types": 2.17.1 @@ -17440,7 +17428,7 @@ __metadata: react-native-gesture-handler: 2.19.0 react-native-get-random-values: 1.8.0 react-native-image-colors: 1.5.2 - react-native-image-picker: 7.2.3 + react-native-image-picker: 7.0.1 react-native-localize: 2.2.6 react-native-markdown-display: 7.0.0-alpha.2 react-native-mmkv: 2.10.1 @@ -17502,23 +17490,23 @@ __metadata: languageName: node linkType: hard -"@uniswap/router-sdk@npm:1.18.0": - version: 1.18.0 - resolution: "@uniswap/router-sdk@npm:1.18.0" +"@uniswap/router-sdk@npm:1.21.0": + version: 1.21.0 + resolution: "@uniswap/router-sdk@npm:1.21.0" dependencies: "@ethersproject/abi": ^5.5.0 - "@uniswap/sdk-core": ^7.1.0 + "@uniswap/sdk-core": ^7.5.0 "@uniswap/swap-router-contracts": ^1.3.0 - "@uniswap/v2-sdk": ^4.9.0 - "@uniswap/v3-sdk": ^3.21.0 - "@uniswap/v4-sdk": ^1.15.0 - checksum: b715c91be8653697251cca6c27054e4a2c1edfd074c93205a9b320ffa16de4afb34a78822485aa72964d4c8f1f1bb2af7ffba0a3c5daf116b57ec8a56fd0608b + "@uniswap/v2-sdk": ^4.13.0 + "@uniswap/v3-sdk": ^3.24.0 + "@uniswap/v4-sdk": ^1.18.0 + checksum: 44544b912e1b7fa00de41b001ad3165c1359eaeb599de983b362b02dc8510af71f73f67fbe0ae18ef3faa761af69c9be7478e5af21e040b91f50647ddaa74ba4 languageName: node linkType: hard -"@uniswap/sdk-core@npm:7.1.0": - version: 7.1.0 - resolution: "@uniswap/sdk-core@npm:7.1.0" +"@uniswap/sdk-core@npm:7.5.0": + version: 7.5.0 + resolution: "@uniswap/sdk-core@npm:7.5.0" dependencies: "@ethersproject/address": ^5.0.2 "@ethersproject/bytes": ^5.7.0 @@ -17529,7 +17517,7 @@ __metadata: jsbi: ^3.1.4 tiny-invariant: ^1.1.0 toformat: ^2.0.0 - checksum: 6c307c0a30e778c0a9f4e8064751442c9f651eeca2f49148393c89f8daf581119b439c3a19d7a90805d68c8525bbdf33a491f4c25b64496682c648d3fe525805 + checksum: 0d235ef1f2463e4642ae4b73216dcdc73490bfdd10d3007e3660e61346c5f6f23a28c15cb04ef479a7b3d6b6a665a0c000da081cdd1724737c5fa40b02211d64 languageName: node linkType: hard @@ -17599,23 +17587,23 @@ __metadata: languageName: node linkType: hard -"@uniswap/universal-router-sdk@npm:4.10.0": - version: 4.10.0 - resolution: "@uniswap/universal-router-sdk@npm:4.10.0" +"@uniswap/universal-router-sdk@npm:4.14.0": + version: 4.14.0 + resolution: "@uniswap/universal-router-sdk@npm:4.14.0" dependencies: "@openzeppelin/contracts": 4.7.0 "@uniswap/permit2-sdk": ^1.3.0 - "@uniswap/router-sdk": ^1.18.0 - "@uniswap/sdk-core": ^7.1.0 + "@uniswap/router-sdk": ^1.21.0 + "@uniswap/sdk-core": ^7.5.0 "@uniswap/universal-router": 2.0.0-beta.2 "@uniswap/v2-core": ^1.0.1 - "@uniswap/v2-sdk": ^4.9.0 + "@uniswap/v2-sdk": ^4.13.0 "@uniswap/v3-core": 1.0.0 - "@uniswap/v3-sdk": ^3.21.0 - "@uniswap/v4-sdk": ^1.15.0 + "@uniswap/v3-sdk": ^3.24.0 + "@uniswap/v4-sdk": ^1.18.0 bignumber.js: ^9.0.2 ethers: ^5.7.0 - checksum: 6382d60baf850df745bb57bb70265a57127a4bf2c51e04425db9ee0e273f88e9f29537b289d03e7efae1b363daa213944955daea9de00bae5f22525161cce301 + checksum: dac2c055b05d8bbe8b00eec7bea376c92b80898ce75ae45f39455bd11d302251752d8a501e7b115324a9b81a02e677841da7e83e9c3331e02454c93da00c4e58 languageName: node linkType: hard @@ -17681,16 +17669,16 @@ __metadata: languageName: node linkType: hard -"@uniswap/v2-sdk@npm:4.9.0": - version: 4.9.0 - resolution: "@uniswap/v2-sdk@npm:4.9.0" +"@uniswap/v2-sdk@npm:4.13.0": + version: 4.13.0 + resolution: "@uniswap/v2-sdk@npm:4.13.0" dependencies: "@ethersproject/address": ^5.0.2 "@ethersproject/solidity": ^5.0.9 - "@uniswap/sdk-core": ^7.1.0 + "@uniswap/sdk-core": ^7.5.0 tiny-invariant: ^1.1.0 tiny-warning: ^1.0.3 - checksum: 2612f8c8658ceee6856860674d7c1d01fa93501d1e6aef35c9e62746355c4838502b075a7def7e967f08932df117d48528377517c5d2eeab7a48d4a46711b147 + checksum: 17f8a26d86a2a1887991281865bbfe0c988f2a70dee685ec165f141bfb58089654990a41a5a41f1a85c24523b062cbfee958abc1f007b073a8631fc7c6548aa7 languageName: node linkType: hard @@ -17721,19 +17709,19 @@ __metadata: languageName: node linkType: hard -"@uniswap/v3-sdk@npm:3.21.0, @uniswap/v3-sdk@npm:^3.10.0, @uniswap/v3-sdk@npm:^3.11.0, @uniswap/v3-sdk@npm:^3.21.0": - version: 3.21.0 - resolution: "@uniswap/v3-sdk@npm:3.21.0" +"@uniswap/v3-sdk@npm:3.24.0, @uniswap/v3-sdk@npm:^3.10.0, @uniswap/v3-sdk@npm:^3.11.0, @uniswap/v3-sdk@npm:^3.24.0": + version: 3.24.0 + resolution: "@uniswap/v3-sdk@npm:3.24.0" dependencies: "@ethersproject/abi": ^5.5.0 "@ethersproject/solidity": ^5.0.9 - "@uniswap/sdk-core": ^7.1.0 + "@uniswap/sdk-core": ^7.5.0 "@uniswap/swap-router-contracts": ^1.3.0 "@uniswap/v3-periphery": ^1.1.1 "@uniswap/v3-staker": 1.0.0 tiny-invariant: ^1.1.0 tiny-warning: ^1.0.3 - checksum: 252b6b4f53cad00147542f722cdd5bd7cf42085480c984e56fa3b02321b5fc41f866783d2be783020e9ee9b385510467656c55a2256889fe31092fec1f9ec7d8 + checksum: 001e332e83e784ec2c192629ec40c0f875bfa1e2e76bd6cbb2aa6755b4b9d2912d0870dd84447451acf4bee875aae9846dacd238258607d244e11766ce6c1ab4 languageName: node linkType: hard @@ -17748,16 +17736,16 @@ __metadata: languageName: node linkType: hard -"@uniswap/v4-sdk@npm:1.15.0, @uniswap/v4-sdk@npm:^1.15.0": - version: 1.15.0 - resolution: "@uniswap/v4-sdk@npm:1.15.0" +"@uniswap/v4-sdk@npm:1.18.0, @uniswap/v4-sdk@npm:^1.18.0": + version: 1.18.0 + resolution: "@uniswap/v4-sdk@npm:1.18.0" dependencies: "@ethersproject/solidity": ^5.0.9 - "@uniswap/sdk-core": ^7.1.0 - "@uniswap/v3-sdk": 3.21.0 + "@uniswap/sdk-core": ^7.5.0 + "@uniswap/v3-sdk": 3.24.0 tiny-invariant: ^1.1.0 tiny-warning: ^1.0.3 - checksum: 8541dcaec654fc6dd2c0d4ce61e1858df5e07577349678e6a66c4f1b582cde316c5c036b2d8658ba11708633f9269c59bd24a6f460c1d7d7e5e708c7e09a45dc + checksum: 37d2ebd3781eb9d5f5e0e875d7788d2369720fd30a53dba9abb7bb8df97eb89ddad2baab99c99aab566b350e1efbfe4e0d26765a9a49da38aaab767be05eafb8 languageName: node linkType: hard @@ -41060,13 +41048,13 @@ __metadata: languageName: node linkType: hard -"react-native-image-picker@npm:7.2.3": - version: 7.2.3 - resolution: "react-native-image-picker@npm:7.2.3" +"react-native-image-picker@npm:7.0.1": + version: 7.0.1 + resolution: "react-native-image-picker@npm:7.0.1" peerDependencies: react: "*" react-native: "*" - checksum: 96d67516e8e1c1768c593ca1b0a507d5212d8ac5df2610ad9d6f38c188b8d0720966559867849f74b6c19d2500664ce17c907e5fa37ab72487abd363cf493e7d + checksum: 1af72d42a82bc7ade4906210496bc0f86218595098b20f003488793c733f387115d58e0a44c22c4bbcc4cc8eb354ef18c306f5b64e4def2d67b2ddabd6d8cb46 languageName: node linkType: hard @@ -47368,6 +47356,7 @@ __metadata: "@react-native-async-storage/async-storage": 1.17.10 "@react-native-community/netinfo": 9.3.0 "@reduxjs/toolkit": 1.9.3 + "@shopify/react-native-skia": 1.4.2 "@simplewebauthn/browser": 11.0.0 "@simplewebauthn/types": 11.0.0 "@tanstack/query-async-storage-persister": 5.51.21 @@ -47379,18 +47368,18 @@ __metadata: "@typechain/ethers-v5": 7.2.0 "@types/chrome": 0.0.254 "@types/react-window": 1.8.2 - "@uniswap/analytics-events": 2.40.0 + "@uniswap/analytics-events": 2.41.0 "@uniswap/client-embeddedwallet": 0.0.13 "@uniswap/client-explore": 0.0.14 "@uniswap/client-pools": 0.0.12 "@uniswap/eslint-config": "workspace:^" "@uniswap/permit2-sdk": 1.3.0 - "@uniswap/router-sdk": 1.18.0 - "@uniswap/sdk-core": 7.1.0 + "@uniswap/router-sdk": 1.21.0 + "@uniswap/sdk-core": 7.5.0 "@uniswap/uniswapx-sdk": 3.0.0-beta.1 - "@uniswap/v2-sdk": 4.9.0 - "@uniswap/v3-sdk": 3.21.0 - "@uniswap/v4-sdk": 1.15.0 + "@uniswap/v2-sdk": 4.13.0 + "@uniswap/v3-sdk": 3.24.0 + "@uniswap/v4-sdk": 1.18.0 apollo-link-rest: 0.9.0 axios: 1.6.5 date-fns: 2.30.0 @@ -47924,7 +47913,6 @@ __metadata: "@datadog/browser-logs": 5.20.0 "@datadog/browser-rum": 5.23.3 "@datadog/mobile-react-native": 2.4.1 - "@datadog/mobile-react-native-apollo-client": 2.4.3 "@ethersproject/abstract-signer": 5.7.0 "@ethersproject/address": 5.7.0 "@ethersproject/constants": 5.7.0 @@ -47940,14 +47928,15 @@ __metadata: "@types/react": 18.0.38 "@types/uuid": 9.0.1 "@uniswap/analytics": 1.7.0 - "@uniswap/analytics-events": 2.40.0 + "@uniswap/analytics-events": 2.41.0 "@uniswap/eslint-config": "workspace:^" - "@uniswap/sdk-core": 7.1.0 + "@uniswap/sdk-core": 7.5.0 aws-appsync-auth-link: 3.0.7 aws-appsync-subscription-link: 3.1.3 dayjs: 1.11.7 eslint: 8.44.0 expo-localization: 14.8.3 + graphql: 16.6.0 jest: 29.7.0 jest-chrome: 0.8.0 jsbi: 3.2.5 @@ -48467,14 +48456,14 @@ __metadata: "@testing-library/react-native": 11.5.0 "@types/react": 18.0.38 "@types/zxcvbn": 4.4.2 - "@uniswap/analytics-events": 2.40.0 + "@uniswap/analytics-events": 2.41.0 "@uniswap/eslint-config": "workspace:^" "@uniswap/permit2-sdk": 1.3.0 - "@uniswap/router-sdk": 1.18.0 - "@uniswap/sdk-core": 7.1.0 + "@uniswap/router-sdk": 1.21.0 + "@uniswap/sdk-core": 7.5.0 "@uniswap/uniswapx-sdk": 3.0.0-beta.1 - "@uniswap/universal-router-sdk": 4.10.0 - "@uniswap/v3-sdk": 3.21.0 + "@uniswap/universal-router-sdk": 4.14.0 + "@uniswap/v3-sdk": 3.24.0 apollo3-cache-persist: 0.14.1 axios: 1.6.5 dayjs: 1.11.7 @@ -48498,7 +48487,7 @@ __metadata: react-native-context-menu-view: 1.15.0 react-native-fast-image: 8.6.3 react-native-gesture-handler: 2.19.0 - react-native-image-picker: 7.2.3 + react-native-image-picker: 7.0.1 react-native-localize: 2.2.6 react-native-reanimated: 3.15.0 react-native-restart: 0.0.27