diff --git a/packages/synapse-interface/assets/chains/worldchain.svg b/packages/synapse-interface/assets/chains/worldchain.svg
new file mode 100644
index 0000000000..126d25174e
--- /dev/null
+++ b/packages/synapse-interface/assets/chains/worldchain.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/synapse-interface/assets/icons/wld.svg b/packages/synapse-interface/assets/icons/wld.svg
new file mode 100644
index 0000000000..126d25174e
--- /dev/null
+++ b/packages/synapse-interface/assets/icons/wld.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/synapse-interface/components/layouts/LandingPageWrapper/index.tsx b/packages/synapse-interface/components/layouts/LandingPageWrapper/index.tsx
index dc1cb52a4d..c811734d1c 100644
--- a/packages/synapse-interface/components/layouts/LandingPageWrapper/index.tsx
+++ b/packages/synapse-interface/components/layouts/LandingPageWrapper/index.tsx
@@ -59,10 +59,10 @@ export function LandingPageWrapper({ children }: { children: any }) {
style={TODO_REMOVE_wrapperStyle}
>
diff --git a/packages/synapse-interface/constants/bridgeMap.ts b/packages/synapse-interface/constants/bridgeMap.ts
index b1fb3a1d35..a14435d7d6 100644
--- a/packages/synapse-interface/constants/bridgeMap.ts
+++ b/packages/synapse-interface/constants/bridgeMap.ts
@@ -28,6 +28,13 @@ export const BRIDGE_MAP = {
destination: ['JEWEL'],
swappable: [],
},
+ '0x163f8C2467924be0ae7B5347228CABF260318753': {
+ decimals: 18,
+ symbol: 'WLD',
+ origin: ['RFQ.WLD'],
+ destination: ['RFQ.WLD'],
+ swappable: [],
+ },
'0x1B84765dE8B7566e4cEAF4D0fD3c5aF52D3DdE4F': {
decimals: 18,
symbol: 'nUSD',
@@ -455,6 +462,13 @@ export const BRIDGE_MAP = {
destination: ['L2DAO'],
swappable: [],
},
+ '0xdC6fF44d5d932Cbd77B52E5612Ba0529DC6226F1': {
+ decimals: 18,
+ symbol: 'WLD',
+ origin: ['RFQ.WLD'],
+ destination: ['RFQ.WLD'],
+ swappable: [],
+ },
},
'25': {
'0x396c9c192dd323995346632581BEF92a31AC623b': {
@@ -591,7 +605,7 @@ export const BRIDGE_MAP = {
},
'0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270': {
decimals: 18,
- symbol: 'WMATIC',
+ symbol: 'WPOL',
origin: ['MATIC'],
destination: ['MATIC'],
swappable: [],
@@ -670,7 +684,7 @@ export const BRIDGE_MAP = {
},
'0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': {
decimals: 18,
- symbol: 'MATIC',
+ symbol: 'POL',
origin: ['MATIC'],
destination: ['MATIC'],
swappable: [],
@@ -872,6 +886,29 @@ export const BRIDGE_MAP = {
],
},
},
+ '480': {
+ '0x2cFc85d8E48F8EAB294be644d9E25C3030863003': {
+ decimals: 18,
+ symbol: 'WLD',
+ origin: ['RFQ.WLD'],
+ destination: ['RFQ.WLD'],
+ swappable: [],
+ },
+ '0x79A02482A880bCE3F13e09Da970dC34db4CD24d1': {
+ decimals: 6,
+ symbol: 'USDC.e',
+ origin: ['RFQ.USDC'],
+ destination: ['RFQ.USDC'],
+ swappable: [],
+ },
+ '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE': {
+ decimals: 18,
+ symbol: 'ETH',
+ origin: ['RFQ.ETH'],
+ destination: ['RFQ.ETH'],
+ swappable: [],
+ },
+ },
'1088': {
'0x17C09cfC96C865CF546d73365Cedb6dC66986963': {
decimals: 18,
@@ -896,7 +933,7 @@ export const BRIDGE_MAP = {
},
'0x75cb093E4D61d2A2e65D8e0BBb01DE8d89b53481': {
decimals: 18,
- symbol: 'WMETIS',
+ symbol: 'WMetis',
origin: ['Metis'],
destination: ['Metis'],
swappable: [],
diff --git a/packages/synapse-interface/constants/chains/extraWagmiChains.ts b/packages/synapse-interface/constants/chains/extraWagmiChains.ts
index f7dde252d0..0340462000 100644
--- a/packages/synapse-interface/constants/chains/extraWagmiChains.ts
+++ b/packages/synapse-interface/constants/chains/extraWagmiChains.ts
@@ -63,3 +63,30 @@ export const dogechain = {
},
},
}
+
+export const worldchain = {
+ id: 480,
+ name: 'World Chain',
+ network: 'worldchain',
+ nativeCurrency: {
+ decimals: 18,
+ name: 'Ether',
+ symbol: 'ETH',
+ },
+ rpcUrls: {
+ default: { http: ['https://worldchain-mainnet.g.alchemy.com/public'] },
+ public: { http: ['https://worldchain-mainnet.g.alchemy.com/public'] },
+ },
+ blockExplorers: {
+ default: {
+ name: 'World Chain Explorer',
+ url: 'https://worldchain-mainnet.explorer.alchemy.com',
+ },
+ },
+ contracts: {
+ multicall3: {
+ address: '0xca11bde05977b3631167028862be2a173976ca11',
+ blockCreated: 1517589,
+ },
+ },
+}
diff --git a/packages/synapse-interface/constants/chains/index.tsx b/packages/synapse-interface/constants/chains/index.tsx
index 81246afda9..7c3d38929b 100644
--- a/packages/synapse-interface/constants/chains/index.tsx
+++ b/packages/synapse-interface/constants/chains/index.tsx
@@ -42,6 +42,7 @@ export const ChainId = {
POLYGON: 137,
FANTOM: 250,
BOBA: 288,
+ WORLDCHAIN: 480,
METIS: 1088,
MOONBEAM: 1284,
MOONRIVER: 1285,
diff --git a/packages/synapse-interface/constants/chains/master.tsx b/packages/synapse-interface/constants/chains/master.tsx
index 0869253840..cd41c1aa26 100644
--- a/packages/synapse-interface/constants/chains/master.tsx
+++ b/packages/synapse-interface/constants/chains/master.tsx
@@ -20,6 +20,7 @@ import optimismImg from '@assets/chains/optimism.svg'
import polygonImg from '@assets/chains/polygon.svg'
import scrollImg from '@assets/chains/scroll.svg'
import lineaImg from '@assets/chains/linea.svg'
+import worldchainImg from '@assets/chains/worldchain.svg'
import ethExplorerImg from '@assets/explorer/etherscan.svg'
import arbitrumExplorerImg from '@assets/explorer/arbiscan.svg'
@@ -161,7 +162,7 @@ export const CANTO: Chain = {
}
export const OPTIMISM: Chain = {
- priorityRank: 80,
+ priorityRank: 91,
id: 10,
chainSymbol: 'OPTIMISM',
name: 'Optimism',
@@ -562,7 +563,6 @@ export const SCROLL: Chain = {
icon: scrollImg,
},
color: 'orange',
- isNew: true,
}
export const LINEA: Chain = {
@@ -588,5 +588,32 @@ export const LINEA: Chain = {
icon: lineaImg,
},
color: 'black',
+ isNew: false,
+}
+
+export const WORLDCHAIN: Chain = {
+ priorityRank: 99,
+ id: 480,
+ chainSymbol: 'WORLDCHAIN',
+ name: 'World Chain',
+ chainImg: worldchainImg,
+ layer: 2,
+ rpcUrls: {
+ primary:
+ 'https://worldchain-mainnet.g.alchemy.com/v2/kThJADa4Pb6x6kTS--MoMQRI7d3OliUH',
+ fallback: 'https://worldchain-mainnet.g.alchemy.com/public',
+ },
+ explorerUrl: 'https://worldchain-mainnet.explorer.alchemy.com',
+ explorerName: 'World Chain Explorer',
+ explorerImg: worldchainImg,
+ blockTime: 3000,
+ nativeCurrency: {
+ name: 'Ethereum',
+ symbol: 'ETH',
+ decimals: 18,
+ address: zeroAddress,
+ icon: ethImg,
+ },
+ color: 'black',
isNew: true,
}
diff --git a/packages/synapse-interface/constants/chains/supportedChains.ts b/packages/synapse-interface/constants/chains/supportedChains.ts
index e9ef9c6533..394e61ec3b 100644
--- a/packages/synapse-interface/constants/chains/supportedChains.ts
+++ b/packages/synapse-interface/constants/chains/supportedChains.ts
@@ -21,15 +21,16 @@ import {
linea,
} from '@wagmi/core/chains'
-import { dfk, dogechain } from '@/constants/chains/extraWagmiChains'
+import { dfk, dogechain, worldchain } from '@/constants/chains/extraWagmiChains'
import { CHAINS_BY_ID } from '@/constants/chains'
export const supportedChains = [
mainnet,
+ worldchain,
+ optimism,
arbitrum,
avalanche,
base,
- optimism,
scroll,
linea,
blast,
diff --git a/packages/synapse-interface/constants/tokens/bridgeable.ts b/packages/synapse-interface/constants/tokens/bridgeable.ts
index b5a97e3714..bf3b54299a 100644
--- a/packages/synapse-interface/constants/tokens/bridgeable.ts
+++ b/packages/synapse-interface/constants/tokens/bridgeable.ts
@@ -42,6 +42,7 @@ import usdtLogo from '@assets/icons/usdt.svg'
import vstaLogo from '@assets/icons/vsta.svg'
import wbtcLogo from '@assets/icons/wbtc.svg'
import wethLogo from '@assets/icons/weth.svg'
+import wldLogo from '@assets/icons/wld.svg'
import { Token } from '@/utils/types'
import * as CHAINS from '@/constants/chains/master'
@@ -711,6 +712,7 @@ export const ETH = new Token({
[CHAINS.BLAST.id]: zeroAddress,
[CHAINS.SCROLL.id]: zeroAddress,
[CHAINS.LINEA.id]: zeroAddress,
+ [CHAINS.WORLDCHAIN.id]: zeroAddress,
},
decimals: 18,
symbol: 'ETH',
@@ -859,6 +861,7 @@ export const USDCe = new Token({
[CHAINS.ARBITRUM.id]: '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8',
[CHAINS.AURORA.id]: '0xB12BFcA5A55806AaF64E99521918A4bf0fC40802',
[CHAINS.POLYGON.id]: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',
+ [CHAINS.WORLDCHAIN.id]: '0x79A02482A880bCE3F13e09Da970dC34db4CD24d1',
},
decimals: 6,
symbol: 'USDC.e',
@@ -1046,7 +1049,6 @@ export const WKLAY = new Token({
export const MATIC = new Token({
addresses: {
- [CHAINS.POLYGON.id]: zeroAddress,
[CHAINS.DFK.id]: '0xD17a41Cd199edF1093A9Be4404EaDe52Ec19698e',
},
decimals: 18,
@@ -1061,7 +1063,23 @@ export const MATIC = new Token({
routeSymbol: 'MATIC',
})
-export const WMATIC = new Token({
+export const POL = new Token({
+ addresses: {
+ [CHAINS.POLYGON.id]: zeroAddress,
+ },
+ decimals: 18,
+ symbol: 'MATIC',
+ name: 'MATIC',
+ logo: maticLogo,
+ isNative: true,
+ swapableType: 'MATIC',
+ color: 'blue',
+ visibilityRank: 90,
+ priorityRank: 300,
+ routeSymbol: 'POL',
+})
+
+export const WPOL = new Token({
addresses: {
[CHAINS.POLYGON.id]: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270',
},
@@ -1073,7 +1091,7 @@ export const WMATIC = new Token({
color: 'blue',
visibilityRank: 90,
priorityRank: 350,
- routeSymbol: 'WMATIC',
+ routeSymbol: 'WPOL',
})
export const FTM = new Token({
@@ -1230,3 +1248,24 @@ export const METIS = new Token({
color: 'blue',
routeSymbol: 'Metis',
})
+
+export const WLD = new Token({
+ visibilityRank: 106,
+ addresses: {
+ [CHAINS.ETH.id]: '0x163f8C2467924be0ae7B5347228CABF260318753',
+ [CHAINS.OPTIMISM.id]: '0xdC6fF44d5d932Cbd77B52E5612Ba0529DC6226F1',
+ [CHAINS.WORLDCHAIN.id]: '0x2cFc85d8E48F8EAB294be644d9E25C3030863003',
+ },
+ decimals: {
+ [CHAINS.ETH.id]: 18,
+ [CHAINS.OPTIMISM.id]: 18,
+ [CHAINS.WORLDCHAIN.id]: 18,
+ },
+ symbol: 'WLD',
+ name: 'Worldcoin',
+ logo: wldLogo,
+ swapableType: 'WLD',
+ color: 'gray',
+ priorityRank: 106,
+ routeSymbol: 'WLD',
+})
diff --git a/packages/synapse-interface/scripts/data/providers.json b/packages/synapse-interface/scripts/data/providers.json
index ba4d42f6c7..79c3a56afb 100644
--- a/packages/synapse-interface/scripts/data/providers.json
+++ b/packages/synapse-interface/scripts/data/providers.json
@@ -6,6 +6,7 @@
"137": "https://polygon-bor.publicnode.com",
"250": "https://rpc3.fantom.network",
"288": "https://replica.boba.network",
+ "480": "https://worldchain-mainnet.g.alchemy.com/public",
"1088": "https://andromeda.metis.io/?owner=1088",
"1284": "https://moonbeam.public.blastapi.io",
"1285": "https://moonriver.public.blastapi.io",
diff --git a/packages/synapse-interface/scripts/generateMaps.js b/packages/synapse-interface/scripts/generateMaps.js
index 900bd69f78..3138e642cb 100644
--- a/packages/synapse-interface/scripts/generateMaps.js
+++ b/packages/synapse-interface/scripts/generateMaps.js
@@ -42,7 +42,9 @@ const allowedChainIdsForSynapseBridge = [
const allowedChainIdsForSynapseCCTPRouter = [1, 10, 137, 8453, 42161, 43114]
// Chain IDs where RFQ is allowed
-const allowedChainIdsForRfq = [1, 10, 56, 8453, 42161, 59144, 81457, 534352]
+const allowedChainIdsForRfq = [
+ 1, 10, 56, 480, 8453, 42161, 59144, 81457, 534352,
+]
// Get SynapseRouter contract instances for each chain
const SynapseRouters = {}
@@ -374,12 +376,20 @@ const printMaps = async () => {
const tokens = {}
await Promise.all(
Object.keys(originMap).map(async (token) => {
+ const decimals = await getTokenDecimals(chainId, token)
+ const symbol = await getTokenSymbol(chainId, token)
+ const origin = Array.from(originMap[token])
+ .map((t) => (t === 'RFQ.USDC.e' ? 'RFQ.USDC' : t))
+ .sort()
+ const destination = await getDestinationBridgeSymbols(chainId, token)
+ const swappable = extractSwappable(poolSets, token)
+
tokens[token] = {
- decimals: await getTokenDecimals(chainId, token),
- symbol: await getTokenSymbol(chainId, token),
- origin: Array.from(originMap[token]).sort(),
- destination: await getDestinationBridgeSymbols(chainId, token),
- swappable: extractSwappable(poolSets, token),
+ decimals,
+ symbol,
+ origin,
+ destination,
+ swappable,
}
// Check if token is supported as destination asset in RFQ
if (
@@ -457,7 +467,11 @@ const getTokenDecimals = async (chainId, token) => {
}
const getRFQSymbol = (symbol) => {
- return `RFQ.${symbol}`
+ if (symbol === 'USDC.e') {
+ return 'RFQ.USDC'
+ } else {
+ return `RFQ.${symbol}`
+ }
}
printMaps()