From b8a26bab4fa70fbfda3399a0a13b097c0cdc4cd0 Mon Sep 17 00:00:00 2001 From: Michael Standen Date: Tue, 8 Oct 2024 10:43:36 +1300 Subject: [PATCH] Add base chain --- src/assets/chains/BASE.svg | 5 +++++ src/assets/chains/index.ts | 2 ++ src/components/Send/SendForm.tsx | 7 ++++++- src/constants/addresses.ts | 9 +++------ src/constants/chains.ts | 19 +++++++++++++++++++ 5 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 src/assets/chains/BASE.svg diff --git a/src/assets/chains/BASE.svg b/src/assets/chains/BASE.svg new file mode 100644 index 0000000..b9798a4 --- /dev/null +++ b/src/assets/chains/BASE.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/chains/index.ts b/src/assets/chains/index.ts index 2725b95..efdb0a6 100644 --- a/src/assets/chains/index.ts +++ b/src/assets/chains/index.ts @@ -1,9 +1,11 @@ import ARB from 'assets/chains/ARB.svg' import AVAX from 'assets/chains/AVAX.svg' +import BASE from 'assets/chains/BASE.svg' import ETH from 'assets/chains/ETH.svg' export const CHAIN_ICONS = { ETH, AVAX, ARB, + BASE, } diff --git a/src/components/Send/SendForm.tsx b/src/components/Send/SendForm.tsx index bd63aca..0d364b4 100644 --- a/src/components/Send/SendForm.tsx +++ b/src/components/Send/SendForm.tsx @@ -45,11 +45,16 @@ const CHAIN_SELECT_ITEMS: SelectItem[] = [ label: CHAIN_TO_CHAIN_NAME[Chain.ARB], icon: CHAIN_ICONS[Chain.ARB], }, + { + value: Chain.BASE, + label: CHAIN_TO_CHAIN_NAME[Chain.BASE], + icon: CHAIN_ICONS[Chain.BASE], + }, ] export const DEFAULT_FORM_INPUTS: TransactionInputs = { source: Chain.ETH, - target: Chain.AVAX, + target: Chain.BASE, address: '', amount: '', } diff --git a/src/constants/addresses.ts b/src/constants/addresses.ts index b21e76c..9adb552 100644 --- a/src/constants/addresses.ts +++ b/src/constants/addresses.ts @@ -5,10 +5,9 @@ import { SupportedChainId } from 'constants/chains' */ export const CHAIN_IDS_TO_USDC_ADDRESSES = { [SupportedChainId.ETH_SEPOLIA]: '0x1c7d4b196cb0c7b01d743fbc6116a902379c7238', - [SupportedChainId.AVAX_FUJI]: '0x5425890298aed601595a70AB815c96711a31Bc65', - [SupportedChainId.ARB_SEPOLIA]: '0x75faf114eafb1bdbe2f0316df893fd58ce46aa4d', + [SupportedChainId.BASE_SEPOLIA]: '0x036CbD53842c5426634e7929541eC2318f3dCF7e', } /** @@ -16,10 +15,9 @@ export const CHAIN_IDS_TO_USDC_ADDRESSES = { */ export const CHAIN_IDS_TO_TOKEN_MESSENGER_ADDRESSES = { [SupportedChainId.ETH_SEPOLIA]: '0x9f3b8679c73c2fef8b59b4f3444d4e156fb70aa5', - [SupportedChainId.AVAX_FUJI]: '0xeb08f243e5d3fcff26a9e38ae5520a669f4019d0', - [SupportedChainId.ARB_SEPOLIA]: '0x9f3b8679c73c2fef8b59b4f3444d4e156fb70aa5', + [SupportedChainId.BASE_SEPOLIA]: '0x9f3B8679c73C2Fef8b59B4f3444d4e156fb70AA5', } /** @@ -27,8 +25,7 @@ export const CHAIN_IDS_TO_TOKEN_MESSENGER_ADDRESSES = { */ export const CHAIN_IDS_TO_MESSAGE_TRANSMITTER_ADDRESSES = { [SupportedChainId.ETH_SEPOLIA]: '0x7865fafc2db2093669d92c0f33aeef291086befd', - [SupportedChainId.AVAX_FUJI]: '0xa9fb1b3009dcb79e2fe346c16a604b8fa8ae0a79', - [SupportedChainId.ARB_SEPOLIA]: '0xacf1ceef35caac005e15888ddb8a3515c41b4872', + [SupportedChainId.BASE_SEPOLIA]: '0x7865fAfC2db2093669d92c0F33AeEF291086BEFD', } diff --git a/src/constants/chains.ts b/src/constants/chains.ts index e19f028..c82fffe 100644 --- a/src/constants/chains.ts +++ b/src/constants/chains.ts @@ -5,6 +5,7 @@ export enum Chain { ETH = 'ETH', AVAX = 'AVAX', ARB = 'ARB', + BASE = 'BASE', } /** @@ -14,6 +15,7 @@ export enum SupportedChainId { ETH_SEPOLIA = 11155111, AVAX_FUJI = 43113, ARB_SEPOLIA = 421614, + BASE_SEPOLIA = 84532, } /** @@ -24,6 +26,7 @@ export const SupportedChainIdHex = { ETH_SEPOLIA: '0xaa36a7', AVAX_FUJI: '0xa869', ARB_SEPOLIA: '0x66eee', + BASE_SEPOLIA: '0x14a34', } interface ChainToChainIdMap { @@ -38,6 +41,7 @@ export const CHAIN_TO_CHAIN_ID: ChainToChainIdMap = { [Chain.ETH]: SupportedChainId.ETH_SEPOLIA, [Chain.AVAX]: SupportedChainId.AVAX_FUJI, [Chain.ARB]: SupportedChainId.ARB_SEPOLIA, + [Chain.BASE]: SupportedChainId.BASE_SEPOLIA, } interface ChainToChainNameMap { @@ -51,6 +55,7 @@ export const CHAIN_TO_CHAIN_NAME: ChainToChainNameMap = { ETH: 'Ethereum', AVAX: 'Avalanche', ARB: 'Arbitrum', + BASE: 'Base', } /** @@ -67,6 +72,7 @@ export enum DestinationDomain { ETH = 0, AVAX = 1, ARB = 3, + BASE = 6, } // https://eips.ethereum.org/EIPS/eip-3085 @@ -119,6 +125,18 @@ const ARB_SEPOLIA: AddEthereumChainParameter = { rpcUrls: ['https://arb-sepolia.g.alchemy.com/v2/demo'], } +const BASE_SEPOLIA: AddEthereumChainParameter = { + chainId: SupportedChainIdHex.BASE_SEPOLIA, + blockExplorerUrls: ['https://sepolia.basescan.org/'], + chainName: 'Base Sepolia Testnet', + nativeCurrency: { + name: 'Ethereum', + symbol: 'ETH', + decimals: 18, + }, + rpcUrls: ['https://sepolia.base.org'], +} + interface ChainIdToChainParameters { [key: string]: AddEthereumChainParameter } @@ -127,4 +145,5 @@ export const CHAIN_ID_HEXES_TO_PARAMETERS: ChainIdToChainParameters = { [SupportedChainIdHex.ETH_SEPOLIA]: ETH_SEPOLIA, [SupportedChainIdHex.AVAX_FUJI]: AVAX_FUJI, [SupportedChainIdHex.ARB_SEPOLIA]: ARB_SEPOLIA, + [SupportedChainIdHex.BASE_SEPOLIA]: BASE_SEPOLIA, }