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}`)
}