diff --git a/.env.production b/.env.production
index 47965b24172..953bccb9cdc 100644
--- a/.env.production
+++ b/.env.production
@@ -6,11 +6,7 @@ REACT_APP_FIREBASE_KEY="AIzaSyBcZWwTcTJHj_R6ipZcrJkXdq05PuX0Rs0"
REACT_APP_FORTMATIC_KEY="pk_live_F937DF033A1666BF"
REACT_APP_GOOGLE_ANALYTICS_ID="G-KDP9B6W4H8"
REACT_APP_INFURA_KEY="099fc58e0de9451d80b18d7c74caa7c1"
-REACT_APP_MOONPAY_API="https://api.moonpay.com"
-REACT_APP_MOONPAY_LINK="https://us-central1-uniswap-mobile.cloudfunctions.net/signMoonpayLinkV2?platform=web&env=production"
-REACT_APP_MOONPAY_PUBLISHABLE_KEY="pk_live_uQG4BJC4w3cxnqpcSqAfohdBFDTsY6E"
REACT_APP_SENTRY_ENABLED=true
REACT_APP_SENTRY_TRACES_SAMPLE_RATE=0.00003
-REACT_APP_STATSIG_PROXY_URL="https://api.uniswap.org/v1/statsig-proxy"
REACT_APP_QUICKNODE_MAINNET_RPC_URL="https://ultra-blue-flower.quiknode.pro/770b22d5f362c537bc8fe19b034c45b22958f880"
THE_GRAPH_SCHEMA_ENDPOINT="https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3?source=uniswap"
diff --git a/craco.config.cjs b/craco.config.cjs
index 85d2b1053c0..99f3285148a 100644
--- a/craco.config.cjs
+++ b/craco.config.cjs
@@ -1,18 +1,14 @@
/* eslint-env node */
const { VanillaExtractPlugin } = require('@vanilla-extract/webpack-plugin')
const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin')
-const { execSync } = require('child_process')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const path = require('path')
const ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin')
const { IgnorePlugin, ProvidePlugin } = require('webpack')
const { RetryChunkLoadPlugin } = require('webpack-retry-chunk-load-plugin')
-const commitHash = execSync('git rev-parse HEAD').toString().trim()
const isProduction = process.env.NODE_ENV === 'production'
-process.env.REACT_APP_GIT_COMMIT_HASH = commitHash
-
// Linting and type checking are only necessary as part of development and testing.
// Omit them from production builds, as they slow down the feedback loop.
const shouldLintOrTypeCheck = !isProduction
diff --git a/cypress/support/setupTests.ts b/cypress/support/setupTests.ts
index fac176c6f3d..6dda253e4c4 100644
--- a/cypress/support/setupTests.ts
+++ b/cypress/support/setupTests.ts
@@ -16,27 +16,6 @@ beforeEach(() => {
// Log requests to hardhat.
cy.intercept(/:8545/, logJsonRpc)
- // Mock analytics responses to avoid analytics in tests.
- cy.intercept('https://api.uniswap.org/v1/amplitude-proxy', (req) => {
- const requestBody = JSON.stringify(req.body)
- const byteSize = new Blob([requestBody]).size
- req.alias = 'amplitude'
- req.reply(
- JSON.stringify({
- code: 200,
- server_upload_time: Date.now(),
- payload_size_bytes: byteSize,
- events_ingested: req.body.events.length,
- }),
- {
- 'origin-country': 'US',
- }
- )
- }).intercept('https://*.sentry.io', { statusCode: 200 })
-
- // Mock statsig to allow us to mock flags.
- cy.intercept(/statsig/, { statusCode: 409 })
-
// Mock our own token list responses to avoid the latency of IPFS.
cy.intercept('https://gateway.ipfs.io/ipns/tokens.uniswap.org', TokenListJSON)
.intercept('https://gateway.ipfs.io/ipns/extendedtokens.uniswap.org', { statusCode: 404 })
diff --git a/package.json b/package.json
index 0f82ccae108..6037099bd14 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "name": "@uniswap/interface",
+ "name": "dex51",
"version": "1.1.0",
"description": "Dex51",
"license": "GPL-3.0-or-later",
@@ -288,7 +288,6 @@
"rebass": "^4.0.7",
"redux": "^4.1.2",
"redux-persist": "^6.0.0",
- "statsig-react": "^1.22.0",
"styled-components": "^5.3.5",
"tiny-invariant": "^1.2.0",
"ua-parser-js": "^1.0.35",
diff --git a/public/app-sitemap.xml b/public/app-sitemap.xml
index a74beeecf0e..75558645eaf 100644
--- a/public/app-sitemap.xml
+++ b/public/app-sitemap.xml
@@ -1,105 +1,9 @@
- https://app.uniswap.org/
+ https://dex.a51.finance/swap
2023-10-11T19:57:27.976Z
weekly
- 1.0
-
-
- https://app.uniswap.org/tokens
- 2023-10-11T19:57:27.976Z
- weekly
- 0.8
-
-
- https://app.uniswap.org/send
- 2023-10-11T19:57:27.976Z
- weekly
- 0.6
-
-
- https://app.uniswap.org/swap
- 2023-10-11T19:57:27.976Z
- weekly
- 0.9
-
-
- https://app.uniswap.org/pool/v2/find
- 2023-10-11T19:57:27.976Z
- weekly
- 0.6
-
-
- https://app.uniswap.org/pool/v2
- 2023-10-11T19:57:27.976Z
- weekly
- 0.6
-
-
- https://app.uniswap.org/pool
- 2023-10-11T19:57:27.976Z
- weekly
- 0.6
-
-
- https://app.uniswap.org/pools/v2/find
- 2023-10-11T19:57:27.976Z
- weekly
- 0.6
-
-
- https://app.uniswap.org/pools/v2
- 2023-10-11T19:57:27.976Z
- weekly
- 0.6
-
-
- https://app.uniswap.org/pools
- 2023-10-11T19:57:27.976Z
- weekly
- 0.7
-
-
- https://app.uniswap.org/add/v2
- 2023-10-11T19:57:27.976Z
- weekly
- 0.6
-
-
- https://app.uniswap.org/add
- 2023-10-11T19:57:27.976Z
- weekly
- 0.6
-
-
- https://app.uniswap.org/increase
- 2023-10-11T19:57:27.976Z
- weekly
- 0.6
-
-
- https://app.uniswap.org/migrate/v2
- 2023-10-11T19:57:27.976Z
- weekly
- 0.6
-
-
- https://app.uniswap.org/nfts
- 2023-10-11T19:57:27.976Z
- weekly
- 0.6
-
-
- https://app.uniswap.org/nfts/profile
- 2023-10-11T19:57:27.976Z
- weekly
- 0.6
-
-
- https://app.uniswap.org/create-proposal
- 2023-10-11T19:57:27.976Z
- weekly
- 0.5
+ 0.1
\ No newline at end of file
diff --git a/public/images/1200x630_Rich_Link_Preview_Image.png b/public/images/1200x630_Rich_Link_Preview_Image.png
index 12328b33190..b0de716c408 100644
Binary files a/public/images/1200x630_Rich_Link_Preview_Image.png and b/public/images/1200x630_Rich_Link_Preview_Image.png differ
diff --git a/public/images/192x192_App_Icon.png b/public/images/192x192_App_Icon.png
index 75eaaf8cb41..6efc45957e5 100644
Binary files a/public/images/192x192_App_Icon.png and b/public/images/192x192_App_Icon.png differ
diff --git a/public/images/256x256_App_Icon_Pink.svg b/public/images/256x256_App_Icon_Pink.svg
index 8c8286838d4..2ce099605dc 100644
--- a/public/images/256x256_App_Icon_Pink.svg
+++ b/public/images/256x256_App_Icon_Pink.svg
@@ -1,11 +1,28 @@
-
+
+
+
diff --git a/public/images/324x74_App_Watermark.png b/public/images/324x74_App_Watermark.png
deleted file mode 100644
index cda344455d9..00000000000
Binary files a/public/images/324x74_App_Watermark.png and /dev/null differ
diff --git a/public/images/324x74_App_Watermark.svg b/public/images/324x74_App_Watermark.svg
new file mode 100644
index 00000000000..2ce099605dc
--- /dev/null
+++ b/public/images/324x74_App_Watermark.svg
@@ -0,0 +1,28 @@
+
+
+
diff --git a/public/images/512x512_App_Icon.png b/public/images/512x512_App_Icon.png
index f24aada72a1..6b8c7471eec 100644
Binary files a/public/images/512x512_App_Icon.png and b/public/images/512x512_App_Icon.png differ
diff --git a/public/index.html b/public/index.html
index 1c7a1911445..800d63ae28f 100644
--- a/public/index.html
+++ b/public/index.html
@@ -15,14 +15,6 @@
-
- content="script-src 'self' 'unsafe-inline' 'unsafe-eval'"
- <% } else { %>
- content="script-src 'self' 'unsafe-inline'"
- <% } %>
- />
-
+
@@ -131,6 +123,17 @@
}
}
+
+
diff --git a/public/nfts-sitemap.xml b/public/nfts-sitemap.xml
deleted file mode 100644
index 10b94d34812..00000000000
--- a/public/nfts-sitemap.xml
+++ /dev/null
@@ -1,518 +0,0 @@
-
-
-
- https://app.uniswap.org/nfts/collection/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x60e4d786628fea6478f785a6d7e704777c86a7c6
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xed5af388653567af2f388e6224dc7c4b3241c544
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x34d85c9cdeb23fa97cb08333b511ac86e1c4e258
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x99a9b7c1116f9ceeb1652de04d5969cce509b069
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x49cf6f5d44e70224e2e23fdcdd2c053f30ada28b
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xb7f7f6c52f2e2fdb1963eab30438024864c313f6
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x23581767a106ae21c074b2276d25e5c3e136a68b
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x8a90cab2b38dba80c64b7734e58ee1db38b8992e
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xba30e5f9bb24caa003e9f2f0497ad287fdf95623
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xbd3531da5cf5857e7cfaa92426877b022e612cf8
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x7bd29408f11d2bfc23c34f18275bbf23bb716bc7
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x306b1ea3ecdf94ab739f1910bbda052ed4a9f949
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x1a92f7381b9f03921564a437210bb9396471050c
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x5cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c38
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x5af0d9827e0c53e4799bb226655a1de152a425a5
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x3bf2922f4520a8ba0c2efc3d2a1539678dad5e9d
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xe785e82358879f061bc3dcac6f0444462d4b5330
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x76be3b62873462d2142405439777e971754e8e77
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xfd43af6d3fe1b916c026f6ac35b3ede068d1ca01
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x1cb1a5e65610aeff2551a50f76a87a7d3fb649c6
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xff9c1b15b16263c61d017ee9f65c50e4ae0113d7
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x6339e5e072086621540d0362c4e3cea0d643e114
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xb932a70a57673d89f4acffbe830e8ed7f75fb9e0
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x79fcdef22feed20eddacbb2587640e45491b757f
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xa3aee8bce55beea1951ef834b99f3ac60d1abeeb
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x769272677fab02575e84945f03eca517acc544cc
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x4db1f25d3d98600140dfc18deb7515be5bd293af
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x34eebee6942d8def3c125458d1a86e0a897fd6f9
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x59468516a8259058bad1ca5f8f4bff190d30e066
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x394e3d3044fc89fcdd966d3cb35ac0b32b0cda91
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x60bb1e2aa1c9acafb4d34f71585d7e959f387769
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x28472a58a490c5e09a238847f66a68a47cc76f0f
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x341a1c534248966c4b6afad165b98daed4b964ef
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x82c7a8f707110f5fbb16184a5933e9f78a34c6ab
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xccc441ac31f02cd96c153db6fd5fe0a2f4e6a68d
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x764aeebcf425d56800ef2c84f2578689415a2daa
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x160c404b2b49cbc3240055ceaee026df1e8497a0
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xd2f668a8461d6761115daf8aeb3cdf5f40c532c6
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x39ee2c7b3cb80254225884ca001f57118c8f21b6
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xd774557b647330c91bf44cfeab205095f7e6c367
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x1792a96e5668ad7c167ab804a100ce42395ce54d
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xf87e31492faf9a91b02ee0deaad50d51d56d5d4d
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x04afa589e2b933f9463c5639f412b183ec062505
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xe75512aa3bec8f00434bbd6ad8b0a3fbff100ad6
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x348fc118bcc65a92dc033a951af153d14d945312
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x892848074ddea461a15f337250da3ce55580ca85
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x5946aeaab44e65eb370ffaa6a7ef2218cff9b47d
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x282bdd42f4eb70e7a9d9f40c8fea0825b7f68c5d
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x4b15a9c28034dc83db40cd810001427d3bd7163d
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x7ea3cca10668b8346aec0bf1844a49e995527c8b
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xb852c6b5892256c264cc2c888ea462189154d8d7
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x9378368ba6b85c1fba5b131b530f5f5bedf21a18
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x2acab3dea77832c09420663b0e1cb386031ba17b
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x0c2e57efddba8c768147d1fdf9176a0a6ebd5d83
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x08d7c0242953446436f34b4c78fe9da38c73668d
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x8943c7bac1914c9a7aba750bf2b6b09fd21037e0
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x364c828ee171616a39897688a831c2499ad972ec
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x7f36182dee28c45de6072a34d29855bae76dbe2f
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xf61f24c2d93bf2de187546b14425bf631f28d6dc
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x797a48c46be32aafcedcfd3d8992493d8a1f256b
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x123b30e25973fecd8354dd5f41cc45a3065ef88c
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x6632a9d63e142f17a668064d41a21193b49b41a0
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xf4ee95274741437636e748ddac70818b4ed7d043
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x57a204aa1042f6e66dd7730813f4024114d74f37
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xd1258db6ac08eb0e625b75b371c023da478e94a9
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x75e95ba5997eb235f40ecf8347cdb11f18ff640b
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xd532b88607b1877fe20c181cba2550e3bbd6b31c
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xa1d4657e0e6507d5a94d06da93e94dc7c8c44b51
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xedb61f74b0d09b2558f1eeb79b247c1f363ae452
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x7d8820fa92eb1584636f4f5b8515b5476b75171a
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x231d3559aa848bf10366fb9868590f01d34bf240
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xad9fd7cb4fc7a0fbce08d64068f60cbde22ed34c
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x0e9d6552b85be180d941f1ca73ae3e318d2d4f1f
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xb716600ed99b4710152582a124c697a7fe78adbf
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xaadc2d4261199ce24a4b0a57370c4fcf43bb60aa
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x4e1f41613c9084fdb9e34e11fae9412427480e56
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x79986af15539de2db9a5086382daeda917a9cf0c
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xc99c679c50033bbc5321eb88752e89a93e9e83c5
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xc36cf0cfcb5d905b8b513860db0cfe63f6cf9f5c
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x9c8ff314c9bc7f6e59a9d9225fb22946427edc03
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x3110ef5f612208724ca51f5761a69081809f03b7
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x036721e5a769cc48b3189efbb9cce4471e8a48b1
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x524cab2ec69124574082676e6f654a18df49a048
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x7ab2352b1d2e185560494d5e577f9d3c238b78c5
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x32973908faee0bf825a343000fe412ebe56f802a
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x7daec605e9e2a1717326eedfd660601e2753a057
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xc1caf0c19a8ac28c41fe59ba6c754e4b9bd54de9
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x33fd426905f149f8376e227d0c9d3340aad17af1
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x466cfcd0525189b573e794f554b8a751279213ac
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x6be69b2a9b153737887cfcdca7781ed1511c7e36
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x80336ad7a747236ef41f47ed2c7641828a480baa
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x9401518f4ebba857baa879d9f76e1cc8b31ed197
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x4b61413d4392c806e6d0ff5ee91e6073c21d6430
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xc3f733ca98e0dad0386979eb96fb1722a1a05e69
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x09233d553058c2f42ba751c87816a8e9fae7ef10
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x960b7a6bcd451c9968473f7bbfd9be826efd549a
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x36d30b3b85255473d27dd0f7fd8f35e36a9d6f06
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x698fbaaca64944376e2cdc4cad86eaa91362cf54
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x497a9a79e82e6fc0ff10a16f6f75e6fcd5ae65a8
- 2023-10-11T23:24:32.127Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x41a322b28d0ff354040e2cbc676f0320d8c8850d
- 2023-10-16T18:42:53.632Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0xa9c0a07a7cb84ad1f2ffab06de3e55aab7d523e8
- 2023-10-16T18:42:53.632Z
- 0.7
-
-
- https://app.uniswap.org/nfts/collection/0x942bc2d3e7a589fe5bd4a5c6ef9727dfd82f5c8a
- 2023-10-16T18:42:53.632Z
- 0.7
-
-
\ No newline at end of file
diff --git a/public/robots.txt b/public/robots.txt
index 852c90241c1..9bfba706a0d 100644
--- a/public/robots.txt
+++ b/public/robots.txt
@@ -4,7 +4,7 @@ Disallow: /static/js/
Allow: /
# Host
-Host: https://app.uniswap.org
+Host: https://dex.a51.finance
# Sitemaps
-Sitemap: https://app.uniswap.org/sitemap.xml
+Sitemap: https://dex.a51.finance/sitemap.xml
diff --git a/public/sitemap.xml b/public/sitemap.xml
deleted file mode 100644
index 613796e8cc6..00000000000
--- a/public/sitemap.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
- https://app.uniswap.org/app-sitemap.xml
-
-
- https://app.uniswap.org/tokens-sitemap.xml
-
-
- https://app.uniswap.org/nfts-sitemap.xml
-
-
\ No newline at end of file
diff --git a/public/tokens-sitemap.xml b/public/tokens-sitemap.xml
index 2ebc7c6e862..a6c21b4aa46 100644
--- a/public/tokens-sitemap.xml
+++ b/public/tokens-sitemap.xml
@@ -1,1662 +1,1662 @@
- https://app.uniswap.org/tokens/ethereum/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
+ https://dex.a51.finance/tokens/ethereum/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
+ https://dex.a51.finance/tokens/ethereum/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xdac17f958d2ee523a2206206994597c13d831ec7
+ https://dex.a51.finance/tokens/ethereum/0xdac17f958d2ee523a2206206994597c13d831ec7
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599
+ https://dex.a51.finance/tokens/ethereum/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x6b175474e89094c44da98b954eedeac495271d0f
+ https://dex.a51.finance/tokens/ethereum/0x6b175474e89094c44da98b954eedeac495271d0f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0
+ https://dex.a51.finance/tokens/ethereum/0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x514910771af9ca656af840dff83e8264ecf986ca
+ https://dex.a51.finance/tokens/ethereum/0x514910771af9ca656af840dff83e8264ecf986ca
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xae78736cd615f374d3085123a210448e74fc6393
+ https://dex.a51.finance/tokens/ethereum/0xae78736cd615f374d3085123a210448e74fc6393
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x853d955acef822db058eb8505911ed77f175b99e
+ https://dex.a51.finance/tokens/ethereum/0x853d955acef822db058eb8505911ed77f175b99e
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x6982508145454ce325ddbe47a25d4ec3d2311933
+ https://dex.a51.finance/tokens/ethereum/0x6982508145454ce325ddbe47a25d4ec3d2311933
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xb62e45c3df611dce236a6ddc7a493d79f9dfadef
+ https://dex.a51.finance/tokens/ethereum/0xb62e45c3df611dce236a6ddc7a493d79f9dfadef
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x046eee2cc3188071c02bfc1745a6b17c656e3f3d
+ https://dex.a51.finance/tokens/ethereum/0x046eee2cc3188071c02bfc1745a6b17c656e3f3d
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x20561172f791f915323241e885b4f7d5187c36e1
+ https://dex.a51.finance/tokens/ethereum/0x20561172f791f915323241e885b4f7d5187c36e1
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x1a7e4e63778b4f12a199c062f3efdd288afcbce8
+ https://dex.a51.finance/tokens/ethereum/0x1a7e4e63778b4f12a199c062f3efdd288afcbce8
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x5a98fcbea516cf06857215779fd812ca3bef1b32
+ https://dex.a51.finance/tokens/ethereum/0x5a98fcbea516cf06857215779fd812ca3bef1b32
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x5f98805a4e8be255a32880fdec7f6728c6568ba0
+ https://dex.a51.finance/tokens/ethereum/0x5f98805a4e8be255a32880fdec7f6728c6568ba0
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xd0d56273290d339aaf1417d9bfa1bb8cfe8a0933
+ https://dex.a51.finance/tokens/ethereum/0xd0d56273290d339aaf1417d9bfa1bb8cfe8a0933
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2
+ https://dex.a51.finance/tokens/ethereum/0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x1abaea1f7c830bd89acc67ec4af516284b1bc33c
+ https://dex.a51.finance/tokens/ethereum/0x1abaea1f7c830bd89acc67ec4af516284b1bc33c
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0
+ https://dex.a51.finance/tokens/ethereum/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d
+ https://dex.a51.finance/tokens/ethereum/0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x72e4f9f808c49a2a61de9c5896298920dc4eeea9
+ https://dex.a51.finance/tokens/ethereum/0x72e4f9f808c49a2a61de9c5896298920dc4eeea9
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x92d6c1e31e14520e676a687f0a93788b716beff5
+ https://dex.a51.finance/tokens/ethereum/0x92d6c1e31e14520e676a687f0a93788b716beff5
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x423f4e6138e475d85cf7ea071ac92097ed631eea
+ https://dex.a51.finance/tokens/ethereum/0x423f4e6138e475d85cf7ea071ac92097ed631eea
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x6c3ea9036406852006290770bedfcaba0e23a0e8
+ https://dex.a51.finance/tokens/ethereum/0x6c3ea9036406852006290770bedfcaba0e23a0e8
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xb504035a11e672e12a099f32b1672b9c4a78b22f
+ https://dex.a51.finance/tokens/ethereum/0xb504035a11e672e12a099f32b1672b9c4a78b22f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5
+ https://dex.a51.finance/tokens/ethereum/0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x183015a9ba6ff60230fdeadc3f43b3d788b13e21
+ https://dex.a51.finance/tokens/ethereum/0x183015a9ba6ff60230fdeadc3f43b3d788b13e21
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984
+ https://dex.a51.finance/tokens/ethereum/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x9813037ee2218799597d83d4a5b6f3b6778218d9
+ https://dex.a51.finance/tokens/ethereum/0x9813037ee2218799597d83d4a5b6f3b6778218d9
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xd33526068d116ce69f19a9ee46f0bd304f21a51f
+ https://dex.a51.finance/tokens/ethereum/0xd33526068d116ce69f19a9ee46f0bd304f21a51f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x4d224452801aced8b2f0aebe155379bb5d594381
+ https://dex.a51.finance/tokens/ethereum/0x4d224452801aced8b2f0aebe155379bb5d594381
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xf951e335afb289353dc249e82926178eac7ded78
+ https://dex.a51.finance/tokens/ethereum/0xf951e335afb289353dc249e82926178eac7ded78
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x78a0a62fba6fb21a83fe8a3433d44c73a4017a6f
+ https://dex.a51.finance/tokens/ethereum/0x78a0a62fba6fb21a83fe8a3433d44c73a4017a6f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xf411903cbc70a74d22900a5de66a2dda66507255
+ https://dex.a51.finance/tokens/ethereum/0xf411903cbc70a74d22900a5de66a2dda66507255
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xb23d80f5fefcddaa212212f028021b41ded428cf
+ https://dex.a51.finance/tokens/ethereum/0xb23d80f5fefcddaa212212f028021b41ded428cf
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xbe9895146f7af43049ca1c1ae358b0541ea49704
+ https://dex.a51.finance/tokens/ethereum/0xbe9895146f7af43049ca1c1ae358b0541ea49704
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x5283d291dbcf85356a21ba090e6db59121208b44
+ https://dex.a51.finance/tokens/ethereum/0x5283d291dbcf85356a21ba090e6db59121208b44
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xd1d2eb1b1e90b638588728b4130137d262c87cae
+ https://dex.a51.finance/tokens/ethereum/0xd1d2eb1b1e90b638588728b4130137d262c87cae
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f
+ https://dex.a51.finance/tokens/ethereum/0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xf57e7e7c23978c3caec3c3548e3d615c346e79ff
+ https://dex.a51.finance/tokens/ethereum/0xf57e7e7c23978c3caec3c3548e3d615c346e79ff
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce
+ https://dex.a51.finance/tokens/ethereum/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x9d65ff81a3c488d585bbfb0bfe3c7707c7917f54
+ https://dex.a51.finance/tokens/ethereum/0x9d65ff81a3c488d585bbfb0bfe3c7707c7917f54
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xe28b3b32b6c345a34ff64674606124dd5aceca30
+ https://dex.a51.finance/tokens/ethereum/0xe28b3b32b6c345a34ff64674606124dd5aceca30
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x68749665ff8d2d112fa859aa293f07a622782f38
+ https://dex.a51.finance/tokens/ethereum/0x68749665ff8d2d112fa859aa293f07a622782f38
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xd533a949740bb3306d119cc777fa900ba034cd52
+ https://dex.a51.finance/tokens/ethereum/0xd533a949740bb3306d119cc777fa900ba034cd52
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c
+ https://dex.a51.finance/tokens/ethereum/0xe0f63a424a4439cbe457d80e4f4b51ad25b2c56c
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x163f8c2467924be0ae7b5347228cabf260318753
+ https://dex.a51.finance/tokens/ethereum/0x163f8c2467924be0ae7b5347228cabf260318753
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x9bf1d7d63dd7a4ce167cf4866388226eeefa702e
+ https://dex.a51.finance/tokens/ethereum/0x9bf1d7d63dd7a4ce167cf4866388226eeefa702e
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x4a220e6096b25eadb88358cb44068a3248254675
+ https://dex.a51.finance/tokens/ethereum/0x4a220e6096b25eadb88358cb44068a3248254675
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24
+ https://dex.a51.finance/tokens/ethereum/0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x8207c1ffc5b6804f6024322ccf34f29c3541ae26
+ https://dex.a51.finance/tokens/ethereum/0x8207c1ffc5b6804f6024322ccf34f29c3541ae26
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39
+ https://dex.a51.finance/tokens/ethereum/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f
+ https://dex.a51.finance/tokens/ethereum/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x06450dee7fd2fb8e39061434babcfc05599a6fb8
+ https://dex.a51.finance/tokens/ethereum/0x06450dee7fd2fb8e39061434babcfc05599a6fb8
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x0ab87046fbb341d058f17cbc4c1133f25a20a52f
+ https://dex.a51.finance/tokens/ethereum/0x0ab87046fbb341d058f17cbc4c1133f25a20a52f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xa0ef786bf476fe0810408caba05e536ac800ff86
+ https://dex.a51.finance/tokens/ethereum/0xa0ef786bf476fe0810408caba05e536ac800ff86
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x5faa989af96af85384b8a938c2ede4a7378d9875
+ https://dex.a51.finance/tokens/ethereum/0x5faa989af96af85384b8a938c2ede4a7378d9875
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x4fabb145d64652a948d72533023f6e7a623c7c53
+ https://dex.a51.finance/tokens/ethereum/0x4fabb145d64652a948d72533023f6e7a623c7c53
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206
+ https://dex.a51.finance/tokens/ethereum/0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xf4d2888d29d722226fafa5d9b24f9164c092421e
+ https://dex.a51.finance/tokens/ethereum/0xf4d2888d29d722226fafa5d9b24f9164c092421e
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x49d72e3973900a195a155a46441f0c08179fdb64
+ https://dex.a51.finance/tokens/ethereum/0x49d72e3973900a195a155a46441f0c08179fdb64
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xc221b7e65ffc80de234bbb6667abdd46593d34f0
+ https://dex.a51.finance/tokens/ethereum/0xc221b7e65ffc80de234bbb6667abdd46593d34f0
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x77e06c9eccf2e797fd462a92b6d7642ef85b0a44
+ https://dex.a51.finance/tokens/ethereum/0x77e06c9eccf2e797fd462a92b6d7642ef85b0a44
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x6368e1e18c4c419ddfc608a0bed1ccb87b9250fc
+ https://dex.a51.finance/tokens/ethereum/0x6368e1e18c4c419ddfc608a0bed1ccb87b9250fc
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xed328e9c1179a30ddc1e7595e036aed8760c22af
+ https://dex.a51.finance/tokens/ethereum/0xed328e9c1179a30ddc1e7595e036aed8760c22af
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xf21661d0d1d76d3ecb8e1b9f1c923dbfffae4097
+ https://dex.a51.finance/tokens/ethereum/0xf21661d0d1d76d3ecb8e1b9f1c923dbfffae4097
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xbe042e9d09cb588331ff911c2b46fd833a3e5bd6
+ https://dex.a51.finance/tokens/ethereum/0xbe042e9d09cb588331ff911c2b46fd833a3e5bd6
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xe41d2489571d322189246dafa5ebde1f4699f498
+ https://dex.a51.finance/tokens/ethereum/0xe41d2489571d322189246dafa5ebde1f4699f498
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x3c3a81e81dc49a522a592e7622a7e711c06bf354
+ https://dex.a51.finance/tokens/ethereum/0x3c3a81e81dc49a522a592e7622a7e711c06bf354
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x8f8221afbb33998d8584a2b05749ba73c37a938a
+ https://dex.a51.finance/tokens/ethereum/0x8f8221afbb33998d8584a2b05749ba73c37a938a
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x820802fa8a99901f52e39acd21177b0be6ee2974
+ https://dex.a51.finance/tokens/ethereum/0x820802fa8a99901f52e39acd21177b0be6ee2974
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x808507121b80c02388fad14726482e061b8da827
+ https://dex.a51.finance/tokens/ethereum/0x808507121b80c02388fad14726482e061b8da827
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xc08512927d12348f6620a698105e1baac6ecd911
+ https://dex.a51.finance/tokens/ethereum/0xc08512927d12348f6620a698105e1baac6ecd911
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x6810e776880c02933d47db1b9fc05908e5386b96
+ https://dex.a51.finance/tokens/ethereum/0x6810e776880c02933d47db1b9fc05908e5386b96
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x582d872a1b094fc48f5de31d3b73f2d9be47def1
+ https://dex.a51.finance/tokens/ethereum/0x582d872a1b094fc48f5de31d3b73f2d9be47def1
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xc00e94cb662c3520282e6f5717214004a7f26888
+ https://dex.a51.finance/tokens/ethereum/0xc00e94cb662c3520282e6f5717214004a7f26888
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x0b7f0e51cd1739d6c96982d55ad8fa634dd43a9c
+ https://dex.a51.finance/tokens/ethereum/0x0b7f0e51cd1739d6c96982d55ad8fa634dd43a9c
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xaaa9214f675316182eaa21c85f0ca99160cc3aaa
+ https://dex.a51.finance/tokens/ethereum/0xaaa9214f675316182eaa21c85f0ca99160cc3aaa
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xaea46a60368a7bd060eec7df8cba43b7ef41ad85
+ https://dex.a51.finance/tokens/ethereum/0xaea46a60368a7bd060eec7df8cba43b7ef41ad85
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0
+ https://dex.a51.finance/tokens/ethereum/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x967da4048cd07ab37855c090aaf366e4ce1b9f48
+ https://dex.a51.finance/tokens/ethereum/0x967da4048cd07ab37855c090aaf366e4ce1b9f48
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x75c97384ca209f915381755c582ec0e2ce88c1ba
+ https://dex.a51.finance/tokens/ethereum/0x75c97384ca209f915381755c582ec0e2ce88c1ba
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xa8b919680258d369114910511cc87595aec0be6d
+ https://dex.a51.finance/tokens/ethereum/0xa8b919680258d369114910511cc87595aec0be6d
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x037a54aab062628c9bbae1fdb1583c195585fe41
+ https://dex.a51.finance/tokens/ethereum/0x037a54aab062628c9bbae1fdb1583c195585fe41
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x3ef3b555842cdaff0f4f0b79c9dd65096d60ba63
+ https://dex.a51.finance/tokens/ethereum/0x3ef3b555842cdaff0f4f0b79c9dd65096d60ba63
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xa36fdbbae3c9d55a1d67ee5821d53b50b63a1ab9
+ https://dex.a51.finance/tokens/ethereum/0xa36fdbbae3c9d55a1d67ee5821d53b50b63a1ab9
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1
+ https://dex.a51.finance/tokens/ethereum/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xc944e90c64b2c07662a292be6244bdf05cda44a7
+ https://dex.a51.finance/tokens/ethereum/0xc944e90c64b2c07662a292be6244bdf05cda44a7
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd
+ https://dex.a51.finance/tokens/ethereum/0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x18084fba666a33d37592fa2633fd49a74dd93a88
+ https://dex.a51.finance/tokens/ethereum/0x18084fba666a33d37592fa2633fd49a74dd93a88
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x33349b282065b0284d756f0577fb39c158f935e6
+ https://dex.a51.finance/tokens/ethereum/0x33349b282065b0284d756f0577fb39c158f935e6
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x7dd9c5cba05e151c895fde1cf355c9a1d5da6429
+ https://dex.a51.finance/tokens/ethereum/0x7dd9c5cba05e151c895fde1cf355c9a1d5da6429
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x470c8950c0c3aa4b09654bc73b004615119a44b5
+ https://dex.a51.finance/tokens/ethereum/0x470c8950c0c3aa4b09654bc73b004615119a44b5
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x81f8f0bb1cb2a06649e51913a151f0e7ef6fa321
+ https://dex.a51.finance/tokens/ethereum/0x81f8f0bb1cb2a06649e51913a151f0e7ef6fa321
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xff836a5821e69066c87e268bc51b849fab94240c
+ https://dex.a51.finance/tokens/ethereum/0xff836a5821e69066c87e268bc51b849fab94240c
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xba5bde662c17e2adff1075610382b9b691296350
+ https://dex.a51.finance/tokens/ethereum/0xba5bde662c17e2adff1075610382b9b691296350
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x9aab071b4129b083b01cb5a0cb513ce7eca26fa5
+ https://dex.a51.finance/tokens/ethereum/0x9aab071b4129b083b01cb5a0cb513ce7eca26fa5
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xf939e0a03fb07f59a73314e73794be0e57ac1b4e
+ https://dex.a51.finance/tokens/ethereum/0xf939e0a03fb07f59a73314e73794be0e57ac1b4e
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x112b08621e27e10773ec95d250604a041f36c582
+ https://dex.a51.finance/tokens/ethereum/0x112b08621e27e10773ec95d250604a041f36c582
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x82af49447d8a07e3bd95bd0d56f35241523fbab1
+ https://dex.a51.finance/tokens/arbitrum/0x82af49447d8a07e3bd95bd0d56f35241523fbab1
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xff970a61a04b1ca14834a43f5de4533ebddb5cc8
+ https://dex.a51.finance/tokens/arbitrum/0xff970a61a04b1ca14834a43f5de4533ebddb5cc8
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xaf88d065e77c8cc2239327c5edb3a432268e5831
+ https://dex.a51.finance/tokens/arbitrum/0xaf88d065e77c8cc2239327c5edb3a432268e5831
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9
+ https://dex.a51.finance/tokens/arbitrum/0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x912ce59144191c1204e64559fe8253a0e49e6548
+ https://dex.a51.finance/tokens/arbitrum/0x912ce59144191c1204e64559fe8253a0e49e6548
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f
+ https://dex.a51.finance/tokens/arbitrum/0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x5979d7b546e38e414f7e9822514be443a4800529
+ https://dex.a51.finance/tokens/arbitrum/0x5979d7b546e38e414f7e9822514be443a4800529
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1
+ https://dex.a51.finance/tokens/arbitrum/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a
+ https://dex.a51.finance/tokens/arbitrum/0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8
+ https://dex.a51.finance/tokens/arbitrum/0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x3082cc23568ea640225c2467653db90e9250aaa0
+ https://dex.a51.finance/tokens/arbitrum/0x3082cc23568ea640225c2467653db90e9250aaa0
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xf97f4df75117a78c1a5a0dbb814af92458539fb4
+ https://dex.a51.finance/tokens/arbitrum/0xf97f4df75117a78c1a5a0dbb814af92458539fb4
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x539bde0d7dbd336b79148aa742883198bbf60342
+ https://dex.a51.finance/tokens/arbitrum/0x539bde0d7dbd336b79148aa742883198bbf60342
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x18c11fd286c5ec11c3b683caa813b77f5163a122
+ https://dex.a51.finance/tokens/arbitrum/0x18c11fd286c5ec11c3b683caa813b77f5163a122
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x772598e9e62155d7fdfe65fdf01eb5a53a8465be
+ https://dex.a51.finance/tokens/arbitrum/0x772598e9e62155d7fdfe65fdf01eb5a53a8465be
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x2297aebd383787a160dd0d9f71508148769342e3
+ https://dex.a51.finance/tokens/arbitrum/0x2297aebd383787a160dd0d9f71508148769342e3
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x6694340fc020c5e6b96567843da2df01b2ce1eb6
+ https://dex.a51.finance/tokens/arbitrum/0x6694340fc020c5e6b96567843da2df01b2ce1eb6
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xfa5ed56a203466cbbc2430a43c66b9d8723528e7
+ https://dex.a51.finance/tokens/arbitrum/0xfa5ed56a203466cbbc2430a43c66b9d8723528e7
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x1f52145666c862ed3e2f1da213d479e61b2892af
+ https://dex.a51.finance/tokens/arbitrum/0x1f52145666c862ed3e2f1da213d479e61b2892af
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x83d6c8c06ac276465e4c92e7ac8c23740f435140
+ https://dex.a51.finance/tokens/arbitrum/0x83d6c8c06ac276465e4c92e7ac8c23740f435140
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x6fd58f5a2f3468e35feb098b5f59f04157002407
+ https://dex.a51.finance/tokens/arbitrum/0x6fd58f5a2f3468e35feb098b5f59f04157002407
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x32eb7902d4134bf98a28b963d26de779af92a212
+ https://dex.a51.finance/tokens/arbitrum/0x32eb7902d4134bf98a28b963d26de779af92a212
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x0341c0c0ec423328621788d4854119b97f44e391
+ https://dex.a51.finance/tokens/arbitrum/0x0341c0c0ec423328621788d4854119b97f44e391
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x93d504070ab0eede5449c89c5ea0f5e34d8103f8
+ https://dex.a51.finance/tokens/arbitrum/0x93d504070ab0eede5449c89c5ea0f5e34d8103f8
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xd77b108d4f6cefaa0cae9506a934e825becca46e
+ https://dex.a51.finance/tokens/arbitrum/0xd77b108d4f6cefaa0cae9506a934e825becca46e
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x4e352cf164e64adcbad318c3a1e222e9eba4ce42
+ https://dex.a51.finance/tokens/arbitrum/0x4e352cf164e64adcbad318c3a1e222e9eba4ce42
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x13ad51ed4f1b7e9dc168d8a00cb3f4ddd85efa60
+ https://dex.a51.finance/tokens/arbitrum/0x13ad51ed4f1b7e9dc168d8a00cb3f4ddd85efa60
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x9ed7e4b1bff939ad473da5e7a218c771d1569456
+ https://dex.a51.finance/tokens/arbitrum/0x9ed7e4b1bff939ad473da5e7a218c771d1569456
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x289ba1701c2f088cf0faf8b3705246331cb8a839
+ https://dex.a51.finance/tokens/arbitrum/0x289ba1701c2f088cf0faf8b3705246331cb8a839
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x93b346b6bc2548da6a1e7d98e9a421b42541425b
+ https://dex.a51.finance/tokens/arbitrum/0x93b346b6bc2548da6a1e7d98e9a421b42541425b
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0
+ https://dex.a51.finance/tokens/arbitrum/0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x17fc002b466eec40dae837fc4be5c67993ddbd6f
+ https://dex.a51.finance/tokens/arbitrum/0x17fc002b466eec40dae837fc4be5c67993ddbd6f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xd74f5255d557944cf7dd0e45ff521520002d5748
+ https://dex.a51.finance/tokens/arbitrum/0xd74f5255d557944cf7dd0e45ff521520002d5748
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x51f9f9ff6cb2266d68c04ec289c7aba81378a383
+ https://dex.a51.finance/tokens/arbitrum/0x51f9f9ff6cb2266d68c04ec289c7aba81378a383
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x3a33473d7990a605a88ac72a78ad4efc40a54adb
+ https://dex.a51.finance/tokens/arbitrum/0x3a33473d7990a605a88ac72a78ad4efc40a54adb
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x9d2f299715d94d8a7e6f5eaa8e654e8c74a988a7
+ https://dex.a51.finance/tokens/arbitrum/0x9d2f299715d94d8a7e6f5eaa8e654e8c74a988a7
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x7c8a1a80fdd00c9cccd6ebd573e9ecb49bfa2a59
+ https://dex.a51.finance/tokens/arbitrum/0x7c8a1a80fdd00c9cccd6ebd573e9ecb49bfa2a59
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x3404149e9ee6f17fb41db1ce593ee48fbdcd9506
+ https://dex.a51.finance/tokens/arbitrum/0x3404149e9ee6f17fb41db1ce593ee48fbdcd9506
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x8d9ba570d6cb60c7e3e0f31343efe75ab8e65fb1
+ https://dex.a51.finance/tokens/arbitrum/0x8d9ba570d6cb60c7e3e0f31343efe75ab8e65fb1
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xec70dcb4a1efa46b8f2d97c310c9c4790ba5ffa8
+ https://dex.a51.finance/tokens/arbitrum/0xec70dcb4a1efa46b8f2d97c310c9c4790ba5ffa8
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x3a18dcc9745edcd1ef33ecb93b0b6eba5671e7ca
+ https://dex.a51.finance/tokens/arbitrum/0x3a18dcc9745edcd1ef33ecb93b0b6eba5671e7ca
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x9623063377ad1b27544c965ccd7342f7ea7e88c7
+ https://dex.a51.finance/tokens/arbitrum/0x9623063377ad1b27544c965ccd7342f7ea7e88c7
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x088cd8f5ef3652623c22d48b1605dcfe860cd704
+ https://dex.a51.finance/tokens/arbitrum/0x088cd8f5ef3652623c22d48b1605dcfe860cd704
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xfc77b86f3ade71793e1eec1e7944db074922856e
+ https://dex.a51.finance/tokens/arbitrum/0xfc77b86f3ade71793e1eec1e7944db074922856e
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xcf985aba4647a432e60efceeb8054bbd64244305
+ https://dex.a51.finance/tokens/arbitrum/0xcf985aba4647a432e60efceeb8054bbd64244305
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x655a6beebf2361a19549a99486ff65f709bd2646
+ https://dex.a51.finance/tokens/arbitrum/0x655a6beebf2361a19549a99486ff65f709bd2646
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x371c7ec6d8039ff7933a2aa28eb827ffe1f52f07
+ https://dex.a51.finance/tokens/arbitrum/0x371c7ec6d8039ff7933a2aa28eb827ffe1f52f07
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x7dd747d63b094971e6638313a6a2685e80c7fb2e
+ https://dex.a51.finance/tokens/arbitrum/0x7dd747d63b094971e6638313a6a2685e80c7fb2e
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xc47d9753f3b32aa9548a7c3f30b6aec3b2d2798c
+ https://dex.a51.finance/tokens/arbitrum/0xc47d9753f3b32aa9548a7c3f30b6aec3b2d2798c
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xe85b662fe97e8562f4099d8a1d5a92d4b453bf30
+ https://dex.a51.finance/tokens/arbitrum/0xe85b662fe97e8562f4099d8a1d5a92d4b453bf30
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a
+ https://dex.a51.finance/tokens/arbitrum/0xfea7a6a0b346362bf88a9e4a88416b77a57d6c2a
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x431402e8b9de9aa016c743880e04e517074d8cec
+ https://dex.a51.finance/tokens/arbitrum/0x431402e8b9de9aa016c743880e04e517074d8cec
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xd67a097dce9d4474737e6871684ae3c05460f571
+ https://dex.a51.finance/tokens/arbitrum/0xd67a097dce9d4474737e6871684ae3c05460f571
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x51fc0f6660482ea73330e414efd7808811a57fa2
+ https://dex.a51.finance/tokens/arbitrum/0x51fc0f6660482ea73330e414efd7808811a57fa2
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x7f5c764cbc14f9669b88837ca1490cca17c31607
+ https://dex.a51.finance/tokens/optimism/0x7f5c764cbc14f9669b88837ca1490cca17c31607
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x4200000000000000000000000000000000000006
+ https://dex.a51.finance/tokens/optimism/0x4200000000000000000000000000000000000006
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x4200000000000000000000000000000000000042
+ https://dex.a51.finance/tokens/optimism/0x4200000000000000000000000000000000000042
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x94b008aa00579c1307b0ef2c499ad98a8ce58e58
+ https://dex.a51.finance/tokens/optimism/0x94b008aa00579c1307b0ef2c499ad98a8ce58e58
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x68f180fcce6836688e9084f035309e29bf0a2095
+ https://dex.a51.finance/tokens/optimism/0x68f180fcce6836688e9084f035309e29bf0a2095
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9
+ https://dex.a51.finance/tokens/optimism/0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x0b2c639c533813f4aa9d7837caf62653d097ff85
+ https://dex.a51.finance/tokens/optimism/0x0b2c639c533813f4aa9d7837caf62653d097ff85
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1
+ https://dex.a51.finance/tokens/optimism/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1
+ https://dex.a51.finance/tokens/optimism/0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x1f32b1c2345538c0c6f582fcb022739c4a194ebb
+ https://dex.a51.finance/tokens/optimism/0x1f32b1c2345538c0c6f582fcb022739c4a194ebb
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x8700daec35af8ff88c16bdf0418774cb3d7599b4
+ https://dex.a51.finance/tokens/optimism/0x8700daec35af8ff88c16bdf0418774cb3d7599b4
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x9e1028f5f1d5ede59748ffcee5532509976840e0
+ https://dex.a51.finance/tokens/optimism/0x9e1028f5f1d5ede59748ffcee5532509976840e0
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0xc5b001dc33727f8f26880b184090d3e252470d45
+ https://dex.a51.finance/tokens/optimism/0xc5b001dc33727f8f26880b184090d3e252470d45
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x920cf626a271321c151d027030d5d08af699456b
+ https://dex.a51.finance/tokens/optimism/0x920cf626a271321c151d027030d5d08af699456b
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0xc40f949f8a4e094d1b49a23ea9241d289b7b2819
+ https://dex.a51.finance/tokens/optimism/0xc40f949f8a4e094d1b49a23ea9241d289b7b2819
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x9560e827af36c94d2ac33a39bce1fe78631088db
+ https://dex.a51.finance/tokens/optimism/0x9560e827af36c94d2ac33a39bce1fe78631088db
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x296f55f8fb28e498b858d0bcda06d955b2cb3f97
+ https://dex.a51.finance/tokens/optimism/0x296f55f8fb28e498b858d0bcda06d955b2cb3f97
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6
+ https://dex.a51.finance/tokens/optimism/0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x217d47011b23bb961eb6d93ca9945b7501a5bb11
+ https://dex.a51.finance/tokens/optimism/0x217d47011b23bb961eb6d93ca9945b7501a5bb11
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0xf98dcd95217e15e05d8638da4c91125e59590b07
+ https://dex.a51.finance/tokens/optimism/0xf98dcd95217e15e05d8638da4c91125e59590b07
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x73cb180bf0521828d8849bc8cf2b920918e23032
+ https://dex.a51.finance/tokens/optimism/0x73cb180bf0521828d8849bc8cf2b920918e23032
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x9bcef72be871e61ed4fbbc7630889bee758eb81d
+ https://dex.a51.finance/tokens/optimism/0x9bcef72be871e61ed4fbbc7630889bee758eb81d
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0xc03b43d492d904406db2d7d57e67c7e8234ba752
+ https://dex.a51.finance/tokens/optimism/0xc03b43d492d904406db2d7d57e67c7e8234ba752
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0xfdb794692724153d1488ccdbe0c56c252596735f
+ https://dex.a51.finance/tokens/optimism/0xfdb794692724153d1488ccdbe0c56c252596735f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x50bce64397c75488465253c0a034b8097fea6578
+ https://dex.a51.finance/tokens/optimism/0x50bce64397c75488465253c0a034b8097fea6578
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/optimism/0x14778860e937f509e651192a90589de711fb88a9
+ https://dex.a51.finance/tokens/optimism/0x14778860e937f509e651192a90589de711fb88a9
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x2791bca1f2de4661ed88a30c99a7a9449aa84174
+ https://dex.a51.finance/tokens/polygon/0x2791bca1f2de4661ed88a30c99a7a9449aa84174
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619
+ https://dex.a51.finance/tokens/polygon/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270
+ https://dex.a51.finance/tokens/polygon/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xc2132d05d31c914a87c6611c10748aeb04b58e8f
+ https://dex.a51.finance/tokens/polygon/0xc2132d05d31c914a87c6611c10748aeb04b58e8f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x8f3cf7ad23cd3cadbd9735aff958023239c6a063
+ https://dex.a51.finance/tokens/polygon/0x8f3cf7ad23cd3cadbd9735aff958023239c6a063
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6
+ https://dex.a51.finance/tokens/polygon/0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39
+ https://dex.a51.finance/tokens/polygon/0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x77a6f2e9a9e44fd5d5c3f9be9e52831fc1c3c0a0
+ https://dex.a51.finance/tokens/polygon/0x77a6f2e9a9e44fd5d5c3f9be9e52831fc1c3c0a0
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xe0b52e49357fd4daf2c15e02058dce6bc0057db4
+ https://dex.a51.finance/tokens/polygon/0xe0b52e49357fd4daf2c15e02058dce6bc0057db4
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xdc3326e71d45186f113a2f448984ca0e8d201995
+ https://dex.a51.finance/tokens/polygon/0xdc3326e71d45186f113a2f448984ca0e8d201995
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x49e6a20f1bbdfeec2a8222e052000bbb14ee6007
+ https://dex.a51.finance/tokens/polygon/0x49e6a20f1bbdfeec2a8222e052000bbb14ee6007
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x430ef9263e76dae63c84292c3409d61c598e9682
+ https://dex.a51.finance/tokens/polygon/0x430ef9263e76dae63c84292c3409d61c598e9682
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xf88332547c680f755481bf489d890426248bb275
+ https://dex.a51.finance/tokens/polygon/0xf88332547c680f755481bf489d890426248bb275
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xc3c7d422809852031b44ab29eec9f1eff2a58756
+ https://dex.a51.finance/tokens/polygon/0xc3c7d422809852031b44ab29eec9f1eff2a58756
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xd6df932a45c0f255f85145f286ea0b292b21c90b
+ https://dex.a51.finance/tokens/polygon/0xd6df932a45c0f255f85145f286ea0b292b21c90b
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x172370d5cd63279efa6d502dab29171933a610af
+ https://dex.a51.finance/tokens/polygon/0x172370d5cd63279efa6d502dab29171933a610af
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x45c32fa6df82ead1e2ef74d17b76547eddfaff89
+ https://dex.a51.finance/tokens/polygon/0x45c32fa6df82ead1e2ef74d17b76547eddfaff89
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xd0258a3fd00f38aa8090dfee343f10a9d4d30d3f
+ https://dex.a51.finance/tokens/polygon/0xd0258a3fd00f38aa8090dfee343f10a9d4d30d3f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x3a58a54c066fdc0f2d55fc9c89f0415c92ebf3c4
+ https://dex.a51.finance/tokens/polygon/0x3a58a54c066fdc0f2d55fc9c89f0415c92ebf3c4
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xb33eaad8d922b1083446dc23f610c2567fb5180f
+ https://dex.a51.finance/tokens/polygon/0xb33eaad8d922b1083446dc23f610c2567fb5180f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xe5417af564e4bfda1c483642db72007871397896
+ https://dex.a51.finance/tokens/polygon/0xe5417af564e4bfda1c483642db72007871397896
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x311434160d7537be358930def317afb606c0d737
+ https://dex.a51.finance/tokens/polygon/0x311434160d7537be358930def317afb606c0d737
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x61299774020da444af134c82fa83e3810b309991
+ https://dex.a51.finance/tokens/polygon/0x61299774020da444af134c82fa83e3810b309991
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xa3fa99a148fa48d14ed51d610c367c61876997f1
+ https://dex.a51.finance/tokens/polygon/0xa3fa99a148fa48d14ed51d610c367c61876997f1
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x381caf412b45dac0f62fbeec89de306d3eabe384
+ https://dex.a51.finance/tokens/polygon/0x381caf412b45dac0f62fbeec89de306d3eabe384
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x431d5dff03120afa4bdf332c61a6e1766ef37bdb
+ https://dex.a51.finance/tokens/polygon/0x431d5dff03120afa4bdf332c61a6e1766ef37bdb
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xe2aa7db6da1dae97c5f5c6914d285fbfcc32a128
+ https://dex.a51.finance/tokens/polygon/0xe2aa7db6da1dae97c5f5c6914d285fbfcc32a128
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x03b54a6e9a984069379fae1a4fc4dbae93b3bccd
+ https://dex.a51.finance/tokens/polygon/0x03b54a6e9a984069379fae1a4fc4dbae93b3bccd
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xb6a5ae40e79891e4deadad06c8a7ca47396df21c
+ https://dex.a51.finance/tokens/polygon/0xb6a5ae40e79891e4deadad06c8a7ca47396df21c
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xbbba073c31bf03b8acf7c28ef0738decf3695683
+ https://dex.a51.finance/tokens/polygon/0xbbba073c31bf03b8acf7c28ef0738decf3695683
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xa486c6bc102f409180ccb8a94ba045d39f8fc7cb
+ https://dex.a51.finance/tokens/polygon/0xa486c6bc102f409180ccb8a94ba045d39f8fc7cb
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x0308a3a9c433256ad7ef24dbef9c49c8cb01300a
+ https://dex.a51.finance/tokens/polygon/0x0308a3a9c433256ad7ef24dbef9c49c8cb01300a
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xe631dabef60c37a37d70d3b4f812871df663226f
+ https://dex.a51.finance/tokens/polygon/0xe631dabef60c37a37d70d3b4f812871df663226f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x8a16d4bf8a0a716017e8d2262c4ac32927797a2f
+ https://dex.a51.finance/tokens/polygon/0x8a16d4bf8a0a716017e8d2262c4ac32927797a2f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3
+ https://dex.a51.finance/tokens/polygon/0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x553d3d295e0f695b9228246232edf400ed3560b5
+ https://dex.a51.finance/tokens/polygon/0x553d3d295e0f695b9228246232edf400ed3560b5
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xe238ecb42c424e877652ad82d8a939183a04c35f
+ https://dex.a51.finance/tokens/polygon/0xe238ecb42c424e877652ad82d8a939183a04c35f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xe261d618a959afffd53168cd07d12e37b26761db
+ https://dex.a51.finance/tokens/polygon/0xe261d618a959afffd53168cd07d12e37b26761db
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x15e99d827c1d2fc2b9b5312d1e71713c88110bdb
+ https://dex.a51.finance/tokens/polygon/0x15e99d827c1d2fc2b9b5312d1e71713c88110bdb
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a
+ https://dex.a51.finance/tokens/polygon/0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xe111178a87a3bff0c8d18decba5798827539ae99
+ https://dex.a51.finance/tokens/polygon/0xe111178a87a3bff0c8d18decba5798827539ae99
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x5fe2b58c013d7601147dcdd68c143a77499f5531
+ https://dex.a51.finance/tokens/polygon/0x5fe2b58c013d7601147dcdd68c143a77499f5531
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x2ab0e9e4ee70fff1fb9d67031e44f6410170d00e
+ https://dex.a51.finance/tokens/polygon/0x2ab0e9e4ee70fff1fb9d67031e44f6410170d00e
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xac0f66379a6d7801d7726d5a943356a172549adb
+ https://dex.a51.finance/tokens/polygon/0xac0f66379a6d7801d7726d5a943356a172549adb
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x71eeba415a523f5c952cc2f06361d5443545ad28
+ https://dex.a51.finance/tokens/polygon/0x71eeba415a523f5c952cc2f06361d5443545ad28
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xf2ae0038696774d65e67892c9d301c5f2cbbda58
+ https://dex.a51.finance/tokens/polygon/0xf2ae0038696774d65e67892c9d301c5f2cbbda58
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x50b728d8d964fd00c2d0aad81718b71311fef68a
+ https://dex.a51.finance/tokens/polygon/0x50b728d8d964fd00c2d0aad81718b71311fef68a
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xb0b195aefa3650a6908f15cdac7d92f8a5791b0b
+ https://dex.a51.finance/tokens/polygon/0xb0b195aefa3650a6908f15cdac7d92f8a5791b0b
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x235737dbb56e8517391473f7c964db31fa6ef280
+ https://dex.a51.finance/tokens/polygon/0x235737dbb56e8517391473f7c964db31fa6ef280
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x820802fa8a99901f52e39acd21177b0be6ee2974
+ https://dex.a51.finance/tokens/polygon/0x820802fa8a99901f52e39acd21177b0be6ee2974
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xfa68fb4628dff1028cfec22b4162fccd0d45efb6
+ https://dex.a51.finance/tokens/polygon/0xfa68fb4628dff1028cfec22b4162fccd0d45efb6
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x18ec0a6e18e5bc3784fdd3a3634b31245ab704f6
+ https://dex.a51.finance/tokens/polygon/0x18ec0a6e18e5bc3784fdd3a3634b31245ab704f6
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x2f6f07cdcf3588944bf4c42ac74ff24bf56e7590
+ https://dex.a51.finance/tokens/polygon/0x2f6f07cdcf3588944bf4c42ac74ff24bf56e7590
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x5a7bb7b8eff493625a2bb855445911e63a490e42
+ https://dex.a51.finance/tokens/polygon/0x5a7bb7b8eff493625a2bb855445911e63a490e42
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xc708d6f2153933daa50b2d0758955be0a93a8fec
+ https://dex.a51.finance/tokens/polygon/0xc708d6f2153933daa50b2d0758955be0a93a8fec
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x11cd37bb86f65419713f30673a480ea33c826872
+ https://dex.a51.finance/tokens/polygon/0x11cd37bb86f65419713f30673a480ea33c826872
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xc59132fbdf8de8fbe510f568a5d831c991b4fc38
+ https://dex.a51.finance/tokens/polygon/0xc59132fbdf8de8fbe510f568a5d831c991b4fc38
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4
+ https://dex.a51.finance/tokens/polygon/0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0xed755dba6ec1eb520076cec051a582a6d81a8253
+ https://dex.a51.finance/tokens/polygon/0xed755dba6ec1eb520076cec051a582a6d81a8253
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/polygon/0x3b7e1ce09afe2bb3a23919afb65a38e627cfbe97
+ https://dex.a51.finance/tokens/polygon/0x3b7e1ce09afe2bb3a23919afb65a38e627cfbe97
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/base/0x4200000000000000000000000000000000000006
+ https://dex.a51.finance/tokens/base/0x4200000000000000000000000000000000000006
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/base/0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca
+ https://dex.a51.finance/tokens/base/0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/base/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913
+ https://dex.a51.finance/tokens/base/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/base/0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22
+ https://dex.a51.finance/tokens/base/0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/base/0x236aa50979d5f3de3bd1eeb40e81137f22ab794b
+ https://dex.a51.finance/tokens/base/0x236aa50979d5f3de3bd1eeb40e81137f22ab794b
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/bnb/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c
+ https://dex.a51.finance/tokens/bnb/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/bnb/0x55d398326f99059ff775485246999027b3197955
+ https://dex.a51.finance/tokens/bnb/0x55d398326f99059ff775485246999027b3197955
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/bnb/0x2170ed0880ac9a755fd29b2688956bd959f933f8
+ https://dex.a51.finance/tokens/bnb/0x2170ed0880ac9a755fd29b2688956bd959f933f8
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/bnb/0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d
+ https://dex.a51.finance/tokens/bnb/0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/bnb/0xe9e7cea3dedca5984780bafc599bd69add087d56
+ https://dex.a51.finance/tokens/bnb/0xe9e7cea3dedca5984780bafc599bd69add087d56
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/bnb/0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd
+ https://dex.a51.finance/tokens/bnb/0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/bnb/0xd691d9a68c887bdf34da8c36f63487333acfd103
+ https://dex.a51.finance/tokens/bnb/0xd691d9a68c887bdf34da8c36f63487333acfd103
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/bnb/0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3
+ https://dex.a51.finance/tokens/bnb/0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/bnb/0x031b41e504677879370e9dbcf937283a8691fa7f
+ https://dex.a51.finance/tokens/bnb/0x031b41e504677879370e9dbcf937283a8691fa7f
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/bnb/0xb0d502e938ed5f4df2e681fe6e419ff29631d62b
+ https://dex.a51.finance/tokens/bnb/0xb0d502e938ed5f4df2e681fe6e419ff29631d62b
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/bnb/0xa2b726b1145a4773f68593cf171187d8ebe4d495
+ https://dex.a51.finance/tokens/bnb/0xa2b726b1145a4773f68593cf171187d8ebe4d495
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/celo/0x66803fb87abd4aac3cbb3fad7c3aa01f6f3fb207
+ https://dex.a51.finance/tokens/celo/0x66803fb87abd4aac3cbb3fad7c3aa01f6f3fb207
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/celo/0x471ece3750da237f93b8e339c536989b8978a438
+ https://dex.a51.finance/tokens/celo/0x471ece3750da237f93b8e339c536989b8978a438
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/celo/0x765de816845861e75a25fca122bb6898b8b1282a
+ https://dex.a51.finance/tokens/celo/0x765de816845861e75a25fca122bb6898b8b1282a
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/celo/0x37f750b7cc259a2f741af45294f6a16572cf5cad
+ https://dex.a51.finance/tokens/celo/0x37f750b7cc259a2f741af45294f6a16572cf5cad
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/celo/0xd71ffd0940c920786ec4dbb5a12306669b5b81ef
+ https://dex.a51.finance/tokens/celo/0xd71ffd0940c920786ec4dbb5a12306669b5b81ef
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/celo/0xd8763cba276a3738e6de85b4b3bf5fded6d6ca73
+ https://dex.a51.finance/tokens/celo/0xd8763cba276a3738e6de85b4b3bf5fded6d6ca73
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/celo/0x4f604735c1cf31399c6e711d5962b2b3e0225ad3
+ https://dex.a51.finance/tokens/celo/0x4f604735c1cf31399c6e711d5962b2b3e0225ad3
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/celo/0x62b8b11039fcfe5ab0c56e502b1c372a3d2a9c7a
+ https://dex.a51.finance/tokens/celo/0x62b8b11039fcfe5ab0c56e502b1c372a3d2a9c7a
2023-10-11T19:57:27.976Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x5de8ab7e27f6e7a1fff3e5b337584aa43961beef
+ https://dex.a51.finance/tokens/ethereum/0x5de8ab7e27f6e7a1fff3e5b337584aa43961beef
2023-10-11T23:21:06.433Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x940a2db1b7008b6c776d4faaca729d6d4a4aa551
+ https://dex.a51.finance/tokens/ethereum/0x940a2db1b7008b6c776d4faaca729d6d4a4aa551
2023-10-11T23:21:06.433Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x80f0c1c49891dcfdd40b6e0f960f84e6042bcb6f
+ https://dex.a51.finance/tokens/ethereum/0x80f0c1c49891dcfdd40b6e0f960f84e6042bcb6f
2023-10-11T23:21:06.433Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x1622bf67e6e5747b81866fe0b85178a93c7f86e3
+ https://dex.a51.finance/tokens/arbitrum/0x1622bf67e6e5747b81866fe0b85178a93c7f86e3
2023-10-11T23:21:06.433Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x031d35296154279dc1984dcd93e392b1f946737b
+ https://dex.a51.finance/tokens/arbitrum/0x031d35296154279dc1984dcd93e392b1f946737b
2023-10-11T23:21:06.433Z
0.8
- https://app.uniswap.org/tokens/optimism/0xdfa46478f9e5ea86d57387849598dbfb2e964b02
+ https://dex.a51.finance/tokens/optimism/0xdfa46478f9e5ea86d57387849598dbfb2e964b02
2023-10-11T23:21:06.433Z
0.8
- https://app.uniswap.org/tokens/polygon/0x104592a158490a9228070e0a8e5343b499e125d0
+ https://dex.a51.finance/tokens/polygon/0x104592a158490a9228070e0a8e5343b499e125d0
2023-10-11T23:21:06.433Z
0.8
- https://app.uniswap.org/tokens/polygon/0x4e3decbb3645551b8a19f0ea1678079fcb33fb4c
+ https://dex.a51.finance/tokens/polygon/0x4e3decbb3645551b8a19f0ea1678079fcb33fb4c
2023-10-11T23:21:06.433Z
0.8
- https://app.uniswap.org/tokens/bnb/0xb0b195aefa3650a6908f15cdac7d92f8a5791b0b
+ https://dex.a51.finance/tokens/bnb/0xb0b195aefa3650a6908f15cdac7d92f8a5791b0b
2023-10-11T23:21:06.433Z
0.8
- https://app.uniswap.org/tokens/celo/0x02de4766c272abc10bc88c220d214a26960a7e92
+ https://dex.a51.finance/tokens/celo/0x02de4766c272abc10bc88c220d214a26960a7e92
2023-10-11T23:21:06.433Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x42476f744292107e34519f9c357927074ea3f75d
+ https://dex.a51.finance/tokens/ethereum/0x42476f744292107e34519f9c357927074ea3f75d
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x056fd409e1d7a124bd7017459dfea2f387b6d5cd
+ https://dex.a51.finance/tokens/ethereum/0x056fd409e1d7a124bd7017459dfea2f387b6d5cd
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x644192291cc835a93d6330b24ea5f5fedd0eef9e
+ https://dex.a51.finance/tokens/ethereum/0x644192291cc835a93d6330b24ea5f5fedd0eef9e
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x3472a5a71965499acd81997a54bba8d852c6e53d
+ https://dex.a51.finance/tokens/ethereum/0x3472a5a71965499acd81997a54bba8d852c6e53d
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xa35923162c49cf95e6bf26623385eb431ad920d3
+ https://dex.a51.finance/tokens/ethereum/0xa35923162c49cf95e6bf26623385eb431ad920d3
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x04fa0d235c4abf4bcf4787af4cf447de572ef828
+ https://dex.a51.finance/tokens/ethereum/0x04fa0d235c4abf4bcf4787af4cf447de572ef828
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x595832f8fc6bf59c85c527fec3740a1b7a361269
+ https://dex.a51.finance/tokens/ethereum/0x595832f8fc6bf59c85c527fec3740a1b7a361269
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x6123b0049f904d730db3c36a31167d9d4121fa6b
+ https://dex.a51.finance/tokens/ethereum/0x6123b0049f904d730db3c36a31167d9d4121fa6b
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x0391d2021f89dc339f60fff84546ea23e337750f
+ https://dex.a51.finance/tokens/ethereum/0x0391d2021f89dc339f60fff84546ea23e337750f
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xd31a59c85ae9d8edefec411d448f90841571b89c
+ https://dex.a51.finance/tokens/ethereum/0xd31a59c85ae9d8edefec411d448f90841571b89c
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x8a7b7b9b2f7d0c63f66171721339705a6188a7d5
+ https://dex.a51.finance/tokens/ethereum/0x8a7b7b9b2f7d0c63f66171721339705a6188a7d5
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x0176b898e92e814c06cc379e508ceb571f70bd40
+ https://dex.a51.finance/tokens/ethereum/0x0176b898e92e814c06cc379e508ceb571f70bd40
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9
+ https://dex.a51.finance/tokens/ethereum/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x0f2d719407fdbeff09d87557abb7232601fd9f29
+ https://dex.a51.finance/tokens/ethereum/0x0f2d719407fdbeff09d87557abb7232601fd9f29
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x84ca8bc7997272c7cfb4d0cd3d55cd942b3c9419
+ https://dex.a51.finance/tokens/ethereum/0x84ca8bc7997272c7cfb4d0cd3d55cd942b3c9419
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xd3e4ba569045546d09cf021ecc5dfe42b1d7f6e4
+ https://dex.a51.finance/tokens/ethereum/0xd3e4ba569045546d09cf021ecc5dfe42b1d7f6e4
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x0fd10b9899882a6f2fcb5c371e17e70fdee00c38
+ https://dex.a51.finance/tokens/ethereum/0x0fd10b9899882a6f2fcb5c371e17e70fdee00c38
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x4cff49d0a19ed6ff845a9122fa912abcfb1f68a6
+ https://dex.a51.finance/tokens/ethereum/0x4cff49d0a19ed6ff845a9122fa912abcfb1f68a6
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x7b744eea1deca2f1b7b31f15ba036fa1759452d7
+ https://dex.a51.finance/tokens/ethereum/0x7b744eea1deca2f1b7b31f15ba036fa1759452d7
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x50327c6c5a14dcade707abad2e27eb517df87ab5
+ https://dex.a51.finance/tokens/ethereum/0x50327c6c5a14dcade707abad2e27eb517df87ab5
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x88df592f8eb5d7bd38bfef7deb0fbc02cf3778a0
+ https://dex.a51.finance/tokens/ethereum/0x88df592f8eb5d7bd38bfef7deb0fbc02cf3778a0
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x9e976f211daea0d652912ab99b0dc21a7fd728e4
+ https://dex.a51.finance/tokens/ethereum/0x9e976f211daea0d652912ab99b0dc21a7fd728e4
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xb05097849bca421a3f51b249ba6cca4af4b97cb9
+ https://dex.a51.finance/tokens/ethereum/0xb05097849bca421a3f51b249ba6cca4af4b97cb9
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0xdbecdd726f6ad8e24afc78fe3cc8eb7b73c2d94d
+ https://dex.a51.finance/tokens/ethereum/0xdbecdd726f6ad8e24afc78fe3cc8eb7b73c2d94d
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xa684cd057951541187f288294a1e1c2646aa2d24
+ https://dex.a51.finance/tokens/arbitrum/0xa684cd057951541187f288294a1e1c2646aa2d24
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x61a1ff55c5216b636a294a07d77c6f4df10d3b56
+ https://dex.a51.finance/tokens/arbitrum/0x61a1ff55c5216b636a294a07d77c6f4df10d3b56
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xba5ddd1f9d7f570dc94a51479a000e3bce967196
+ https://dex.a51.finance/tokens/arbitrum/0xba5ddd1f9d7f570dc94a51479a000e3bce967196
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0xf19547f9ed24aa66b03c3a552d181ae334fbb8db
+ https://dex.a51.finance/tokens/arbitrum/0xf19547f9ed24aa66b03c3a552d181ae334fbb8db
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x31c91d8fb96bff40955dd2dbc909b36e8b104dde
+ https://dex.a51.finance/tokens/arbitrum/0x31c91d8fb96bff40955dd2dbc909b36e8b104dde
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x4945970efeec98d393b4b979b9be265a3ae28a8b
+ https://dex.a51.finance/tokens/arbitrum/0x4945970efeec98d393b4b979b9be265a3ae28a8b
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x11cdb42b0eb46d95f990bedd4695a6e3fa034978
+ https://dex.a51.finance/tokens/arbitrum/0x11cdb42b0eb46d95f990bedd4695a6e3fa034978
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x561877b6b3dd7651313794e5f2894b2f18be0766
+ https://dex.a51.finance/tokens/arbitrum/0x561877b6b3dd7651313794e5f2894b2f18be0766
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x6c84a8f1c29108f47a79964b5fe888d4f4d0de40
+ https://dex.a51.finance/tokens/arbitrum/0x6c84a8f1c29108f47a79964b5fe888d4f4d0de40
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x6c2c06790b3e3e3c38e12ee22f8183b37a13ee55
+ https://dex.a51.finance/tokens/arbitrum/0x6c2c06790b3e3e3c38e12ee22f8183b37a13ee55
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x53bcf6698c911b2a7409a740eacddb901fc2a2c6
+ https://dex.a51.finance/tokens/arbitrum/0x53bcf6698c911b2a7409a740eacddb901fc2a2c6
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/arbitrum/0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b
+ https://dex.a51.finance/tokens/arbitrum/0x09e18590e8f76b6cf471b3cd75fe1a1a9d2b2c2b
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/optimism/0x6c84a8f1c29108f47a79964b5fe888d4f4d0de40
+ https://dex.a51.finance/tokens/optimism/0x6c84a8f1c29108f47a79964b5fe888d4f4d0de40
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/optimism/0x747e42eb0591547a0ab429b3627816208c734ea7
+ https://dex.a51.finance/tokens/optimism/0x747e42eb0591547a0ab429b3627816208c734ea7
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/polygon/0x8a953cfe442c5e8855cc6c61b1293fa648bae472
+ https://dex.a51.finance/tokens/polygon/0x8a953cfe442c5e8855cc6c61b1293fa648bae472
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/polygon/0xa9f37d84c856fda3812ad0519dad44fa0a3fe207
+ https://dex.a51.finance/tokens/polygon/0xa9f37d84c856fda3812ad0519dad44fa0a3fe207
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/polygon/0x62a872d9977db171d9e213a5dc2b782e72ca0033
+ https://dex.a51.finance/tokens/polygon/0x62a872d9977db171d9e213a5dc2b782e72ca0033
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/polygon/0x73a4dc4215dc3eb6aae3c7aafd2514cb34e5d983
+ https://dex.a51.finance/tokens/polygon/0x73a4dc4215dc3eb6aae3c7aafd2514cb34e5d983
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/polygon/0xb87904db461005fc716a6bf9f2d451c33b10b80b
+ https://dex.a51.finance/tokens/polygon/0xb87904db461005fc716a6bf9f2d451c33b10b80b
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/polygon/0x4f604735c1cf31399c6e711d5962b2b3e0225ad3
+ https://dex.a51.finance/tokens/polygon/0x4f604735c1cf31399c6e711d5962b2b3e0225ad3
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/polygon/0x2760e46d9bb43dafcbecaad1f64b93207f9f0ed7
+ https://dex.a51.finance/tokens/polygon/0x2760e46d9bb43dafcbecaad1f64b93207f9f0ed7
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/polygon/0x9dbfc1cbf7a1e711503a29b4b5f9130ebeccac96
+ https://dex.a51.finance/tokens/polygon/0x9dbfc1cbf7a1e711503a29b4b5f9130ebeccac96
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/polygon/0x1631244689ec1fecbdd22fb5916e920dfc9b8d30
+ https://dex.a51.finance/tokens/polygon/0x1631244689ec1fecbdd22fb5916e920dfc9b8d30
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/polygon/0x40379a439d4f6795b6fc9aa5687db461677a2dba
+ https://dex.a51.finance/tokens/polygon/0x40379a439d4f6795b6fc9aa5687db461677a2dba
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/polygon/0x0e9b89007eee9c958c0eda24ef70723c2c93dd58
+ https://dex.a51.finance/tokens/polygon/0x0e9b89007eee9c958c0eda24ef70723c2c93dd58
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/polygon/0xff76c0b48363a7c7307868a81548d340049b0023
+ https://dex.a51.finance/tokens/polygon/0xff76c0b48363a7c7307868a81548d340049b0023
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/base/0x8fbd0648971d56f1f2c35fa075ff5bc75fb0e39d
+ https://dex.a51.finance/tokens/base/0x8fbd0648971d56f1f2c35fa075ff5bc75fb0e39d
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/bnb/0x111111111117dc0aa78b770fa6a738034120c302
+ https://dex.a51.finance/tokens/bnb/0x111111111117dc0aa78b770fa6a738034120c302
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/bnb/0xcc42724c6683b7e57334c4e856f4c9965ed682bd
+ https://dex.a51.finance/tokens/bnb/0xcc42724c6683b7e57334c4e856f4c9965ed682bd
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/bnb/0x90ed8f1dc86388f14b64ba8fb4bbd23099f18240
+ https://dex.a51.finance/tokens/bnb/0x90ed8f1dc86388f14b64ba8fb4bbd23099f18240
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/celo/0x9995cc8f20db5896943afc8ee0ba463259c931ed
+ https://dex.a51.finance/tokens/celo/0x9995cc8f20db5896943afc8ee0ba463259c931ed
2023-10-16T18:42:53.632Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x03ab458634910aad20ef5f1c8ee96f1d6ac54919
+ https://dex.a51.finance/tokens/ethereum/0x03ab458634910aad20ef5f1c8ee96f1d6ac54919
2023-10-16T19:49:27.657Z
0.8
- https://app.uniswap.org/tokens/ethereum/0x15f74458ae0bfdaa1a96ca1aa779d715cc1eefe4
+ https://dex.a51.finance/tokens/ethereum/0x15f74458ae0bfdaa1a96ca1aa779d715cc1eefe4
2023-10-16T19:49:27.657Z
0.8
- https://app.uniswap.org/tokens/base/0xfa980ced6895ac314e7de34ef1bfae90a5add21b
+ https://dex.a51.finance/tokens/base/0xfa980ced6895ac314e7de34ef1bfae90a5add21b
2023-10-16T19:49:27.657Z
0.8
diff --git a/src/components/About/ProtocolBanner.tsx b/src/components/About/ProtocolBanner.tsx
deleted file mode 100644
index 9eb04a01f48..00000000000
--- a/src/components/About/ProtocolBanner.tsx
+++ /dev/null
@@ -1,106 +0,0 @@
-import { ButtonEmpty } from 'components/Button'
-import styled from 'styled-components'
-import { BREAKPOINTS } from 'theme'
-import { useIsDarkMode } from 'theme/components/ThemeToggle'
-
-import meshSrc from './images/Mesh.png'
-
-const DARK_MODE_GRADIENT = 'radial-gradient(101.8% 4091.31% at 0% 0%, #4673FA 0%, #9646FA 100%)'
-
-const Banner = styled.div<{ isDarkMode: boolean }>`
- height: 340px;
- width: 100%;
- border-radius: 32px;
- max-width: 1440px;
- margin: 80px 0;
-
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: space-between;
- padding: 32px 48px;
-
- box-shadow: 0px 10px 24px rgba(51, 53, 72, 0.04);
-
- background: ${({ isDarkMode }) =>
- isDarkMode
- ? `url(${meshSrc}), ${DARK_MODE_GRADIENT}`
- : `url(${meshSrc}), linear-gradient(93.06deg, #FF00C7 2.66%, #FF9FFB 98.99%);`};
-
- @media screen and (min-width: ${BREAKPOINTS.lg}px) {
- height: 140px;
- flex-direction: row;
- }
-`
-
-const TextContainer = styled.div`
- color: white;
- display: flex;
- flex: 1;
- flex-direction: column;
-`
-
-const HeaderText = styled.div`
- font-weight: 535;
- font-size: 28px;
- line-height: 36px;
-
- @media screen and (min-width: ${BREAKPOINTS.xl}px) {
- font-size: 28px;
- line-height: 36px;
- }
-`
-
-const DescriptionText = styled.div`
- margin: 10px 10px 0 0;
- font-weight: 535;
- font-size: 16px;
- line-height: 20px;
-
- @media screen and (min-width: ${BREAKPOINTS.xl}px) {
- font-size: 20px;
- line-height: 28px;
- }
-`
-
-const BannerButtonContainer = styled.div`
- width: 100%;
- display: flex;
- align-items: center;
-
- transition: ${({ theme }) => `${theme.transition.duration.medium} ${theme.transition.timing.ease} opacity`};
-
- &:hover {
- opacity: 0.6;
- }
-
- @media screen and (min-width: ${BREAKPOINTS.lg}px) {
- width: auto;
- }
-`
-
-const BannerButton = styled(ButtonEmpty)`
- color: white;
- border: 1px solid white;
-`
-
-const ProtocolBanner = () => {
- const isDarkMode = useIsDarkMode()
- return (
-
-
- Powered by the Uniswap Protocol
-
- The leading decentralized crypto trading protocol, governed by a global community.
-
-
-
-
- Learn more
-
-
-
- )
-}
-
-export default ProtocolBanner
diff --git a/src/components/AccountDrawer/DownloadButton.tsx b/src/components/AccountDrawer/DownloadButton.tsx
deleted file mode 100644
index cc7ff243f6e..00000000000
--- a/src/components/AccountDrawer/DownloadButton.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import { InterfaceElementName } from '@uniswap/analytics-events'
-import { PropsWithChildren, useCallback } from 'react'
-import styled from 'styled-components'
-import { ClickableStyle } from 'theme/components'
-import { openDownloadApp } from 'utils/openDownloadApp'
-
-const StyledButton = styled.button<{ padded?: boolean; branded?: boolean }>`
- ${ClickableStyle}
- width: 100%;
- display: flex;
- justify-content: center;
- flex-direction: row;
- gap: 6px;
- padding: 8px 24px;
- border: none;
- white-space: nowrap;
- background: ${({ theme, branded }) => (branded ? theme.accent1 : theme.surface3)};
- border-radius: 12px;
-
- font-weight: 535;
- font-size: 14px;
- line-height: 16px;
- color: ${({ theme, branded }) => (branded ? theme.deprecated_accentTextLightPrimary : theme.neutral1)};
-`
-
-function BaseButton({ onClick, branded, children }: PropsWithChildren<{ onClick?: () => void; branded?: boolean }>) {
- return (
-
- {children}
-
- )
-}
-
-// Launches App Store if on an iOS device, else navigates to Uniswap Wallet microsite
-export function DownloadButton({
- onClick,
- text = 'Download',
- element,
-}: {
- onClick?: () => void
- text?: string
- element: InterfaceElementName
-}) {
- const onButtonClick = useCallback(() => {
- // handles any actions required by the parent, i.e. cancelling wallet connection attempt or dismissing an ad
- onClick?.()
- openDownloadApp({ element })
- }, [element, onClick])
-
- return (
-
- {text}
-
- )
-}
diff --git a/src/components/AccountDrawer/MiniPortfolio/Activity/fixtures/activity.ts b/src/components/AccountDrawer/MiniPortfolio/Activity/fixtures/activity.ts
index fc69e280573..edcc22e16fb 100644
--- a/src/components/AccountDrawer/MiniPortfolio/Activity/fixtures/activity.ts
+++ b/src/components/AccountDrawer/MiniPortfolio/Activity/fixtures/activity.ts
@@ -12,8 +12,6 @@ import {
TransactionType,
} from 'graphql/data/__generated__/types-and-hooks'
-import { MOONPAY_SENDER_ADDRESSES } from '../../constants'
-
const MockOrderTimestamp = 10000
const MockRecipientAddress = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
const MockSenderAddress = '0x50EC05ADe8280758E2077fcBC08D878D4aef79C3'
@@ -469,20 +467,6 @@ export const MockRemoveLiquidity = {
},
} as AssetActivityPartsFragment
-export const MockMoonpayPurchase = {
- ...mockAssetActivityPartsFragment,
- details: {
- ...commonTransactionDetailsFields,
- type: TransactionType.Receive,
- assetChanges: [
- {
- ...mockTokenTransferInPartsFragment,
- sender: MOONPAY_SENDER_ADDRESSES[0],
- },
- ],
- },
-} as AssetActivityPartsFragment
-
export const MockNFTReceive = {
...mockAssetActivityPartsFragment,
details: {
diff --git a/src/components/AccountDrawer/MiniPortfolio/Activity/parseRemote.test.tsx b/src/components/AccountDrawer/MiniPortfolio/Activity/parseRemote.test.tsx
index ae26c660604..76aaa782a42 100644
--- a/src/components/AccountDrawer/MiniPortfolio/Activity/parseRemote.test.tsx
+++ b/src/components/AccountDrawer/MiniPortfolio/Activity/parseRemote.test.tsx
@@ -3,7 +3,6 @@ import ms from 'ms'
import {
MockClosedUniswapXOrder,
- MockMoonpayPurchase,
MockNFTApproval,
MockNFTApprovalForAll,
MockNFTPurchase,
@@ -73,10 +72,6 @@ describe('parseRemote', () => {
const result = parseRemoteActivities(jest.fn().mockReturnValue(100), [MockRemoveLiquidity])
expect(result?.['someHash']).toMatchSnapshot()
})
- it('should parse moonpay purchase', () => {
- const result = parseRemoteActivities(jest.fn().mockReturnValue('100'), [MockMoonpayPurchase])
- expect(result?.['someHash']).toMatchSnapshot()
- })
it('should parse swap order', () => {
const result = parseRemoteActivities(jest.fn().mockReturnValue('100'), [MockSwapOrder])
expect(result?.['someHash']).toMatchSnapshot()
diff --git a/src/components/AccountDrawer/MiniPortfolio/Activity/parseRemote.tsx b/src/components/AccountDrawer/MiniPortfolio/Activity/parseRemote.tsx
index a5907ed2f7d..a36c25513ab 100644
--- a/src/components/AccountDrawer/MiniPortfolio/Activity/parseRemote.tsx
+++ b/src/components/AccountDrawer/MiniPortfolio/Activity/parseRemote.tsx
@@ -1,7 +1,6 @@
import { t } from '@lingui/macro'
import { ChainId, Currency, NONFUNGIBLE_POSITION_MANAGER_ADDRESSES, UNI_ADDRESSES } from '@uniswap/sdk-core'
import UniswapXBolt from 'assets/svg/bolt.svg'
-import moonpayLogoSrc from 'assets/svg/moonpay.svg'
import { nativeOnChain } from 'constants/tokens'
import {
ActivityType,
@@ -24,7 +23,7 @@ import { isAddress } from 'utils'
import { isSameAddress } from 'utils/addresses'
import { NumberType, useFormatter } from 'utils/formatNumbers'
-import { MOONPAY_SENDER_ADDRESSES, OrderStatusTable, OrderTextTable } from '../constants'
+import { OrderStatusTable, OrderTextTable } from '../constants'
import { Activity } from './types'
type TransactionChanges = {
@@ -250,36 +249,12 @@ function parseSendReceive(
currencies = [gqlToCurrency(transfer.asset)]
}
- if (transfer && assetName && amount) {
- const isMoonpayPurchase = MOONPAY_SENDER_ADDRESSES.some((address) => isSameAddress(address, transfer?.sender))
-
- if (transfer.direction === 'IN') {
- return isMoonpayPurchase && transfer.__typename === 'TokenTransfer'
- ? {
- title: t`Purchased`,
- descriptor: `${amount} ${assetName} ${t`for`} ${formatNumberOrString({
- input: getTransactedValue(transfer.transactedValue),
- type: NumberType.FiatTokenPrice,
- })}`,
- logos: [moonpayLogoSrc],
- currencies,
- }
- : {
- title: t`Received`,
- descriptor: `${amount} ${assetName} ${t`from`} `,
- otherAccount: isAddress(transfer.sender) || undefined,
- currencies,
- }
- } else {
- return {
- title: t`Sent`,
- descriptor: `${amount} ${assetName} ${t`to`} `,
- otherAccount: isAddress(transfer.recipient) || undefined,
- currencies,
- }
- }
+ return {
+ title: t`Sent`,
+ descriptor: `${amount} ${assetName} ${t`to`} `,
+ otherAccount: isAddress(transfer?.recipient) || undefined,
+ currencies,
}
- return { title: t`Unknown Send` }
}
function parseMint(
diff --git a/src/components/AccountDrawer/MiniPortfolio/constants.tsx b/src/components/AccountDrawer/MiniPortfolio/constants.tsx
index d9033c60ec5..62fb9f37e13 100644
--- a/src/components/AccountDrawer/MiniPortfolio/constants.tsx
+++ b/src/components/AccountDrawer/MiniPortfolio/constants.tsx
@@ -221,14 +221,6 @@ export const OrderTextTable: {
},
}
-// Non-exhaustive list of addresses Moonpay uses when sending purchased tokens
-export const MOONPAY_SENDER_ADDRESSES = [
- '0x8216874887415e2650d12d53ff53516f04a74fd7',
- '0x151b381058f91cf871e7ea1ee83c45326f61e96d',
- '0xb287eac48ab21c5fb1d3723830d60b4c797555b0',
- '0xd108fd0e8c8e71552a167e7a44ff1d345d233ba6',
-]
-
// Converts GQL backend orderStatus enum to the enum used by the frontend and UniswapX backend
export const OrderStatusTable: { [key in SwapOrderStatus]: UniswapXOrderStatus } = {
[SwapOrderStatus.Open]: UniswapXOrderStatus.OPEN,
diff --git a/src/components/AccountDrawer/UniwalletModal.tsx b/src/components/AccountDrawer/UniwalletModal.tsx
deleted file mode 100644
index c85484c40ff..00000000000
--- a/src/components/AccountDrawer/UniwalletModal.tsx
+++ /dev/null
@@ -1,122 +0,0 @@
-import { Trans } from '@lingui/macro'
-import { InterfaceElementName } from '@uniswap/analytics-events'
-import { WalletConnect as WalletConnectv2 } from '@web3-react/walletconnect-v2'
-import { sendAnalyticsEvent } from 'analytics'
-import Column, { AutoColumn } from 'components/Column'
-import Modal from 'components/Modal'
-import { RowBetween } from 'components/Row'
-import { uniwalletWCV2ConnectConnection } from 'connection'
-import { ActivationStatus, useActivationState } from 'connection/activate'
-import { ConnectionType } from 'connection/types'
-import { UniwalletConnect as UniwalletConnectV2 } from 'connection/WalletConnectV2'
-import { QRCodeSVG } from 'qrcode.react'
-import { useEffect, useState } from 'react'
-import styled, { useTheme } from 'styled-components'
-import { CloseIcon, ThemedText } from 'theme/components'
-import { isIOS } from 'utils/userAgent'
-
-import uniPng from '../../assets/images/uniwallet_modal_icon.png'
-import { DownloadButton } from './DownloadButton'
-
-const UniwalletConnectWrapper = styled(RowBetween)`
- display: flex;
- flex-direction: column;
- padding: 20px 16px 16px;
-`
-const HeaderRow = styled(RowBetween)`
- display: flex;
-`
-const QRCodeWrapper = styled(RowBetween)`
- aspect-ratio: 1;
- border-radius: 12px;
- background-color: ${({ theme }) => theme.white};
- margin: 24px 32px 20px;
- padding: 10px;
-`
-const Divider = styled.div`
- border-bottom: 1px solid ${({ theme }) => theme.surface3};
- width: 100%;
-`
-
-export default function UniwalletModal() {
- const { activationState, cancelActivation } = useActivationState()
- const [uri, setUri] = useState()
-
- // Displays the modal if not on iOS, a Uniswap Wallet Connection is pending, & qrcode URI is available
- const open =
- !isIOS &&
- activationState.status === ActivationStatus.PENDING &&
- activationState.connection.type === ConnectionType.UNISWAP_WALLET_V2 &&
- !!uri
-
- useEffect(() => {
- const connectorV2 = uniwalletWCV2ConnectConnection.connector as WalletConnectv2
- connectorV2.events.addListener(UniwalletConnectV2.UNI_URI_AVAILABLE, (uri: string) => {
- uri && setUri(uri)
- })
- }, [])
-
- useEffect(() => {
- if (open) sendAnalyticsEvent('Uniswap wallet modal opened')
- }, [open])
-
- const theme = useTheme()
- return (
-
-
-
-
- Scan with Uniswap Wallet
-
-
-
-
- {uri && (
-
- )}
-
-
-
-
-
- )
-}
-
-const InfoSectionWrapper = styled(RowBetween)`
- display: flex;
- flex-direction: row;
- padding-top: 20px;
- gap: 20px;
-`
-
-function InfoSection() {
- return (
-
-
-
- Don't have Uniswap Wallet?
-
-
-
- Download in the App Store to safely store your tokens and NFTs, swap tokens, and connect to crypto apps.
-
-
-
-
-
-
-
- )
-}
diff --git a/src/components/Banner/BaseAnnouncementBanner/index.tsx b/src/components/Banner/BaseAnnouncementBanner/index.tsx
deleted file mode 100644
index 5bee383ca46..00000000000
--- a/src/components/Banner/BaseAnnouncementBanner/index.tsx
+++ /dev/null
@@ -1,92 +0,0 @@
-import { Trans } from '@lingui/macro'
-import { InterfaceElementName } from '@uniswap/analytics-events'
-import { ChainId } from '@uniswap/sdk-core'
-import { useWeb3React } from '@web3-react/core'
-import { ReactComponent as AppleLogo } from 'assets/svg/apple_logo.svg'
-import baseLogoUrl from 'assets/svg/base_background_icon.svg'
-import { useScreenSize } from 'hooks/useScreenSize'
-import { useLocation } from 'react-router-dom'
-import { useHideBaseWalletBanner } from 'state/user/hooks'
-import { ThemedText } from 'theme/components'
-import { openDownloadApp, openWalletMicrosite } from 'utils/openDownloadApp'
-import { isIOS, isMobileSafari } from 'utils/userAgent'
-
-import { BannerButton, BaseBackgroundImage, ButtonRow, PopupContainer, StyledXButton } from './styled'
-
-export default function BaseWalletBanner() {
- const { chainId } = useWeb3React()
- const [hideBaseWalletBanner, toggleHideBaseWalletBanner] = useHideBaseWalletBanner()
- const location = useLocation()
- const isLandingScreen = location.search === '?intro=true' || location.pathname === '/'
-
- const shouldDisplay = Boolean(!hideBaseWalletBanner && !isLandingScreen && chainId === ChainId.BASE)
-
- const screenSize = useScreenSize()
-
- if (isMobileSafari) return null
-
- return (
-
- {
- // prevent click from bubbling to UI on the page underneath, i.e. clicking a token row
- e.preventDefault()
- e.stopPropagation()
- toggleHideBaseWalletBanner()
- }}
- />
-
-
-
-
-
- Swap on{' '}
- {' '}
- BASE in the Uniswap wallet
-
-
-
-
- {isIOS ? (
- <>
-
- openDownloadApp({
- element: InterfaceElementName.UNISWAP_WALLET_BANNER_DOWNLOAD_BUTTON,
- appStoreParams: 'pt=123625782&ct=base-app-banner&mt=8',
- })
- }
- >
-
-
- {!screenSize['xs'] ? Download : Download app}
-
-
-
- openWalletMicrosite()}>
-
- Learn more
-
-
- >
- ) : (
- openWalletMicrosite()}>
-
- Learn more
-
-
- )}
-
-
- )
-}
diff --git a/src/components/Banner/BaseAnnouncementBanner/styled.tsx b/src/components/Banner/BaseAnnouncementBanner/styled.tsx
deleted file mode 100644
index b96cf72bedd..00000000000
--- a/src/components/Banner/BaseAnnouncementBanner/styled.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-import walletBannerPhoneImageSrc from 'assets/images/wallet_banner_phone_image.png'
-import { BaseButton } from 'components/Button'
-import { OpacityHoverState } from 'components/Common'
-import Row from 'components/Row'
-import { X } from 'react-feather'
-import styled from 'styled-components'
-import { Z_INDEX } from 'theme/zIndex'
-
-export const PopupContainer = styled.div<{ show: boolean }>`
- display: flex;
- flex-direction: column;
- justify-content: space-between;
-
- ${({ show }) => !show && 'display: none'};
-
- background: url(${walletBannerPhoneImageSrc});
- background-repeat: no-repeat;
- background-position: top 18px right 15px;
- background-size: 166px;
-
- :hover {
- background-size: 170px;
- }
- transition: background-size ${({ theme }) => theme.transition.duration.medium}
- ${({ theme }) => theme.transition.timing.inOut};
-
- background-color: ${({ theme }) => theme.chain_84531};
- color: ${({ theme }) => theme.neutral1};
- position: fixed;
- z-index: ${Z_INDEX.sticky};
-
- padding: 24px 16px 16px;
-
- border-radius: 20px;
- bottom: 20px;
- right: 20px;
- width: 390px;
- height: 164px;
-
- border: 1px solid ${({ theme }) => theme.surface3};
-
- box-shadow: ${({ theme }) => theme.deprecated_deepShadow};
-
- @media only screen and (max-width: ${({ theme }) => `${theme.breakpoint.md}px`}) {
- bottom: 62px;
- }
-
- @media only screen and (max-width: ${({ theme }) => `${theme.breakpoint.sm}px`}) {
- background-position: top 32px right -10px;
- width: unset;
- right: 10px;
- left: 10px;
- height: 144px;
- }
-
- user-select: none;
-`
-
-export const BaseBackgroundImage = styled.img`
- position: absolute;
- top: 0;
- left: 0;
- height: 138px;
- width: 138px;
-`
-export const ButtonRow = styled(Row)`
- gap: 16px;
-`
-export const StyledXButton = styled(X)`
- cursor: pointer;
- position: absolute;
- top: 21px;
- right: 17px;
-
- color: ${({ theme }) => theme.white};
- ${OpacityHoverState};
-`
-
-export const BannerButton = styled(BaseButton)`
- height: 40px;
- border-radius: 16px;
- padding: 10px;
- ${OpacityHoverState};
-`
diff --git a/src/components/FeatureFlagModal/FeatureFlagModal.tsx b/src/components/FeatureFlagModal/FeatureFlagModal.tsx
index 1c16b163cc9..c6cdead757f 100644
--- a/src/components/FeatureFlagModal/FeatureFlagModal.tsx
+++ b/src/components/FeatureFlagModal/FeatureFlagModal.tsx
@@ -1,8 +1,5 @@
-import { ChainId } from '@uniswap/sdk-core'
import Column from 'components/Column'
-import { BaseVariant, FeatureFlag, featureFlagSettings, useUpdateConfig, useUpdateFlag } from 'featureFlags'
-import { DynamicConfigName } from 'featureFlags/dynamicConfig'
-import { useQuickRouteChains } from 'featureFlags/dynamicConfig/quickRouteChains'
+import { BaseVariant, FeatureFlag, featureFlagSettings, useUpdateFlag } from 'featureFlags'
import { useCurrencyConversionFlag } from 'featureFlags/flags/currencyConversion'
import { useFallbackProviderEnabledFlag } from 'featureFlags/flags/fallbackProvider'
import { useFotAdjustmentsFlag } from 'featureFlags/flags/fotAdjustments'
@@ -223,38 +220,6 @@ function FeatureFlagOption({ value, variant, featureFlag, label }: FeatureFlagPr
)
}
-interface DynamicConfigDropdownProps {
- configName: DynamicConfigName
- label: string
- options: any[]
- selected: any[]
- parser: (opt: string) => any
-}
-
-function DynamicConfigDropdown({ configName, label, options, selected, parser }: DynamicConfigDropdownProps) {
- const updateConfig = useUpdateConfig()
- const handleSelectChange = (e: React.ChangeEvent) => {
- const selectedValues = Array.from(e.target.selectedOptions, (opt) => parser(opt.value))
- // Saved to atom as { [configName]: { [configName]: values } } to match Statsig return format
- updateConfig(configName, { [configName]: selectedValues })
- }
- return (
-
-
- {configName}
- {label}
-
-
-
- )
-}
-
export default function FeatureFlagModal() {
const open = useModalIsOpen(ApplicationModal.FEATURE_FLAGS)
const toggleModal = useToggleFeatureFlags()
@@ -311,13 +276,6 @@ export default function FeatureFlagModal() {
featureFlag={FeatureFlag.quickRouteMainnet}
label="Enable quick routes for Mainnet"
/>
- !isNaN(Number(v))) as ChainId[]}
- parser={Number.parseInt}
- configName={DynamicConfigName.quickRouteChains}
- label="Enable quick routes for these chains"
- />
`
- // #1c1c1e is the background color for the darkmode moonpay iframe as of 2/16/2023
- background-color: ${({ isDarkMode, theme }) => (isDarkMode ? MOONPAY_DARK_BACKGROUND : theme.white)};
- border-radius: 20px;
- box-shadow: ${({ theme }) => theme.deprecated_deepShadow};
- display: flex;
- flex-flow: column nowrap;
- margin: 0;
- flex: 1 1;
- min-width: 375px;
- position: relative;
- width: 100%;
-`
-
-const ErrorText = styled(ThemedText.BodyPrimary)`
- color: ${({ theme }) => theme.critical};
- margin: auto !important;
- text-align: center;
- width: 90%;
-`
-const StyledIframe = styled.iframe<{ isDarkMode: boolean }>`
- // #1c1c1e is the background color for the darkmode moonpay iframe as of 2/16/2023
- background-color: ${({ isDarkMode, theme }) => (isDarkMode ? MOONPAY_DARK_BACKGROUND : theme.white)};
- border-radius: 12px;
- bottom: 0;
- left: 0;
- height: calc(100% - 16px);
- margin: 8px;
- padding: 0;
- position: absolute;
- right: 0;
- top: 0;
- width: calc(100% - 16px);
-`
-const StyledSpinner = styled(CustomLightSpinner)`
- bottom: 0;
- left: 0;
- margin: auto;
- position: absolute;
- right: 0;
- top: 0;
-`
-
-export default function FiatOnrampModal() {
- const { account } = useWeb3React()
- const theme = useTheme()
- const isDarkMode = useIsDarkMode()
- const closeModal = useCloseModal()
- const fiatOnrampModalOpen = useModalIsOpen(ApplicationModal.FIAT_ONRAMP)
-
- const { network, tokenAddress } = parsePathParts(location.pathname)
-
- const [signedIframeUrl, setSignedIframeUrl] = useState(null)
- const [error, setError] = useState(null)
- const [loading, setLoading] = useState(false)
-
- const swapUrl = useHref('/swap')
-
- const fetchSignedIframeUrl = useCallback(async () => {
- if (!account) {
- setError('Please connect an account before making a purchase.')
- return
- }
- setLoading(true)
- setError(null)
- try {
- const signedIframeUrlFetchEndpoint = process.env.REACT_APP_MOONPAY_LINK as string
- const res = await fetch(signedIframeUrlFetchEndpoint, {
- headers: {
- Accept: 'application/json',
- 'Content-Type': 'application/json',
- },
- method: 'POST',
- body: JSON.stringify({
- theme: isDarkMode ? 'dark' : 'light',
- colorCode: theme.accent1,
- defaultCurrencyCode: getDefaultCurrencyCode(tokenAddress, network),
- redirectUrl: swapUrl,
- walletAddresses: JSON.stringify(
- MOONPAY_SUPPORTED_CURRENCY_CODES.reduce(
- (acc, currencyCode) => ({
- ...acc,
- [currencyCode]: account,
- }),
- {}
- )
- ),
- }),
- })
- const { url } = await res.json()
- setSignedIframeUrl(url)
- } catch (e) {
- console.log('there was an error fetching the link', e)
- setError(e.toString())
- } finally {
- setLoading(false)
- }
- }, [account, isDarkMode, network, swapUrl, theme.accent1, tokenAddress])
-
- useEffect(() => {
- fetchSignedIframeUrl()
- }, [fetchSignedIframeUrl])
-
- return (
- closeModal()} height={80 /* vh */}>
-
- {error ? (
- <>
-
- MoonPay fiat on-ramp iframe
-
-
- Something went wrong!
-
- {error}
-
- >
- ) : loading ? (
-
- ) : (
-
- )}
-
-
- )
-}
diff --git a/src/components/FiatOnrampModal/utils.test.ts b/src/components/FiatOnrampModal/utils.test.ts
deleted file mode 100644
index 4cca77699c3..00000000000
--- a/src/components/FiatOnrampModal/utils.test.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-import { ChainId, WETH9 } from '@uniswap/sdk-core'
-import {
- MATIC,
- USDC_ARBITRUM,
- USDC_MAINNET,
- USDC_OPTIMISM,
- USDC_POLYGON,
- USDT,
- WBTC,
- WETH_POLYGON,
-} from 'constants/tokens'
-
-import { getDefaultCurrencyCode, parsePathParts } from './utils'
-
-describe('getDefaultCurrencyCode', () => {
- it('NATIVE/arbitrum should return the correct currency code', () => {
- expect(getDefaultCurrencyCode('NATIVE', 'arbitrum')).toBe('eth_arbitrum')
- })
- it('NATIVE/optimism should return the correct currency code', () => {
- expect(getDefaultCurrencyCode('NATIVE', 'optimism')).toBe('eth_optimism')
- })
- it('WETH/polygon should return the correct currency code', () => {
- expect(getDefaultCurrencyCode(WETH_POLYGON.address, 'polygon')).toBe('eth_polygon')
- })
- it('WETH/ethereum should return the correct currency code', () => {
- expect(getDefaultCurrencyCode(WETH9[ChainId.MAINNET].address, 'ethereum')).toBe('weth')
- })
- it('WBTC/ethereum should return the correct currency code', () => {
- expect(getDefaultCurrencyCode(WBTC.address, 'ethereum')).toBe('wbtc')
- })
- it('NATIVE/polygon should return the correct currency code', () => {
- expect(getDefaultCurrencyCode('NATIVE', 'polygon')).toBe('matic_polygon')
- })
- it('MATIC/ethereum should return the correct currency code', () => {
- expect(getDefaultCurrencyCode(MATIC.address, 'ethereum')).toBe('polygon')
- })
- it('USDC/arbitrum should return the correct currency code', () => {
- expect(getDefaultCurrencyCode(USDC_ARBITRUM.address, 'arbitrum')).toBe('usdc_arbitrum')
- })
- it('USDC/optimism should return the correct currency code', () => {
- expect(getDefaultCurrencyCode(USDC_OPTIMISM.address, 'optimism')).toBe('usdc_optimism')
- })
- it('USDC/polygon should return the correct currency code', () => {
- expect(getDefaultCurrencyCode(USDC_POLYGON.address, 'polygon')).toBe('usdc_polygon')
- })
- it('native/ethereum should return the correct currency code', () => {
- expect(getDefaultCurrencyCode('NATIVE', 'ethereum')).toBe('eth')
- })
- it('usdc/ethereum should return the correct currency code', () => {
- expect(getDefaultCurrencyCode(USDC_MAINNET.address, 'ethereum')).toBe('usdc')
- })
- it('usdt/ethereum should return the correct currency code', () => {
- expect(getDefaultCurrencyCode(USDT.address, 'ethereum')).toBe('usdt')
- })
- it('chain/token mismatch should default to eth', () => {
- expect(getDefaultCurrencyCode(USDC_ARBITRUM.address, 'ethereum')).toBe('eth')
- expect(getDefaultCurrencyCode(USDC_OPTIMISM.address, 'ethereum')).toBe('eth')
- expect(getDefaultCurrencyCode(USDC_POLYGON.address, 'ethereum')).toBe('eth')
- expect(getDefaultCurrencyCode(MATIC.address, 'arbitrum')).toBe('eth')
- })
-})
-
-describe('parseLocation', () => {
- it('should parse the URL correctly', () => {
- expect(parsePathParts('/tokens/ethereum/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599')).toEqual({
- network: 'ethereum',
- tokenAddress: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599',
- })
- expect(parsePathParts('tokens/ethereum/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599')).toEqual({
- network: 'ethereum',
- tokenAddress: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599',
- })
- expect(parsePathParts('/swap')).toEqual({
- network: undefined,
- tokenAddress: undefined,
- })
- })
-})
diff --git a/src/components/FiatOnrampModal/utils.ts b/src/components/FiatOnrampModal/utils.ts
deleted file mode 100644
index 7742c5e0b37..00000000000
--- a/src/components/FiatOnrampModal/utils.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import { ChainId, WETH9 } from '@uniswap/sdk-core'
-import {
- MATIC,
- USDC_ARBITRUM,
- USDC_MAINNET,
- USDC_OPTIMISM,
- USDC_POLYGON,
- USDT,
- WBTC,
- WETH_POLYGON,
-} from 'constants/tokens'
-import { Chain } from 'graphql/data/__generated__/types-and-hooks'
-import { validateUrlChainParam } from 'graphql/data/util'
-
-import { MoonpaySupportedCurrencyCode } from './constants'
-
-type MoonpaySupportedChain = Chain.Ethereum | Chain.Polygon | Chain.Arbitrum | Chain.Optimism
-const moonPaySupportedChains = [Chain.Ethereum, Chain.Polygon, Chain.Arbitrum, Chain.Optimism]
-
-const CURRENCY_CODES: {
- [K in MoonpaySupportedChain]: {
- [key: string]: MoonpaySupportedCurrencyCode
- native: MoonpaySupportedCurrencyCode
- }
-} = {
- [Chain.Ethereum]: {
- [WETH9[ChainId.MAINNET]?.address.toLowerCase()]: 'weth',
- [USDC_MAINNET.address.toLowerCase()]: 'usdc',
- [USDT.address.toLowerCase()]: 'usdt',
- [WBTC.address.toLowerCase()]: 'wbtc',
- [MATIC.address.toLowerCase()]: 'polygon',
- native: 'eth',
- },
- [Chain.Arbitrum]: {
- [USDC_ARBITRUM.address.toLowerCase()]: 'usdc_arbitrum',
- native: 'eth_arbitrum',
- },
- [Chain.Optimism]: {
- [USDC_OPTIMISM.address.toLowerCase()]: 'usdc_optimism',
- native: 'eth_optimism',
- },
- [Chain.Polygon]: {
- [USDC_POLYGON.address.toLowerCase()]: 'usdc_polygon',
- [WETH_POLYGON.address.toLowerCase()]: 'eth_polygon',
- native: 'matic_polygon',
- },
-}
-
-export function getDefaultCurrencyCode(
- address: string | undefined,
- chainName: string | undefined
-): MoonpaySupportedCurrencyCode {
- const chain = validateUrlChainParam(chainName)
- if (!address || !chain) return 'eth'
- if (moonPaySupportedChains.includes(chain)) {
- const code = CURRENCY_CODES[chain as MoonpaySupportedChain]?.[address.toLowerCase()]
- return code ?? 'eth'
- }
- return 'eth'
-}
-
-/**
- * You should use useParams() from react-router-dom instead of this function if possible.
- * This function is only used in the case where we need to parse the path outside the scope of the router.
- */
-export function parsePathParts(pathname: string): { network?: string; tokenAddress?: string } {
- const pathParts = pathname.split('/')
- // Matches the /tokens// path.
- const network = pathParts.length > 2 ? pathParts[pathParts.length - 2] : undefined
- const tokenAddress = pathParts.length > 2 ? pathParts[pathParts.length - 1] : undefined
- return { network, tokenAddress }
-}
diff --git a/src/components/NavBar/ChainSelector.tsx b/src/components/NavBar/ChainSelector.tsx
index 59b9c9963cb..8a4b7aac1cf 100644
--- a/src/components/NavBar/ChainSelector.tsx
+++ b/src/components/NavBar/ChainSelector.tsx
@@ -38,7 +38,6 @@ function useWalletSupportedChains(): ChainId[] {
switch (connectionType) {
case ConnectionType.WALLET_CONNECT_V2:
- case ConnectionType.UNISWAP_WALLET_V2:
return getSupportedChainIdsFromWalletConnectSession((connector as WalletConnectV2).provider?.session)
default:
return NETWORK_SELECTOR_CHAINS
diff --git a/src/components/NavBar/MenuDropdown.tsx b/src/components/NavBar/MenuDropdown.tsx
index 2c93c8f4ccb..445cc4bd4c5 100644
--- a/src/components/NavBar/MenuDropdown.tsx
+++ b/src/components/NavBar/MenuDropdown.tsx
@@ -14,7 +14,6 @@ import styled, { useTheme } from 'styled-components'
import { isDevelopmentEnv, isStagingEnv } from 'utils/env'
import { openDownloadApp } from 'utils/openDownloadApp'
-import { ReactComponent as AppleLogo } from '../../assets/svg/apple_logo.svg'
import { ApplicationModal } from '../../state/application/reducer'
import * as styles from './MenuDropdown.css'
import { NavDropdown } from './NavDropdown'
@@ -112,6 +111,7 @@ const Icon = ({ href, children }: { href?: string; children: ReactNode }) => {
)
}
+// eslint-disable-next-line import/no-unused-modules
export const MenuDropdown = () => {
const theme = useTheme()
const [isOpen, toggleOpen] = useReducer((s) => !s, false)
@@ -147,16 +147,7 @@ export const MenuDropdown = () => {
element: InterfaceElementName.UNISWAP_WALLET_MODAL_DOWNLOAD_BUTTON,
})
}
- >
-
-
-
-
-
- Download Uniswap Wallet
-
-
-
+ >
diff --git a/src/components/NavBar/index.tsx b/src/components/NavBar/index.tsx
index d815353bbe9..90bfa1776fd 100644
--- a/src/components/NavBar/index.tsx
+++ b/src/components/NavBar/index.tsx
@@ -7,6 +7,7 @@ import { Box } from 'nft/components/Box'
import { Row } from 'nft/components/Flex'
import { Dex51Icon, GithubIconMenu, TwitterIconMenu, WorldIconMenu } from 'nft/components/icons'
import { themeVars } from 'nft/css/sprinkles.css'
+import { useIsMobile } from 'nft/hooks'
import { ReactNode, useCallback } from 'react'
import { NavLink, NavLinkProps, useLocation, useNavigate } from 'react-router-dom'
import styled from 'styled-components'
@@ -24,15 +25,7 @@ const Nav = styled.nav`
height: ${({ theme }) => theme.navHeight}px;
z-index: 2;
`
-const NavAnalytics = styled.a`
- color: ${({ theme }) => theme.neutral2};
- padding: 6px 10px;
- text-decoration: none;
- &:hover {
- background-color: ${({ theme }) => theme.lightGrayOverlay};
- border-radius: 10px;
- }
-`
+
const IconRow = ({ children }: { children: ReactNode }) => {
return {children}
}
@@ -95,9 +88,9 @@ export const PageTabs = () => {
-
+
Analytics
-
+
{/*
*/}
@@ -111,6 +104,8 @@ const Navbar = ({ blur }: { blur: boolean }) => {
const [accountDrawerOpen, toggleAccountDrawer] = useAccountDrawer()
+ const isMobile = useIsMobile()
+
const handleDex51IconClick = useCallback(() => {
if (accountDrawerOpen) {
toggleAccountDrawer()
@@ -156,18 +151,22 @@ const Navbar = ({ blur }: { blur: boolean }) => {
-
-
-
-
-
-
-
-
-
-
-
-
+ {!isMobile && (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ )}
diff --git a/src/components/Tokens/TokenDetails/ShareButton.tsx b/src/components/Tokens/TokenDetails/ShareButton.tsx
index eba7adc26d1..09f94fc0b21 100644
--- a/src/components/Tokens/TokenDetails/ShareButton.tsx
+++ b/src/components/Tokens/TokenDetails/ShareButton.tsx
@@ -79,7 +79,7 @@ export default function ShareButton({ currency }: { currency: Currency }) {
window.open(
`https://twitter.com/intent/tweet?text=Check%20out%20${currency.name}%20(${
currency.symbol
- })%20https://app.uniswap.org/%23/tokens/${chainIdToBackendName(
+ })%20https://https://dex.a51.finance/%23/tokens/${chainIdToBackendName(
currency.chainId
).toLowerCase()}/${address}%20via%20@uniswap`,
'newwindow',
diff --git a/src/components/TopLevelModals/index.tsx b/src/components/TopLevelModals/index.tsx
index cdf45402544..11f3a410ee7 100644
--- a/src/components/TopLevelModals/index.tsx
+++ b/src/components/TopLevelModals/index.tsx
@@ -1,19 +1,14 @@
import { useWeb3React } from '@web3-react/core'
import { OffchainActivityModal } from 'components/AccountDrawer/MiniPortfolio/Activity/OffchainActivityModal'
-import UniwalletModal from 'components/AccountDrawer/UniwalletModal'
import AirdropModal from 'components/AirdropModal'
-import BaseAnnouncementBanner from 'components/Banner/BaseAnnouncementBanner'
import AddressClaimModal from 'components/claim/AddressClaimModal'
import ConnectedAccountBlocked from 'components/ConnectedAccountBlocked'
-import FiatOnrampModal from 'components/FiatOnrampModal'
import { UkDisclaimerModal } from 'components/NavBar/UkDisclaimerModal'
-import DevFlagsBox from 'dev/DevFlagsBox'
import useAccountRiskCheck from 'hooks/useAccountRiskCheck'
import Bag from 'nft/components/bag/Bag'
import TransactionCompleteModal from 'nft/components/collection/TransactionCompleteModal'
import { useModalIsOpen, useToggleModal } from 'state/application/hooks'
import { ApplicationModal } from 'state/application/reducer'
-import { isDevelopmentEnv, isStagingEnv } from 'utils/env'
export default function TopLevelModals() {
const addressClaimOpen = useModalIsOpen(ApplicationModal.ADDRESS_CLAIM)
@@ -22,21 +17,16 @@ export default function TopLevelModals() {
const { account } = useWeb3React()
useAccountRiskCheck(account)
const accountBlocked = Boolean(blockedAccountModalOpen && account)
- const shouldShowDevFlags = isDevelopmentEnv() || isStagingEnv()
return (
<>
-
-
-
- {shouldShowDevFlags && }
>
)
}
diff --git a/src/components/WalletModal/Option.test.tsx b/src/components/WalletModal/Option.test.tsx
index 544e5349588..b68c786c2c9 100644
--- a/src/components/WalletModal/Option.test.tsx
+++ b/src/components/WalletModal/Option.test.tsx
@@ -1,12 +1,5 @@
-import { Connector } from '@web3-react/types'
-import UNIWALLET_ICON from 'assets/images/uniwallet.png'
import { useToggleAccountDrawer } from 'components/AccountDrawer'
-import { Connection, ConnectionType } from 'connection/types'
import { mocked } from 'test-utils/mocked'
-import { createDeferredPromise } from 'test-utils/promise'
-import { act, render } from 'test-utils/render'
-
-import Option from './Option'
const mockToggleDrawer = jest.fn()
jest.mock('components/AccountDrawer')
@@ -15,69 +8,3 @@ beforeEach(() => {
jest.spyOn(console, 'debug').mockReturnValue()
mocked(useToggleAccountDrawer).mockReturnValue(mockToggleDrawer)
})
-
-const mockConnection1: Connection = {
- getName: () => 'Mock Connection 1',
- connector: {
- activate: jest.fn(),
- deactivate: jest.fn(),
- } as unknown as Connector,
- getIcon: () => UNIWALLET_ICON,
- type: ConnectionType.UNISWAP_WALLET_V2,
-} as unknown as Connection
-
-const mockConnection2: Connection = {
- getName: () => 'Mock Connection 2',
- connector: {
- activate: jest.fn(),
- deactivate: jest.fn(),
- } as unknown as Connector,
- getIcon: () => UNIWALLET_ICON,
- type: ConnectionType.INJECTED,
-} as unknown as Connection
-
-describe('Wallet Option', () => {
- it('renders default state', () => {
- const component = render()
- const option = component.getByTestId('wallet-option-UNISWAP_WALLET_V2')
- expect(option).toBeEnabled()
- expect(option).toHaveProperty('selected', false)
-
- expect(option).toMatchSnapshot()
- })
-
- it('connect when clicked', async () => {
- const activationResponse = createDeferredPromise()
- mocked(mockConnection1.connector.activate).mockReturnValue(activationResponse.promise)
-
- const component = render(
- <>
-
-
- >
- )
- const option1 = component.getByTestId('wallet-option-UNISWAP_WALLET_V2')
- const option2 = component.getByTestId('wallet-option-INJECTED')
-
- expect(option1).toBeEnabled()
- expect(option1).toHaveProperty('selected', false)
- expect(option2).toBeEnabled()
- expect(option2).toHaveProperty('selected', false)
-
- expect(mockConnection1.connector.activate).toHaveBeenCalledTimes(0)
- act(() => option1.click())
- expect(mockConnection1.connector.activate).toHaveBeenCalledTimes(1)
-
- expect(option1).toBeDisabled()
- expect(option1).toHaveProperty('selected', true)
- expect(option2).toBeDisabled()
- expect(option2).toHaveProperty('selected', false)
-
- await act(async () => activationResponse.resolve())
-
- expect(option1).toBeEnabled()
- expect(option1).toHaveProperty('selected', false)
- expect(option2).toBeEnabled()
- expect(option2).toHaveProperty('selected', false)
- })
-})
diff --git a/src/components/WalletModal/PrivacyPolicyNotice.tsx b/src/components/WalletModal/PrivacyPolicyNotice.tsx
deleted file mode 100644
index af27bfde2cb..00000000000
--- a/src/components/WalletModal/PrivacyPolicyNotice.tsx
+++ /dev/null
@@ -1,34 +0,0 @@
-import { Trans } from '@lingui/macro'
-import styled from 'styled-components'
-import { ExternalLink, ThemedText } from 'theme/components'
-
-const StyledLink = styled(ExternalLink)`
- font-weight: 535;
- color: ${({ theme }) => theme.neutral2};
-`
-
-const LastUpdatedText = styled.span`
- color: ${({ theme }) => theme.neutral3};
-`
-
-const LAST_UPDATED_DATE = '6.7.23'
-
-export default function PrivacyPolicyNotice() {
- return (
-
- By connecting a wallet, you agree to Uniswap Labs'{' '}
-
- Terms of Service{' '}
-
- and consent to its{' '}
-
- Privacy Policy.
-
-
- {' ('}
- Last updated
- {` ${LAST_UPDATED_DATE})`}
-
-
- )
-}
diff --git a/src/components/WalletModal/index.tsx b/src/components/WalletModal/index.tsx
index 1cf805e901c..328c56af5dc 100644
--- a/src/components/WalletModal/index.tsx
+++ b/src/components/WalletModal/index.tsx
@@ -14,7 +14,6 @@ import { flexColumnNoWrap } from 'theme/styles'
import ConnectionErrorView from './ConnectionErrorView'
import Option from './Option'
-import PrivacyPolicyNotice from './PrivacyPolicyNotice'
const Wrapper = styled.div`
${flexColumnNoWrap};
@@ -34,10 +33,6 @@ const OptionGrid = styled.div`
`};
`
-const PrivacyPolicyWrapper = styled.div`
- padding: 0 4px;
-`
-
export default function WalletModal({ openSettings }: { openSettings: () => void }) {
const { connector, chainId } = useWeb3React()
@@ -71,9 +66,6 @@ export default function WalletModal({ openSettings }: { openSettings: () => void
))}
-
-
-
)}
diff --git a/src/components/swap/SwapBuyFiatButton.test.tsx b/src/components/swap/SwapBuyFiatButton.test.tsx
deleted file mode 100644
index 7f52476cceb..00000000000
--- a/src/components/swap/SwapBuyFiatButton.test.tsx
+++ /dev/null
@@ -1,98 +0,0 @@
-import userEvent from '@testing-library/user-event'
-import { useWeb3React } from '@web3-react/core'
-import { useAccountDrawer } from 'components/AccountDrawer'
-import store from 'state'
-import { setOriginCountry } from 'state/user/reducer'
-import { mocked } from 'test-utils/mocked'
-import { act, fireEvent, render, screen } from 'test-utils/render'
-
-import { useFiatOnrampAvailability, useOpenModal } from '../../state/application/hooks'
-import SwapBuyFiatButton, { MOONPAY_REGION_AVAILABILITY_ARTICLE } from './SwapBuyFiatButton'
-
-jest.mock('../../state/application/hooks')
-const mockUseFiatOnrampAvailability = useFiatOnrampAvailability as jest.MockedFunction
-const mockUseOpenModal = useOpenModal as jest.MockedFunction
-
-jest.mock('components/AccountDrawer')
-const mockuseAccountDrawer = useAccountDrawer as jest.MockedFunction
-
-const mockUseFiatOnRampsUnavailable = (shouldCheck: boolean) => {
- return {
- available: false,
- availabilityChecked: shouldCheck,
- error: null,
- loading: false,
- }
-}
-
-const mockUseFiatOnRampsAvailable = (shouldCheck: boolean) => {
- if (shouldCheck) {
- return {
- available: true,
- availabilityChecked: true,
- error: null,
- loading: false,
- }
- }
- return {
- available: false,
- availabilityChecked: false,
- error: null,
- loading: false,
- }
-}
-
-describe('SwapBuyFiatButton.tsx', () => {
- let toggleWalletDrawer: jest.Mock
- let useOpenModal: jest.Mock
-
- beforeAll(() => {
- store.dispatch(setOriginCountry('US'))
- toggleWalletDrawer = jest.fn()
- useOpenModal = jest.fn()
- })
-
- it('matches base snapshot', () => {
- mockUseFiatOnrampAvailability.mockImplementation(mockUseFiatOnRampsUnavailable)
- mockuseAccountDrawer.mockImplementation(() => [false, toggleWalletDrawer])
- const { asFragment } = render()
- expect(asFragment()).toMatchSnapshot()
- })
-
- it('fiat on ramps available in region, account unconnected', async () => {
- mockUseFiatOnrampAvailability.mockImplementation(mockUseFiatOnRampsAvailable)
- mockuseAccountDrawer.mockImplementation(() => [false, toggleWalletDrawer])
- mockUseOpenModal.mockImplementation(() => useOpenModal)
- render()
- await act(() => userEvent.click(screen.getByTestId('buy-fiat-button')))
- expect(toggleWalletDrawer).toHaveBeenCalledTimes(1)
- expect(screen.queryByTestId('fiat-on-ramp-unavailable-tooltip')).not.toBeInTheDocument()
- })
-
- it('fiat on ramps available in region, account connected', async () => {
- mocked(useWeb3React).mockReturnValue({
- account: '0x52270d8234b864dcAC9947f510CE9275A8a116Db',
- isActive: true,
- } as ReturnType)
- mockUseFiatOnrampAvailability.mockImplementation(mockUseFiatOnRampsAvailable)
- mockuseAccountDrawer.mockImplementation(() => [false, toggleWalletDrawer])
- mockUseOpenModal.mockImplementation(() => useOpenModal)
- render()
- await act(() => userEvent.click(screen.getByTestId('buy-fiat-button')))
- expect(toggleWalletDrawer).toHaveBeenCalledTimes(0)
- expect(useOpenModal).toHaveBeenCalledTimes(1)
- expect(screen.queryByTestId('fiat-on-ramp-unavailable-tooltip')).not.toBeInTheDocument()
- expect(screen.queryByTestId('buy-fiat-flow-incomplete-indicator')).not.toBeInTheDocument()
- })
-
- it('fiat on ramps unavailable in region', async () => {
- mockUseFiatOnrampAvailability.mockImplementation(mockUseFiatOnRampsUnavailable)
- mockuseAccountDrawer.mockImplementation(() => [false, toggleWalletDrawer])
- render()
- await act(() => userEvent.click(screen.getByTestId('buy-fiat-button')))
- fireEvent.mouseOver(screen.getByTestId('buy-fiat-button'))
- expect(await screen.findByTestId('fiat-on-ramp-unavailable-tooltip')).toBeInTheDocument()
- expect(await screen.findByText(/Learn more/i)).toHaveAttribute('href', MOONPAY_REGION_AVAILABILITY_ARTICLE)
- expect(await screen.findByTestId('buy-fiat-button')).toBeDisabled()
- })
-})
diff --git a/src/components/swap/SwapBuyFiatButton.tsx b/src/components/swap/SwapBuyFiatButton.tsx
deleted file mode 100644
index 6100ab42564..00000000000
--- a/src/components/swap/SwapBuyFiatButton.tsx
+++ /dev/null
@@ -1,139 +0,0 @@
-import { Trans } from '@lingui/macro'
-import { BrowserEvent, InterfaceElementName, SharedEventName } from '@uniswap/analytics-events'
-import { useWeb3React } from '@web3-react/core'
-import { TraceEvent } from 'analytics'
-import { useAccountDrawer } from 'components/AccountDrawer'
-import { ButtonText } from 'components/Button'
-import { MouseoverTooltip } from 'components/Tooltip'
-import { useIsNotOriginCountry } from 'hooks/useIsNotOriginCountry'
-import { useCallback, useEffect, useState } from 'react'
-import styled from 'styled-components'
-import { ExternalLink } from 'theme/components'
-import { textFadeIn } from 'theme/styles'
-
-import { useFiatOnrampAvailability, useOpenModal } from '../../state/application/hooks'
-import { ApplicationModal } from '../../state/application/reducer'
-
-export const MOONPAY_REGION_AVAILABILITY_ARTICLE =
- 'https://support.uniswap.org/hc/en-us/articles/11306664890381-Why-isn-t-MoonPay-available-in-my-region-'
-
-enum BuyFiatFlowState {
- // Default initial state. User is not actively trying to buy fiat.
- INACTIVE,
- // Buy fiat flow is active and region availability has been checked.
- ACTIVE_CHECKING_REGION,
- // Buy fiat flow is active, feature is available in user's region & needs wallet connection.
- ACTIVE_NEEDS_ACCOUNT,
-}
-
-const StyledTextButton = styled(ButtonText)`
- ${textFadeIn}
- color: ${({ theme }) => theme.neutral2};
- gap: 4px;
- font-weight: 485;
- &:focus {
- text-decoration: none;
- }
- &:active {
- text-decoration: none;
- }
-`
-
-export default function SwapBuyFiatButton() {
- const { account } = useWeb3React()
- const openFiatOnRampModal = useOpenModal(ApplicationModal.FIAT_ONRAMP)
- const shouldShowBuyFiatButton = useIsNotOriginCountry('GB')
- const [checkFiatRegionAvailability, setCheckFiatRegionAvailability] = useState(false)
- const {
- available: fiatOnrampAvailable,
- availabilityChecked: fiatOnrampAvailabilityChecked,
- loading: fiatOnrampAvailabilityLoading,
- } = useFiatOnrampAvailability(checkFiatRegionAvailability)
- const [buyFiatFlowState, setBuyFiatFlowState] = useState(BuyFiatFlowState.INACTIVE)
- const [walletDrawerOpen, toggleWalletDrawer] = useAccountDrawer()
-
- // Depending on the current state of the buy fiat flow the user is in (buyFiatFlowState),
- // the desired behavior of clicking the 'Buy' button is different.
- // 1) Initially upon first click, need to check the availability of the feature in the user's
- // region, and continue the flow.
- // 2) If the feature is available in the user's region, need to connect a wallet, and continue
- // the flow.
- // 3) If the feature is available and a wallet account is connected, show fiat on ramp modal.
- // 4) If the feature is unavailable, show feature unavailable tooltip.
- const handleBuyCrypto = useCallback(() => {
- if (!fiatOnrampAvailabilityChecked) {
- setCheckFiatRegionAvailability(true)
- setBuyFiatFlowState(BuyFiatFlowState.ACTIVE_CHECKING_REGION)
- } else if (fiatOnrampAvailable && !account && !walletDrawerOpen) {
- toggleWalletDrawer()
- setBuyFiatFlowState(BuyFiatFlowState.ACTIVE_NEEDS_ACCOUNT)
- } else if (fiatOnrampAvailable && account) {
- openFiatOnRampModal()
- setBuyFiatFlowState(BuyFiatFlowState.INACTIVE)
- } else if (!fiatOnrampAvailable) {
- setBuyFiatFlowState(BuyFiatFlowState.INACTIVE)
- }
- }, [
- fiatOnrampAvailabilityChecked,
- fiatOnrampAvailable,
- account,
- walletDrawerOpen,
- toggleWalletDrawer,
- openFiatOnRampModal,
- ])
-
- // Continue buy fiat flow automatically when requisite state changes have occured.
- useEffect(() => {
- if (
- (buyFiatFlowState === BuyFiatFlowState.ACTIVE_CHECKING_REGION && fiatOnrampAvailabilityChecked) ||
- (account && buyFiatFlowState === BuyFiatFlowState.ACTIVE_NEEDS_ACCOUNT)
- ) {
- handleBuyCrypto()
- }
- }, [account, handleBuyCrypto, buyFiatFlowState, fiatOnrampAvailabilityChecked])
-
- const buyCryptoButtonDisabled =
- (!fiatOnrampAvailable && fiatOnrampAvailabilityChecked) ||
- fiatOnrampAvailabilityLoading ||
- // When wallet drawer is open AND user is in the connect wallet step of the buy fiat flow, disable buy fiat button.
- (walletDrawerOpen && buyFiatFlowState === BuyFiatFlowState.ACTIVE_NEEDS_ACCOUNT)
-
- const fiatOnRampsUnavailableTooltipDisabled =
- !fiatOnrampAvailabilityChecked || (fiatOnrampAvailabilityChecked && fiatOnrampAvailable)
-
- if (!shouldShowBuyFiatButton) {
- return null
- }
-
- return (
-
- Crypto purchases are not available in your region.
-
-
- Learn more
-
-
-
- }
- placement="bottom"
- disabled={fiatOnRampsUnavailableTooltipDisabled}
- >
-
-
- Buy
-
-
-
- )
-}
diff --git a/src/connection/WalletConnectV2.ts b/src/connection/WalletConnectV2.ts
index 02d4a64d178..12f60f7debf 100644
--- a/src/connection/WalletConnectV2.ts
+++ b/src/connection/WalletConnectV2.ts
@@ -1,9 +1,7 @@
-import { ChainId } from '@uniswap/sdk-core'
-import { URI_AVAILABLE, WalletConnect, WalletConnectConstructorArgs } from '@web3-react/walletconnect-v2'
+import { WalletConnect, WalletConnectConstructorArgs } from '@web3-react/walletconnect-v2'
import { sendAnalyticsEvent } from 'analytics'
import { L1_CHAIN_IDS, L2_CHAIN_IDS } from 'constants/chains'
import { Z_INDEX } from 'theme/zIndex'
-import { isIOS } from 'utils/userAgent'
import { RPC_URLS } from '../constants/networks'
@@ -62,36 +60,3 @@ export class WalletConnectV2 extends WalletConnect {
return super.activate(chainId)
}
}
-
-// Custom class for Uniswap Wallet specific functionality
-export class UniwalletConnect extends WalletConnectV2 {
- ANALYTICS_EVENT = 'Uniswap Wallet QR Scan'
- static UNI_URI_AVAILABLE = 'uni_uri_available'
-
- constructor({ actions, onError }: Omit) {
- // disables walletconnect's proprietary qr code modal; instead UniwalletModal will listen for events to trigger our custom modal
- super({ actions, defaultChainId: ChainId.MAINNET, qrcode: false, onError })
-
- this.events.once(URI_AVAILABLE, () => {
- this.provider?.events.on('disconnect', this.deactivate)
- })
-
- this.events.on(URI_AVAILABLE, (uri) => {
- if (!uri) return
- // Emits custom wallet connect code, parseable by the Uniswap Wallet
- this.events.emit(UniwalletConnect.UNI_URI_AVAILABLE, `hello_uniwallet:${uri}`)
-
- // Opens deeplink to Uniswap Wallet if on iOS
- if (isIOS) {
- // Using window.location.href to open the deep link ensures smooth navigation and leverages OS handling for installed apps,
- // avoiding potential popup blockers or inconsistent behavior associated with window.open
- window.location.href = `uniswap://wc?uri=${encodeURIComponent(uri)}`
- }
- })
- }
-
- deactivate() {
- this.events.emit(URI_AVAILABLE)
- return super.deactivate()
- }
-}
diff --git a/src/connection/index.test.tsx b/src/connection/index.test.tsx
index d02e87a79f0..4997c171d4e 100644
--- a/src/connection/index.test.tsx
+++ b/src/connection/index.test.tsx
@@ -22,10 +22,9 @@ describe('connection utility/metadata tests', () => {
const displayed = connections.filter((c) => c.shouldDisplay())
const injected = getConnection(ConnectionType.INJECTED)
const coinbase = getConnection(ConnectionType.COINBASE_WALLET)
- const uniswap = getConnection(ConnectionType.UNISWAP_WALLET_V2)
const walletconnect = getConnection(ConnectionType.WALLET_CONNECT_V2)
- return { displayed, injected, coinbase, uniswap, walletconnect }
+ return { displayed, injected, coinbase, walletconnect }
}
const createPhantomEnviroment = () => {
diff --git a/src/connection/index.ts b/src/connection/index.ts
index 08b823cfdb6..2b1101e4333 100644
--- a/src/connection/index.ts
+++ b/src/connection/index.ts
@@ -8,16 +8,15 @@ import { Actions, Connector } from '@web3-react/types'
import GNOSIS_ICON from 'assets/images/gnosis.png'
import UNISWAP_LOGO from 'assets/svg/logo.svg'
import COINBASE_ICON from 'assets/wallets/coinbase-icon.svg'
-import UNIWALLET_ICON from 'assets/wallets/uniswap-wallet-icon.png'
import WALLET_CONNECT_ICON from 'assets/wallets/walletconnect-icon.svg'
import { useSyncExternalStore } from 'react'
-import { isMobile, isNonIOSPhone } from 'utils/userAgent'
+import { isMobile } from 'utils/userAgent'
import { RPC_URLS } from '../constants/networks'
import { DEPRECATED_RPC_PROVIDERS, RPC_PROVIDERS } from '../constants/providers'
import { Connection, ConnectionType } from './types'
import { getInjection, getIsCoinbaseWallet, getIsInjected, getIsMetaMaskWallet } from './utils'
-import { UniwalletConnect as UniwalletWCV2Connect, WalletConnectV2 } from './WalletConnectV2'
+import { WalletConnectV2 } from './WalletConnectV2'
function onError(error: Error) {
console.debug(`web3-react error: ${error}`)
@@ -140,18 +139,6 @@ export const walletConnectV2Connection: Connection = new (class implements Conne
}
})()
-const [web3WCV2UniwalletConnect, web3WCV2UniwalletConnectHooks] = initializeConnector(
- (actions) => new UniwalletWCV2Connect({ actions, onError })
-)
-export const uniwalletWCV2ConnectConnection: Connection = {
- getName: () => 'Uniswap Wallet',
- connector: web3WCV2UniwalletConnect,
- hooks: web3WCV2UniwalletConnectHooks,
- type: ConnectionType.UNISWAP_WALLET_V2,
- getIcon: () => UNIWALLET_ICON,
- shouldDisplay: () => Boolean(!getIsInjectedMobileBrowser() && !isNonIOSPhone),
-}
-
const [web3CoinbaseWallet, web3CoinbaseWalletHooks] = initializeConnector(
(actions) =>
new CoinbaseWallet({
@@ -185,7 +172,6 @@ const coinbaseWalletConnection: Connection = {
export const connections = [
gnosisSafeConnection,
- uniwalletWCV2ConnectConnection,
injectedConnection,
walletConnectV2Connection,
coinbaseWalletConnection,
@@ -208,8 +194,6 @@ export function getConnection(c: Connector | ConnectionType) {
return coinbaseWalletConnection
case ConnectionType.WALLET_CONNECT_V2:
return walletConnectV2Connection
- case ConnectionType.UNISWAP_WALLET_V2:
- return uniwalletWCV2ConnectConnection
case ConnectionType.NETWORK:
return networkConnection
case ConnectionType.DEPRECATED_NETWORK:
diff --git a/src/connection/types.ts b/src/connection/types.ts
index e82e16e62c2..461e6cf4e02 100644
--- a/src/connection/types.ts
+++ b/src/connection/types.ts
@@ -3,7 +3,6 @@ import { Web3ReactHooks } from '@web3-react/core'
import { Connector } from '@web3-react/types'
export enum ConnectionType {
- UNISWAP_WALLET_V2 = 'UNISWAP_WALLET_V2',
INJECTED = 'INJECTED',
COINBASE_WALLET = 'COINBASE_WALLET',
WALLET_CONNECT_V2 = 'WALLET_CONNECT_V2',
diff --git a/src/dev/DevFlagsBox.tsx b/src/dev/DevFlagsBox.tsx
deleted file mode 100644
index 886fa5dbd13..00000000000
--- a/src/dev/DevFlagsBox.tsx
+++ /dev/null
@@ -1,93 +0,0 @@
-import {
- BaseVariant,
- dynamicConfigSettings as dynamicConfigSettingsAtom,
- FeatureFlag,
- featureFlagSettings as featureFlagSettingsAtom,
-} from 'featureFlags'
-import { DynamicConfigName, useDynamicConfig } from 'featureFlags/dynamicConfig'
-import { useAtomValue } from 'jotai/utils'
-import { useMemo, useState } from 'react'
-import { useGate } from 'statsig-react'
-import styled from 'styled-components'
-import { ThemedText } from 'theme/components'
-import { isDevelopmentEnv, isStagingEnv } from 'utils/env'
-
-const Box = styled.div`
- position: fixed;
- bottom: 20px;
- left: 20px;
- background-color: ${({ theme }) => theme.surface1};
- padding: 10px;
- border: 1px solid ${({ theme }) => theme.accent1};
- z-index: 1000;
-
- @media only screen and (max-width: ${({ theme }) => `${theme.breakpoint.md}px`}) {
- bottom: 70px;
- }
-`
-const TopBar = styled.div`
- display: flex;
- justify-content: space-between;
-`
-const Gate = (flagName: FeatureFlag, featureFlagSettings: Record) => {
- const gateResult = useGate(flagName)
- if (gateResult) {
- const { value: statsigValue }: { value: boolean } = gateResult
- const flagSetting = featureFlagSettings[flagName]
- const settingValue: boolean = flagSetting === BaseVariant.Enabled
- if (flagSetting && statsigValue !== settingValue) {
- return (
-
- {flagName}: {flagSetting}
-
- )
- }
- }
- return null
-}
-
-const Config = (name: DynamicConfigName, savedSettings: Record) => {
- const statsigConfig = useDynamicConfig(name)
- if (statsigConfig) {
- const statsigValue = statsigConfig.getValue()
- const setting = savedSettings[name]
- if (setting && statsigValue !== setting) {
- return (
-
- {name}: {JSON.stringify(setting[name])}
-
- )
- }
- }
- return null
-}
-
-export default function DevFlagsBox() {
- const featureFlagsAtom = useAtomValue(featureFlagSettingsAtom)
- const featureFlags = useMemo(() => Object.values(FeatureFlag), [])
- const dynamicConfigsAtom = useAtomValue(dynamicConfigSettingsAtom)
- const dynamicConfigs = useMemo(() => Object.values(DynamicConfigName), [])
-
- const overrides = featureFlags.map((flagName) => Gate(flagName, featureFlagsAtom))
- dynamicConfigs.forEach((configName) => overrides.push(Config(configName, dynamicConfigsAtom)))
-
- const hasOverrides = overrides.some((g) => g !== null)
-
- const [isOpen, setIsOpen] = useState(true)
- const toggleOpen = () => setIsOpen((open) => !open)
-
- return (
-
-
- {isOpen ? 'πΊπ' : 'πΏβοΈ'}
- {isOpen && (
-
- {isStagingEnv() && 'Staging build overrides'}
- {isDevelopmentEnv() && 'Development build overrides'}
-
- )}
-
- {isOpen && (hasOverrides ? overrides : No overrides)}
-
- )
-}
diff --git a/src/featureFlags/dynamicConfig/index.tsx b/src/featureFlags/dynamicConfig/index.tsx
deleted file mode 100644
index a2e61887e7c..00000000000
--- a/src/featureFlags/dynamicConfig/index.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { DynamicConfig, useConfig } from 'statsig-react'
-
-export enum DynamicConfigName {
- quickRouteChains = 'quick_route_chains',
-}
-
-export function useDynamicConfig(configName: DynamicConfigName): DynamicConfig {
- const { config } = useConfig(configName)
- return config
-}
diff --git a/src/featureFlags/dynamicConfig/quickRouteChains.ts b/src/featureFlags/dynamicConfig/quickRouteChains.ts
deleted file mode 100644
index 708e2acb221..00000000000
--- a/src/featureFlags/dynamicConfig/quickRouteChains.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { ChainId } from '@uniswap/sdk-core'
-import { useFeatureFlagsContext } from 'featureFlags'
-
-import { DynamicConfigName, useDynamicConfig } from '.'
-
-export function useQuickRouteChains(): ChainId[] {
- const statsigConfig = useDynamicConfig(DynamicConfigName.quickRouteChains)
- const featureFlagsContext = useFeatureFlagsContext()
-
- const remoteConfigChains = statsigConfig.get(DynamicConfigName.quickRouteChains, []) as ChainId[]
- const localConfigChains =
- featureFlagsContext.configs[DynamicConfigName.quickRouteChains]?.[DynamicConfigName.quickRouteChains]
-
- const chains = Array.isArray(localConfigChains) ? localConfigChains : remoteConfigChains
- if (chains.every((c) => Object.values(ChainId).includes(c))) {
- return chains
- } else {
- console.error('feature flag config chains contain invalid ChainId')
- return []
- }
-}
diff --git a/src/featureFlags/index.tsx b/src/featureFlags/index.tsx
index 1cdf7b539db..8bbd0467f92 100644
--- a/src/featureFlags/index.tsx
+++ b/src/featureFlags/index.tsx
@@ -1,6 +1,5 @@
import { atomWithStorage, useAtomValue, useUpdateAtom } from 'jotai/utils'
import { createContext, ReactNode, useCallback, useContext } from 'react'
-import { useGate } from 'statsig-react'
/**
* The value here must match the value in the statsig dashboard, if you plan to use statsig.
@@ -60,20 +59,6 @@ export function useUpdateFlag() {
)
}
-export function useUpdateConfig() {
- const setConfigs = useUpdateAtom(dynamicConfigSettings)
-
- return useCallback(
- (configName: string, option: any) => {
- setConfigs((configs) => ({
- ...configs,
- [configName]: option,
- }))
- },
- [setConfigs]
- )
-}
-
export function FeatureFlagsProvider({ children }: { children: ReactNode }) {
// TODO: `isLoaded` to `true` so `App.tsx` will render. Later, this will be dependent on
// flags loading from Amplitude, with a timeout.
@@ -97,11 +82,7 @@ export enum BaseVariant {
}
export function useBaseFlag(flag: string, defaultValue = BaseVariant.Control): BaseVariant {
- const { value: statsigValue } = useGate(flag) // non-existent gates return false
const featureFlagsContext = useFeatureFlagsContext()
- if (statsigValue) {
- return BaseVariant.Enabled
- }
switch (featureFlagsContext.flags[flag]) {
case 'enabled':
return BaseVariant.Enabled
diff --git a/src/hooks/useSwitchChain.ts b/src/hooks/useSwitchChain.ts
index c3be3e5481b..db62d323e48 100644
--- a/src/hooks/useSwitchChain.ts
+++ b/src/hooks/useSwitchChain.ts
@@ -1,11 +1,6 @@
import { ChainId } from '@uniswap/sdk-core'
import { Connector } from '@web3-react/types'
-import {
- deprecatedNetworkConnection,
- networkConnection,
- uniwalletWCV2ConnectConnection,
- walletConnectV2Connection,
-} from 'connection'
+import { deprecatedNetworkConnection, networkConnection, walletConnectV2Connection } from 'connection'
import { getChainInfo } from 'constants/chainInfo'
import { isSupportedChain, SupportedInterfaceChain } from 'constants/chains'
import { FALLBACK_URLS, RPC_URLS } from 'constants/networks'
@@ -40,7 +35,6 @@ export function useSwitchChain() {
if (
[
walletConnectV2Connection.connector,
- uniwalletWCV2ConnectConnection.connector,
networkConnection.connector,
deprecatedNetworkConnection.connector,
].includes(connector)
diff --git a/src/index.tsx b/src/index.tsx
index fbe006a1523..4692da4ee63 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -1,7 +1,6 @@
import '@reach/dialog/styles.css'
import 'inter-ui'
import 'polyfills'
-import 'tracing'
import 'connection/eagerlyConnect'
import { ApolloProvider } from '@apollo/client'
diff --git a/src/pages/App.tsx b/src/pages/App.tsx
index ac020fa5194..1bed7b14d54 100644
--- a/src/pages/App.tsx
+++ b/src/pages/App.tsx
@@ -1,45 +1,26 @@
-import { CustomUserProperties, getBrowser, SharedEventName } from '@uniswap/analytics-events'
import { useWeb3React } from '@web3-react/core'
-import { getDeviceId, sendAnalyticsEvent, sendInitializationEvent, Trace, user } from 'analytics'
+import { Trace } from 'analytics'
import ErrorBoundary from 'components/ErrorBoundary'
import Loader from 'components/Icons/LoadingSpinner'
import NavBar, { PageTabs } from 'components/NavBar'
import { UK_BANNER_HEIGHT, UK_BANNER_HEIGHT_MD, UK_BANNER_HEIGHT_SM, UkBanner } from 'components/NavBar/UkBanner'
-import { FeatureFlag, useFeatureFlagsIsLoaded } from 'featureFlags'
-import { useUniswapXDefaultEnabled } from 'featureFlags/flags/uniswapXDefault'
+import { useFeatureFlagsIsLoaded } from 'featureFlags'
import { useAtom } from 'jotai'
-import { useBag } from 'nft/hooks/useBag'
-import { lazy, Suspense, useEffect, useLayoutEffect, useMemo, useState } from 'react'
+import { lazy, Suspense, useEffect, useLayoutEffect, useState } from 'react'
import { Navigate, Route, Routes, useLocation, useSearchParams } from 'react-router-dom'
import { shouldDisableNFTRoutesAtom } from 'state/application/atoms'
-import { useAppSelector } from 'state/hooks'
-import { RouterPreference } from 'state/routing/types'
-import { useRouterPreference, useUserOptedOutOfUniswapX } from 'state/user/hooks'
-import { StatsigProvider, StatsigUser, useGate } from 'statsig-react'
import styled from 'styled-components'
import DarkModeQueryParamReader from 'theme/components/DarkModeQueryParamReader'
-import { useIsDarkMode } from 'theme/components/ThemeToggle'
import { flexRowNoWrap } from 'theme/styles'
import { Z_INDEX } from 'theme/zIndex'
-import { STATSIG_DUMMY_KEY } from 'tracing'
-import { getEnvName } from 'utils/env'
import { getDownloadAppLink } from 'utils/openDownloadApp'
import { getCurrentPageFromLocation } from 'utils/urlRoutes'
-import { getCLS, getFCP, getFID, getLCP, Metric } from 'web-vitals'
-import {MixPanelTrackEvent} from "./mixpanel";
+
+import { MixPanelTrackEvent } from './mixpanel'
import { RouteDefinition, routes, useRouterConfig } from './RouteDefinitions'
const AppChrome = lazy(() => import('./AppChrome'))
-
-
-
-
-
-
-
-
-
const BodyWrapper = styled.div<{ bannerIsVisible?: boolean }>`
display: flex;
flex-direction: column;
@@ -121,11 +102,11 @@ export default function App() {
useEffect(() => {
MixPanelTrackEvent({
- category: "Dapp Visit DEX",
+ category: 'Dapp Visit DEX',
action: 'User Landed',
label: 'Wallet not connected',
- });
- }, []);
+ })
+ }, [])
const [searchParams] = useSearchParams()
useEffect(() => {
@@ -144,17 +125,9 @@ export default function App() {
return () => window.removeEventListener('scroll', scrollListener)
}, [])
- const isBagExpanded = useBag((state) => state.bagExpanded)
- const isHeaderTransparent = !scrolledState && !isBagExpanded
+ const isHeaderTransparent = !scrolledState
const { account } = useWeb3React()
- const statsigUser: StatsigUser = useMemo(
- () => ({
- userID: getDeviceId(),
- customIDs: { address: account ?? '' },
- }),
- [account]
- )
// redirect address to landing pages until implemented
const shouldRedirectToAppInstall = pathname?.startsWith('/address/')
@@ -178,108 +151,36 @@ export default function App() {
-
-
- {renderBanner && }
-
-
-
-
-
-
-
- }>
- {isLoaded ? (
-
- {routes.map((route: RouteDefinition) =>
- route.enabled(routerConfig) ? (
-
- {route.nestedPaths.map((nestedPath) => (
-
- ))}
-
- ) : null
- )}
-
- ) : (
-
- )}
-
-
-
-
-
-
+ {renderBanner && }
+
+
+
+
+
+
+
+ }>
+ {isLoaded ? (
+
+ {routes.map((route: RouteDefinition) =>
+ route.enabled(routerConfig) ? (
+
+ {route.nestedPaths.map((nestedPath) => (
+
+ ))}
+
+ ) : null
+ )}
+
+ ) : (
+
+ )}
+
+
+
+
+
)
}
-
-function UserPropertyUpdater() {
- const isDarkMode = useIsDarkMode()
-
- const [routerPreference] = useRouterPreference()
- const userOptedOutOfUniswapX = useUserOptedOutOfUniswapX()
- const isUniswapXDefaultEnabled = useUniswapXDefaultEnabled()
- const { isLoading: isUniswapXDefaultLoading } = useGate(FeatureFlag.uniswapXDefaultEnabled)
- const rehydrated = useAppSelector((state) => state._persist.rehydrated)
-
- useEffect(() => {
- // User properties *must* be set before sending corresponding event properties,
- // so that the event contains the correct and up-to-date user properties.
- user.set(CustomUserProperties.USER_AGENT, navigator.userAgent)
- user.set(CustomUserProperties.BROWSER, getBrowser())
- user.set(CustomUserProperties.SCREEN_RESOLUTION_HEIGHT, window.screen.height)
- user.set(CustomUserProperties.SCREEN_RESOLUTION_WIDTH, window.screen.width)
- user.set(CustomUserProperties.GIT_COMMIT_HASH, process.env.REACT_APP_GIT_COMMIT_HASH ?? 'unknown')
-
- // Service Worker analytics
- const isServiceWorkerInstalled = Boolean(window.navigator.serviceWorker?.controller)
- const isServiceWorkerHit = Boolean((window as any).__isDocumentCached)
- const serviceWorkerProperty = isServiceWorkerInstalled ? (isServiceWorkerHit ? 'hit' : 'miss') : 'uninstalled'
-
- const pageLoadProperties = { service_worker: serviceWorkerProperty }
- sendInitializationEvent(SharedEventName.APP_LOADED, pageLoadProperties)
- const sendWebVital =
- (metric: string) =>
- ({ delta }: Metric) =>
- sendAnalyticsEvent(SharedEventName.WEB_VITALS, { ...pageLoadProperties, [metric]: delta })
- getCLS(sendWebVital('cumulative_layout_shift'))
- getFCP(sendWebVital('first_contentful_paint_ms'))
- getFID(sendWebVital('first_input_delay_ms'))
- getLCP(sendWebVital('largest_contentful_paint_ms'))
- }, [])
-
- useEffect(() => {
- user.set(CustomUserProperties.DARK_MODE, isDarkMode)
- }, [isDarkMode])
-
- useEffect(() => {
- if (isUniswapXDefaultLoading || !rehydrated) return
-
- // If we're not in the transition period to UniswapX opt-out, set the router preference to whatever is specified.
- if (!isUniswapXDefaultEnabled) {
- user.set(CustomUserProperties.ROUTER_PREFERENCE, routerPreference)
- return
- }
-
- // In the transition period, override the stored API preference to UniswapX if the user hasn't opted out.
- if (routerPreference === RouterPreference.API && !userOptedOutOfUniswapX) {
- user.set(CustomUserProperties.ROUTER_PREFERENCE, RouterPreference.X)
- return
- }
-
- // Otherwise, the user has opted out or their preference is UniswapX/client, so set the preference to whatever is specified.
- user.set(CustomUserProperties.ROUTER_PREFERENCE, routerPreference)
- }, [routerPreference, isUniswapXDefaultEnabled, userOptedOutOfUniswapX, isUniswapXDefaultLoading, rehydrated])
- return null
-}
diff --git a/src/pages/Landing/index.tsx b/src/pages/Landing/index.tsx
index 2ae8edf24bd..4042fb0742e 100644
--- a/src/pages/Landing/index.tsx
+++ b/src/pages/Landing/index.tsx
@@ -4,10 +4,8 @@ import { Trace, TraceEvent } from 'analytics'
import { AboutFooter } from 'components/About/AboutFooter'
import Card, { CardType } from 'components/About/Card'
import { MAIN_CARDS, MORE_CARDS } from 'components/About/constants'
-import ProtocolBanner from 'components/About/ProtocolBanner'
import { useAccountDrawer } from 'components/AccountDrawer'
import { BaseButton } from 'components/Button'
-import { AppleLogo } from 'components/Logo/AppleLogo'
import { useDisableNFTRoutes } from 'hooks/useDisableNFTRoutes'
import Swap from 'pages/Swap'
import { parse } from 'qs'
@@ -22,7 +20,6 @@ import { BREAKPOINTS } from 'theme'
import { useIsDarkMode } from 'theme/components/ThemeToggle'
import { textFadeIn, TRANSITION_DURATIONS } from 'theme/styles'
import { Z_INDEX } from 'theme/zIndex'
-import { getDownloadAppLinkProps } from 'utils/openDownloadApp'
const PageContainer = styled.div`
position: absolute;
@@ -457,17 +454,6 @@ export default function Landing() {
Learn more
-
-
-
- Download the Uniswap Wallet for iOS
-
@@ -484,7 +470,6 @@ export default function Landing() {
))}
-
diff --git a/src/react-app-env.d.ts b/src/react-app-env.d.ts
index 56899769784..cc4924c31de 100644
--- a/src/react-app-env.d.ts
+++ b/src/react-app-env.d.ts
@@ -5,8 +5,6 @@ declare module '@metamask/jazzicon' {
}
interface Window {
- GIT_COMMIT_HASH?: string
-
// walletLinkExtension is injected by the Coinbase Wallet extension
walletLinkExtension?: any
ethereum?: {
diff --git a/src/setupTests.ts b/src/setupTests.ts
index a024eeb79fd..d6c84fb9227 100644
--- a/src/setupTests.ts
+++ b/src/setupTests.ts
@@ -24,7 +24,7 @@ if (typeof global.TextEncoder === 'undefined') {
// Sets origin to the production origin, because some tests depend on this.
// This prevents each test file from needing to set this manually.
-global.origin = 'https://app.uniswap.org'
+global.origin = 'https://dex.a51.finance'
global.matchMedia =
global.matchMedia ||
diff --git a/src/state/application/hooks.ts b/src/state/application/hooks.ts
index a4123bfbddd..9b2018e4166 100644
--- a/src/state/application/hooks.ts
+++ b/src/state/application/hooks.ts
@@ -1,87 +1,15 @@
-import { MoonpayEventName } from '@uniswap/analytics-events'
-import { sendAnalyticsEvent } from 'analytics'
import { DEFAULT_TXN_DISMISS_MS } from 'constants/misc'
-import { useCallback, useEffect, useMemo, useState } from 'react'
+import { useCallback, useMemo } from 'react'
import { useAppDispatch, useAppSelector } from 'state/hooks'
import { AppState } from 'state/reducer'
-import {
- addPopup,
- ApplicationModal,
- PopupContent,
- removePopup,
- setFiatOnrampAvailability,
- setOpenModal,
-} from './reducer'
+import { addPopup, ApplicationModal, PopupContent, removePopup, setOpenModal } from './reducer'
export function useModalIsOpen(modal: ApplicationModal): boolean {
const openModal = useAppSelector((state: AppState) => state.application.openModal)
return openModal === modal
}
-/** @ref https://dashboard.moonpay.com/api_reference/client_side_api#ip_addresses */
-interface MoonpayIPAddressesResponse {
- alpha3?: string
- isAllowed?: boolean
- isBuyAllowed?: boolean
- isSellAllowed?: boolean
-}
-
-async function getMoonpayAvailability(): Promise {
- const moonpayPublishableKey = process.env.REACT_APP_MOONPAY_PUBLISHABLE_KEY
- if (!moonpayPublishableKey) {
- throw new Error('Must provide a publishable key for moonpay.')
- }
- const moonpayApiURI = process.env.REACT_APP_MOONPAY_API
- if (!moonpayApiURI) {
- throw new Error('Must provide an api endpoint for moonpay.')
- }
- const res = await fetch(`${moonpayApiURI}/v4/ip_address?apiKey=${moonpayPublishableKey}`)
- const data = await (res.json() as Promise)
- return data.isBuyAllowed ?? false
-}
-
-export function useFiatOnrampAvailability(shouldCheck: boolean, callback?: () => void) {
- const dispatch = useAppDispatch()
- const { available, availabilityChecked } = useAppSelector((state: AppState) => state.application.fiatOnramp)
- const [error, setError] = useState(null)
- const [loading, setLoading] = useState(false)
-
- useEffect(() => {
- async function checkAvailability() {
- setError(null)
- setLoading(true)
- try {
- const result = await getMoonpayAvailability()
- sendAnalyticsEvent(MoonpayEventName.MOONPAY_GEOCHECK_COMPLETED, { success: result })
- if (stale) return
- dispatch(setFiatOnrampAvailability(result))
- if (result && callback) {
- callback()
- }
- } catch (e) {
- console.error('Error checking onramp availability', e.toString())
- if (stale) return
- setError('Error, try again later.')
- dispatch(setFiatOnrampAvailability(false))
- } finally {
- if (!stale) setLoading(false)
- }
- }
-
- if (!availabilityChecked && shouldCheck) {
- checkAvailability()
- }
-
- let stale = false
- return () => {
- stale = true
- }
- }, [availabilityChecked, callback, dispatch, shouldCheck])
-
- return { available, availabilityChecked, loading, error }
-}
-
export function useToggleModal(modal: ApplicationModal): () => void {
const isOpen = useModalIsOpen(modal)
const dispatch = useAppDispatch()
diff --git a/src/state/application/reducer.test.ts b/src/state/application/reducer.test.ts
index fcc8c6a12d9..01c0ddabfb4 100644
--- a/src/state/application/reducer.test.ts
+++ b/src/state/application/reducer.test.ts
@@ -14,7 +14,6 @@ describe('application reducer', () => {
beforeEach(() => {
store = createStore(reducer, {
- fiatOnramp: { available: false, availabilityChecked: false },
chainId: null,
openModal: null,
popupList: [],
diff --git a/src/state/application/reducer.ts b/src/state/application/reducer.ts
index 747153d2fae..72cee89bf90 100644
--- a/src/state/application/reducer.ts
+++ b/src/state/application/reducer.ts
@@ -29,7 +29,6 @@ export enum ApplicationModal {
DELEGATE,
EXECUTE,
FEATURE_FLAGS,
- FIAT_ONRAMP,
MENU,
METAMASK_CONNECTION_ERROR,
NETWORK_FILTER,
@@ -51,13 +50,11 @@ export type PopupList = Array<{ key: string; show: boolean; content: PopupConten
export interface ApplicationState {
readonly chainId: number | null
- readonly fiatOnramp: { available: boolean; availabilityChecked: boolean }
readonly openModal: ApplicationModal | null
readonly popupList: PopupList
}
const initialState: ApplicationState = {
- fiatOnramp: { available: false, availabilityChecked: false },
chainId: null,
openModal: null,
popupList: [],
@@ -67,9 +64,6 @@ const applicationSlice = createSlice({
name: 'application',
initialState,
reducers: {
- setFiatOnrampAvailability(state, { payload: available }) {
- state.fiatOnramp = { available, availabilityChecked: true }
- },
updateChainId(state, action) {
const { chainId } = action.payload
state.chainId = chainId
@@ -100,6 +94,5 @@ const applicationSlice = createSlice({
},
})
-export const { updateChainId, setFiatOnrampAvailability, setOpenModal, addPopup, removePopup } =
- applicationSlice.actions
+export const { updateChainId, setOpenModal, addPopup, removePopup } = applicationSlice.actions
export default applicationSlice.reducer
diff --git a/src/state/logging.ts b/src/state/logging.ts
index f374b1a3cc8..f1159ce792b 100644
--- a/src/state/logging.ts
+++ b/src/state/logging.ts
@@ -28,7 +28,6 @@ export const sentryEnhancer = Sentry.createReduxEnhancer({
const { application, user, transactions } = state
return {
application: {
- fiatOnramp: application.fiatOnramp,
chainId: application.chainId,
openModal: application.openModal,
popupList: application.popupList,
diff --git a/src/state/reducerTypeTest.ts b/src/state/reducerTypeTest.ts
index 5aadb432315..26abc485cb6 100644
--- a/src/state/reducerTypeTest.ts
+++ b/src/state/reducerTypeTest.ts
@@ -120,7 +120,6 @@ assert>()
interface ExpectedApplicationState {
readonly chainId: number | null
- readonly fiatOnramp: { available: boolean; availabilityChecked: boolean }
readonly openModal: ApplicationModal | null
readonly popupList: PopupList
}
diff --git a/src/tracing/index.ts b/src/tracing/index.ts
deleted file mode 100644
index d37c0d20f2b..00000000000
--- a/src/tracing/index.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import * as Sentry from '@sentry/react'
-import { BrowserTracing } from '@sentry/tracing'
-import { SharedEventName } from '@uniswap/analytics-events'
-import { initializeAnalytics, OriginApplication } from 'analytics'
-import store from 'state'
-import { setOriginCountry } from 'state/user/reducer'
-import { isDevelopmentEnv, isProductionEnv, isSentryEnabled } from 'utils/env'
-import { getEnvName } from 'utils/env'
-import { v4 as uuidv4 } from 'uuid'
-
-import { beforeSend } from './errors'
-
-// Dump some metadata into the window to allow client verification.
-window.GIT_COMMIT_HASH = process.env.REACT_APP_GIT_COMMIT_HASH
-
-// This is used to identify the user in Sentry.
-const SENTRY_USER_ID_KEY = 'sentry-user-id'
-
-// Actual KEYs are set by proxy servers.
-const AMPLITUDE_DUMMY_KEY = '00000000000000000000000000000000'
-export const STATSIG_DUMMY_KEY = 'client-0000000000000000000000000000000000000000000'
-
-Sentry.init({
- dsn: process.env.REACT_APP_SENTRY_DSN,
- release: process.env.REACT_APP_GIT_COMMIT_HASH,
- environment: getEnvName(),
- enabled: isSentryEnabled(),
- tracesSampleRate: Number(process.env.REACT_APP_SENTRY_TRACES_SAMPLE_RATE ?? 0),
- integrations: [
- new BrowserTracing({
- startTransactionOnLocationChange: false,
- startTransactionOnPageLoad: true,
- }),
- ],
- beforeSend,
-})
-
-let sentryUserId = localStorage.getItem(SENTRY_USER_ID_KEY)
-if (!sentryUserId) {
- localStorage.setItem(SENTRY_USER_ID_KEY, (sentryUserId = uuidv4()))
-}
-Sentry.setUser({ id: sentryUserId })
-
-initializeAnalytics(AMPLITUDE_DUMMY_KEY, OriginApplication.INTERFACE, {
- proxyUrl: process.env.REACT_APP_AMPLITUDE_PROXY_URL,
- defaultEventName: SharedEventName.PAGE_VIEWED,
- commitHash: process.env.REACT_APP_GIT_COMMIT_HASH,
- isProductionEnv: isProductionEnv(),
- debug: isDevelopmentEnv(),
- reportOriginCountry: (country: string) => store.dispatch(setOriginCountry(country)),
-})
diff --git a/src/utils/openDownloadApp.ts b/src/utils/openDownloadApp.ts
index 2eb8a686a2f..4efaaba4aef 100644
--- a/src/utils/openDownloadApp.ts
+++ b/src/utils/openDownloadApp.ts
@@ -41,16 +41,6 @@ export const getDownloadAppLink = (options: OpenDownloadAppOptions = defaultDown
? linkWithParams(APP_STORE_LINK, options?.appStoreParams)
: linkWithParams(MICROSITE_LINK, options?.microSiteParams)
-export const getDownloadAppLinkProps = (options: OpenDownloadAppOptions = defaultDownloadAppOptions) => {
- return {
- href: getDownloadAppLink(options),
- onClick(e: { preventDefault: () => void }) {
- e.preventDefault()
- openDownloadApp(options)
- },
- }
-}
-
type AnalyticsLinkOptions = {
element?: InterfaceElementName
urlParamString?: string
diff --git a/yarn.lock b/yarn.lock
index 483727a14a5..85008791653 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -15767,11 +15767,6 @@ js-sdsl@^4.1.4:
resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430"
integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==
-js-sha256@^0.9.0:
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966"
- integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==
-
js-sha3@0.8.0, js-sha3@^0.8.0:
version "0.8.0"
resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz"
@@ -21177,22 +21172,6 @@ stats-lite@^2.2.0:
dependencies:
isnumber "~1.0.0"
-statsig-js@^4.28.1:
- version "4.28.1"
- resolved "https://registry.yarnpkg.com/statsig-js/-/statsig-js-4.28.1.tgz#07010f1cd51012087f3b5f7a51fe23767dd876dd"
- integrity sha512-ZRmkWWsst06JWT9jQncLDLG1KGXnLtaHvMoeC6pLUa4n6sU0It0SpupVTeC+60wH3I/+PHU2y6C5u7bR1MFzMA==
- dependencies:
- js-sha256 "^0.9.0"
- uuid "^8.3.2"
- whatwg-fetch "^3.6.2"
-
-statsig-react@^1.22.0:
- version "1.22.0"
- resolved "https://registry.yarnpkg.com/statsig-react/-/statsig-react-1.22.0.tgz#3f4f1498dc78bba53d80d6eb4c9d507b2a3c16e5"
- integrity sha512-10lg5dsEmLzS6zuIdKwrvZ9gZJAdncZlJteSmjTZSOpQZyobWBuO7TBqjGzkBv2+UQn0d+Pkoz3L4Hy2uPvhQA==
- dependencies:
- statsig-js "^4.28.1"
-
statuses@2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"