diff --git a/public/assets/chains/ton.svg b/public/assets/chains/ton.svg new file mode 100644 index 00000000000..46593c13c53 --- /dev/null +++ b/public/assets/chains/ton.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/components/CCIP/Chain/Chain.astro b/src/components/CCIP/Chain/Chain.astro index fd726a209a2..470231de727 100644 --- a/src/components/CCIP/Chain/Chain.astro +++ b/src/components/CCIP/Chain/Chain.astro @@ -127,7 +127,7 @@ const chainStructuredData = generateChainStructuredData(

Tokens ({allTokens.length})

{ - network.chainType !== "solana" && network.chainType !== "aptos" && ( + network.chainType !== "solana" && network.chainType !== "aptos" && network.chainType !== "ton" && ( = { dogeos: "DogeOS", edge: "Edge", robinhood: "Robinhood Chain", + ton: "TON", } diff --git a/src/config/data/ccip/selectors.yml b/src/config/data/ccip/selectors.yml index 4d397eb9760..52e67bffc8f 100644 --- a/src/config/data/ccip/selectors.yml +++ b/src/config/data/ccip/selectors.yml @@ -1074,3 +1074,7 @@ selectors: selector: "1091131740251125869" name: "ethereum-testnet-sepolia-ronin-1" network_type: testnet + -3: + name: ton-testnet + selector: "1399300952838017768" + network_type: testnet diff --git a/src/config/data/ccip/v1_2_0/testnet/chains.json b/src/config/data/ccip/v1_2_0/testnet/chains.json index 627f131b4b1..eb47a037015 100644 --- a/src/config/data/ccip/v1_2_0/testnet/chains.json +++ b/src/config/data/ccip/v1_2_0/testnet/chains.json @@ -1676,6 +1676,22 @@ "version": "1.5.1" } }, + "ton-testnet": { + "armProxy": { + "address": "EQB9QIw22sgwNKMfqsMKGepkhnjXYJmXlzCgcBSAlaiF9VCj", + "version": "1.6.0" + }, + "chainSelector": "1399300952838017768", + "feeTokens": ["TON"], + "router": { + "address": "EQB9QIw22sgwNKMfqsMKGepkhnjXYJmXlzCgcBSAlaiF9VCj", + "version": "1.6.0" + }, + "tokenAdminRegistry": { + "address": "", + "version": "" + } + }, "treasure-testnet-topaz": { "armProxy": { "address": "0x43f7b33Aee99208A38e4384655d35D8F0dCe7C51", diff --git a/src/config/data/ccip/v1_2_0/testnet/lanes.json b/src/config/data/ccip/v1_2_0/testnet/lanes.json index ce74458275c..1883a2efc9a 100644 --- a/src/config/data/ccip/v1_2_0/testnet/lanes.json +++ b/src/config/data/ccip/v1_2_0/testnet/lanes.json @@ -3589,6 +3589,17 @@ } } }, + "ton-testnet": { + "offRamp": { + "address": "0x0820f975ce90EE5c508657F0C58b71D1fcc85cE0", + "version": "1.6.0" + }, + "onRamp": { + "address": "0x23a5084Fa78104F3DF11C63Ae59fcac4f6AD9DeE", + "enforceOutOfOrder": true, + "version": "1.6.0" + } + }, "treasure-testnet-topaz": { "offRamp": { "address": "0x25bDd16cD2721baB3D81043ed9742CD8F1f5bF6b", @@ -4184,6 +4195,17 @@ } } }, + "ton-testnet": { + "offRamp": { + "address": "0xF4EbCC2c077d3939434C7Ab0572660c5A45e4df5", + "version": "1.6.0" + }, + "onRamp": { + "address": "0x28A025d34c830BF212f5D2357C8DcAB32dD92A20", + "enforceOutOfOrder": true, + "version": "1.6.0" + } + }, "treasure-testnet-topaz": { "offRamp": { "address": "0xc3d4057a56bA7E05f6A753d200d7053fE672d151", @@ -7627,6 +7649,30 @@ } } }, + "ton-testnet": { + "ethereum-testnet-sepolia": { + "offRamp": { + "address": "EQDPuQ0nydRXyQPWFr_d4w-tzfQMXwovke0TaIPLlCBdgAed", + "version": "1.6.0" + }, + "onRamp": { + "address": "EQDioi9PI32Wo1oBwkUp0pj1AhwvAHiKiZCfgrr0iDqu3lTA", + "enforceOutOfOrder": true, + "version": "1.6.0" + } + }, + "ethereum-testnet-sepolia-arbitrum-1": { + "offRamp": { + "address": "EQDPuQ0nydRXyQPWFr_d4w-tzfQMXwovke0TaIPLlCBdgAed", + "version": "1.6.0" + }, + "onRamp": { + "address": "EQDioi9PI32Wo1oBwkUp0pj1AhwvAHiKiZCfgrr0iDqu3lTA", + "enforceOutOfOrder": true, + "version": "1.6.0" + } + } + }, "treasure-testnet-topaz": { "ethereum-testnet-sepolia": { "offRamp": { diff --git a/src/config/data/ccip/v1_2_0/testnet/tokens.json b/src/config/data/ccip/v1_2_0/testnet/tokens.json index ae863450539..cfb6b2c8c3b 100644 --- a/src/config/data/ccip/v1_2_0/testnet/tokens.json +++ b/src/config/data/ccip/v1_2_0/testnet/tokens.json @@ -1424,6 +1424,16 @@ "tokenAddress": "0x20C0000000000000000000000000000000000003" } }, + "TON": { + "ton-testnet": { + "allowListEnabled": false, + "decimals": 9, + "name": "TON", + "poolType": "feeTokenOnly", + "symbol": "TON", + "tokenAddress": "EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd99" + } + }, "USDC": { "avalanche-fuji-testnet": { "allowListEnabled": false, diff --git a/src/config/data/chain-to-technology.json b/src/config/data/chain-to-technology.json index bb581dc6c52..b3176e7d451 100644 --- a/src/config/data/chain-to-technology.json +++ b/src/config/data/chain-to-technology.json @@ -174,5 +174,6 @@ "ADI_NETWORK_MAINNET": "ADI_NETWORK", "EDGE_MAINNET": "EDGE", "EDGE_TESTNET": "EDGE", - "ROBINHOOD_TESTNET": "ROBINHOOD_CHAIN" + "ROBINHOOD_TESTNET": "ROBINHOOD_CHAIN", + "TON_TESTNET": "TON" } diff --git a/src/config/data/chains.json b/src/config/data/chains.json index 5f78be6dd4f..42fa16fe06d 100644 --- a/src/config/data/chains.json +++ b/src/config/data/chains.json @@ -2781,5 +2781,24 @@ } } } + }, + "TON": { + "title": "TON", + "icon": "/assets/chains/ton.svg", + "chainType": "ton", + "chains": { + "TON_TESTNET": { + "chainId": -3, + "title": "TON Testnet", + "explorer": { + "baseUrl": "https://testnet.tonviewer.com" + }, + "nativeCurrency": { + "name": "TON", + "symbol": "TON", + "decimals": 9 + } + } + } } } diff --git a/src/config/types.ts b/src/config/types.ts index ee144fbd279..f067d950c27 100644 --- a/src/config/types.ts +++ b/src/config/types.ts @@ -267,6 +267,7 @@ export type SupportedChain = | "EDGE_MAINNET" | "EDGE_TESTNET" | "ROBINHOOD_TESTNET" + | "TON_TESTNET" export type ExplorerInfo = { baseUrl: string diff --git a/src/config/web3Providers.ts b/src/config/web3Providers.ts index dd3c80df575..38658c6ec3d 100644 --- a/src/config/web3Providers.ts +++ b/src/config/web3Providers.ts @@ -181,6 +181,7 @@ export const chainToProvider: Record Provider> = { EDGE_TESTNET: () => new JsonRpcProvider("https://edge-testnet.g.alchemy.com/public"), EDGE_MAINNET: () => new JsonRpcProvider("https://edge-mainnet.g.alchemy.com/public"), ROBINHOOD_TESTNET: () => new JsonRpcProvider("https://rpc.testnet.chain.robinhood.com"), + TON_TESTNET: () => new JsonRpcProvider("https://ton-testnet.api.onfinality.io/public"), } export const getRpcUrlForChain = (chain: SupportedChain): string => { diff --git a/src/features/utils/index.ts b/src/features/utils/index.ts index c8e97f85c52..cfd7d94347f 100644 --- a/src/features/utils/index.ts +++ b/src/features/utils/index.ts @@ -567,6 +567,8 @@ export const directoryToSupportedChain = (chainInRdd: string): SupportedChain => return "EDGE_MAINNET" case "robinhood-testnet": return "ROBINHOOD_TESTNET" + case "ton-testnet": + return "TON_TESTNET" default: throw Error(`Chain not found ${chainInRdd}`) } @@ -914,6 +916,8 @@ export const supportedChainToChainInRdd = (supportedChain: SupportedChain): stri return "edge-mainnet" case "ROBINHOOD_TESTNET": return "robinhood-testnet" + case "TON_TESTNET": + return "ton-testnet" default: throw Error(`Chain not found ${supportedChain}`) }