From 0773077edd9842c37c83a978880c0a500fc0c9d1 Mon Sep 17 00:00:00 2001 From: Dewansh Date: Mon, 21 Oct 2024 15:19:16 +0530 Subject: [PATCH 1/6] feat: add ApeChain (#2005) --- .../public/images/ApeChainLogo.svg | 11 ++ .../public/images/ApeTokenLogo.svg | 144 ++++++++++++++++++ .../src/util/orbitChainsData.json | 50 ++++++ 3 files changed, 205 insertions(+) create mode 100644 packages/arb-token-bridge-ui/public/images/ApeChainLogo.svg create mode 100644 packages/arb-token-bridge-ui/public/images/ApeTokenLogo.svg diff --git a/packages/arb-token-bridge-ui/public/images/ApeChainLogo.svg b/packages/arb-token-bridge-ui/public/images/ApeChainLogo.svg new file mode 100644 index 0000000000..b5e6448444 --- /dev/null +++ b/packages/arb-token-bridge-ui/public/images/ApeChainLogo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/packages/arb-token-bridge-ui/public/images/ApeTokenLogo.svg b/packages/arb-token-bridge-ui/public/images/ApeTokenLogo.svg new file mode 100644 index 0000000000..fd9175bb9d --- /dev/null +++ b/packages/arb-token-bridge-ui/public/images/ApeTokenLogo.svg @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/arb-token-bridge-ui/src/util/orbitChainsData.json b/packages/arb-token-bridge-ui/src/util/orbitChainsData.json index 01673e0071..41f85475dd 100644 --- a/packages/arb-token-bridge-ui/src/util/orbitChainsData.json +++ b/packages/arb-token-bridge-ui/src/util/orbitChainsData.json @@ -491,6 +491,56 @@ "logoUrl": "/images/sxTokenLogo.png" } } + }, + { + "chainId": 33139, + "confirmPeriodBlocks": 45818, + "ethBridge": { + "bridge": "0x6B71AFb4b7725227ab944c96FE018AB9dc0434b8", + "inbox": "0x1B98e4ED82Ee1a91A65a38C690e2266364064D15", + "outbox": "0x4F405BA65291063d8A524c2bDf55d4e67405c2aF", + "rollup": "0x374de579AE15aD59eD0519aeAf1A23F348Df259c", + "sequencerInbox": "0xE6a92Ae29E24C343eE66A2B3D3ECB783d65E4a3C" + }, + "explorerUrl": "https://apescan.io", + "nativeToken": "0x7f9FBf9bDd3F4105C478b996B648FE6e828a1e98", + "rpcUrl": "https://apechain.calderachain.xyz/http", + "isCustom": true, + "isTestnet": false, + "name": "ApeChain", + "slug": "apechain", + "parentChainId": 42161, + "retryableLifetimeSeconds": 604800, + "tokenBridge": { + "parentCustomGateway": "0xEd543dA6fE33cceE50DC024b78C27959235D0ab0", + "parentErc20Gateway": "0xB603a1C07A11945bFe4855347c88583e31b8ddB0", + "parentGatewayRouter": "0xD57Df5C2Dc2D60307a74944191f2aA5B7BD4a700", + "parentMultiCall": "0x411f8A148e448bBe75382d4FFABee0796484f3c6", + "parentProxyAdmin": "0x1E5f8ff72895aEa53DD62b590dA51E92dC75b507", + "parentWeth": "0x0000000000000000000000000000000000000000", + "parentWethGateway": "0x0000000000000000000000000000000000000000", + "childCustomGateway": "0x49607221AF038229cEc6c85DB37a652E00226D29", + "childErc20Gateway": "0xf9710169D2f3524E7Bf068F6DDF6b2cc65D38a14", + "childGatewayRouter": "0x31eFB847d3f7A0C9Ba1364a6423aEa0a7a60BF3C", + "childMultiCall": "0x350186513FB2C148A50439311533656EF8096D9C", + "childProxyAdmin": "0x965a8220D41A031b1F71d94feFBf13dE4f686B33", + "childWeth": "0x0000000000000000000000000000000000000000", + "childWethGateway": "0x0000000000000000000000000000000000000000" + }, + "bridgeUiConfig": { + "color": "#0054FA", + "network": { + "name": "ApeChain", + "logo": "/images/ApeChainLogo.svg", + "description": "ApeChain is a dedicated infrastructure layer to power the ApeCoin ecosystem." + }, + "nativeTokenData": { + "name": "ApeCoin", + "symbol": "APE", + "decimals": 18, + "logoUrl": "/images/ApeTokenLogo.svg" + } + } } ], "testnet": [ From fe476ba351dfae3598220cb256f6b415c1d9a0e5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 12:12:20 +0200 Subject: [PATCH 2/6] feat: add Orbit chain - Gravity Alpha (#2007) --- .../public/images/GravityAlpha_Logo.png | Bin 0 -> 71684 bytes .../images/GravityAlpha_NativeTokenLogo.png | Bin 0 -> 71684 bytes .../src/util/orbitChainsData.json | 53 +++++++++++++++++- 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 packages/arb-token-bridge-ui/public/images/GravityAlpha_Logo.png create mode 100644 packages/arb-token-bridge-ui/public/images/GravityAlpha_NativeTokenLogo.png diff --git a/packages/arb-token-bridge-ui/public/images/GravityAlpha_Logo.png b/packages/arb-token-bridge-ui/public/images/GravityAlpha_Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..891aec402369e2d4e472ee7a7187f70ac09f8e8e GIT binary patch literal 71684 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 literal 0 HcmV?d00001 diff --git a/packages/arb-token-bridge-ui/public/images/GravityAlpha_NativeTokenLogo.png b/packages/arb-token-bridge-ui/public/images/GravityAlpha_NativeTokenLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..891aec402369e2d4e472ee7a7187f70ac09f8e8e GIT binary patch literal 71684 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 literal 0 HcmV?d00001 diff --git a/packages/arb-token-bridge-ui/src/util/orbitChainsData.json b/packages/arb-token-bridge-ui/src/util/orbitChainsData.json index 41f85475dd..c2ca6cc29b 100644 --- a/packages/arb-token-bridge-ui/src/util/orbitChainsData.json +++ b/packages/arb-token-bridge-ui/src/util/orbitChainsData.json @@ -541,6 +541,57 @@ "logoUrl": "/images/ApeTokenLogo.svg" } } + }, + { + "chainId": 1625, + "confirmPeriodBlocks": 40320, + "ethBridge": { + "bridge": "0x7983403dDA368AA7d67145a9b81c5c517F364c42", + "inbox": "0x7AD2a94BefF3294a31894cFb5ba4206957a53c19", + "outbox": "0x1153a1e4B1523DFf36f77d696bd6eBF2B0e7DAbF", + "rollup": "0xf993AF239770932A0EDaB88B6A5ba3708Bd58239", + "sequencerInbox": "0x8D99372612e8cFE7163B1a453831Bc40eAeb3cF3" + }, + "nativeToken": "0x9C7BEBa8F6eF6643aBd725e45a4E8387eF260649", + "explorerUrl": "https://explorer.gravity.xyz", + "rpcUrl": "https://rpc.gravity.xyz", + "isArbitrum": true, + "isCustom": true, + "isTestnet": false, + "name": "Gravity Alpha", + "slug": "gravity-alpha", + "parentChainId": 1, + "retryableLifetimeSeconds": 604800, + "tokenBridge": { + "parentCustomGateway": "0xa26Fd1c23634870303e42311E114D5cc8301Ed1E", + "parentErc20Gateway": "0xb23988D9728EF147EAa02D602D7e067B6131A1bB", + "parentGatewayRouter": "0x8713569d016f981D956715e9EE2795382168b5c0", + "parentMultiCall": "0x7cdCB0Cc61f47B8Dd8f47C5A29edaDd84a1BDf5e", + "parentProxyAdmin": "0xBbc3872E30C91ef69336937838c2a283F79f7E68", + "parentWeth": "0x0000000000000000000000000000000000000000", + "parentWethGateway": "0x0000000000000000000000000000000000000000", + "childCustomGateway": "0xC18EADE2B2CdA6AcFAc4fd2226C724a1008b02Ab", + "childErc20Gateway": "0xD330E617270F375Bd476896f3A8AE9041264E13d", + "childGatewayRouter": "0xf1cA401FB474520EbaBb285670891dEbd7C505Bc", + "childMultiCall": "0xABF31e3A13528082cE5bb05D6E88749556DAFD5F", + "childProxyAdmin": "0xB881cf085a78491AaA71Bf22bc87E67865a4409a", + "childWeth": "0x0000000000000000000000000000000000000000", + "childWethGateway": "0x0000000000000000000000000000000000000000" + }, + "bridgeUiConfig": { + "color": "#FFAC43", + "network": { + "name": "Gravity Alpha", + "logo": "/images/GravityAlpha_Logo.png", + "description": "The Magnet Chain for Web3." + }, + "nativeTokenData": { + "name": "G", + "symbol": "G", + "decimals": 18, + "logoUrl": "/images/GravityAlpha_NativeTokenLogo.png" + } + } } ], "testnet": [ @@ -831,4 +882,4 @@ } } ] -} +} \ No newline at end of file From de9ea32a37b691e42e237c8d4e2b78fc221c5061 Mon Sep 17 00:00:00 2001 From: Fionna Chan <13184582+fionnachan@users.noreply.github.com> Date: Mon, 21 Oct 2024 18:52:24 +0800 Subject: [PATCH 3/6] feat: set G3 token to withdraw only (#2006) --- packages/arb-token-bridge-ui/src/util/WithdrawOnlyUtils.ts | 6 ++++++ packages/arb-token-bridge-ui/src/util/orbitChainsData.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/arb-token-bridge-ui/src/util/WithdrawOnlyUtils.ts b/packages/arb-token-bridge-ui/src/util/WithdrawOnlyUtils.ts index cf9f7d8aca..f08da0b4df 100644 --- a/packages/arb-token-bridge-ui/src/util/WithdrawOnlyUtils.ts +++ b/packages/arb-token-bridge-ui/src/util/WithdrawOnlyUtils.ts @@ -205,6 +205,12 @@ export const withdrawOnlyTokens: { [chainId: number]: WithdrawOnlyToken[] } = { l2CustomAddr: '0x6985884c4392d348587b19cb9eaaf157f13271cd', l1Address: '0x6985884c4392d348587b19cb9eaaf157f13271cd', l2Address: '0xd99f14023f6bde3142d339b6c069b2b711da7e37' + }, + { + symbol: 'G3', + l2CustomAddr: '0xc24A365A870821EB83Fd216c9596eDD89479d8d7', + l1Address: '0xCF67815ccE72E682Eb4429eCa46843bed81Ca739', + l2Address: '0x34fb4148fdc1ab3054ac85d32de887c58538bb57' } ], [ChainId.ArbitrumNova]: [] diff --git a/packages/arb-token-bridge-ui/src/util/orbitChainsData.json b/packages/arb-token-bridge-ui/src/util/orbitChainsData.json index c2ca6cc29b..baad064429 100644 --- a/packages/arb-token-bridge-ui/src/util/orbitChainsData.json +++ b/packages/arb-token-bridge-ui/src/util/orbitChainsData.json @@ -882,4 +882,4 @@ } } ] -} \ No newline at end of file +} From c0d5634ed205f30029b5d7c4e298f80d4b75c20e Mon Sep 17 00:00:00 2001 From: Fionna Chan <13184582+fionnachan@users.noreply.github.com> Date: Mon, 21 Oct 2024 19:19:16 +0800 Subject: [PATCH 4/6] refactor: tighten isOrbitChain check (#2004) --- packages/arb-token-bridge-ui/src/util/networks.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/arb-token-bridge-ui/src/util/networks.ts b/packages/arb-token-bridge-ui/src/util/networks.ts index e6b22e9a83..06fe5ca182 100644 --- a/packages/arb-token-bridge-ui/src/util/networks.ts +++ b/packages/arb-token-bridge-ui/src/util/networks.ts @@ -385,6 +385,14 @@ function isTestnetChain(chainId: ChainId) { } } +function getIsArbitrumChain(chainId: ChainId) { + try { + return !!getArbitrumNetwork(chainId).parentChainId + } catch (error) { + return false + } +} + export function isNetwork(chainId: ChainId) { const isEthereumMainnet = chainId === ChainId.Ethereum @@ -404,7 +412,7 @@ export function isNetwork(chainId: ChainId) { isArbitrumOne || isArbitrumNova || isArbitrumLocal || isArbitrumSepolia const isCoreChain = isEthereumMainnetOrTestnet || isArbitrum - const isOrbitChain = !isCoreChain + const isOrbitChain = getIsArbitrumChain(chainId) && !isCoreChain return { // L1 From 7fba8947be984993c47df9e73ab381ebec3b2b7e Mon Sep 17 00:00:00 2001 From: Bartek Date: Mon, 21 Oct 2024 15:22:22 +0200 Subject: [PATCH 5/6] chore: update issue forms (#2008) --- .github/ISSUE_TEMPLATE/add-layerleap-request.yml | 2 +- .github/ISSUE_TEMPLATE/add-orbit-chain-request.yml | 10 +--------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/add-layerleap-request.yml b/.github/ISSUE_TEMPLATE/add-layerleap-request.yml index 2889fea0b3..798b9fc7a9 100644 --- a/.github/ISSUE_TEMPLATE/add-layerleap-request.yml +++ b/.github/ISSUE_TEMPLATE/add-layerleap-request.yml @@ -1,7 +1,7 @@ name: Add Layer Leap Request description: File a request to have your Orbit chain support Layer Leap transfers title: "[feat]: enable Layer Leap for " -labels: ["feat", "triage"] +labels: ["Type: Add LayerLeap"] body: - type: markdown attributes: diff --git a/.github/ISSUE_TEMPLATE/add-orbit-chain-request.yml b/.github/ISSUE_TEMPLATE/add-orbit-chain-request.yml index 49bf3dd574..32a6398dce 100644 --- a/.github/ISSUE_TEMPLATE/add-orbit-chain-request.yml +++ b/.github/ISSUE_TEMPLATE/add-orbit-chain-request.yml @@ -1,7 +1,7 @@ name: Add Orbit Chain Request description: File a request to have your Orbit chain added to the bridge title: "[feat]: Add Orbit chain " -labels: ["feat", "triage"] +labels: ["Type: Add Orbit Chain"] body: - type: markdown attributes: @@ -172,10 +172,6 @@ body: attributes: value: | ## Parent chain token bridge contract addresses - - type: markdown - attributes: - value: | - You can find this information under the `"l2Contracts" : {...}` key. - type: input id: parent-custom-gateway attributes: @@ -224,10 +220,6 @@ body: attributes: value: | ## Orbit chain token bridge contract addresses - - type: markdown - attributes: - value: | - You can find this information under the `"l3Contracts" : {...}` key. - type: input id: child-custom-gateway attributes: From 7251f61f7d4ea4f0b0c0d4f7227fe4bb8c44bc5f Mon Sep 17 00:00:00 2001 From: Fionna Chan <13184582+fionnachan@users.noreply.github.com> Date: Mon, 21 Oct 2024 23:48:33 +0800 Subject: [PATCH 6/6] feat: support Base and Base Sepolia as parent chains (#1996) --- .../arb-token-bridge-ui/.env.local.sample | 2 + .../public/images/BaseWhite.svg | 3 + .../public/images/PolterTestnetLogo.png | Bin 0 -> 15086 bytes .../public/images/ghst.png | Bin 0 -> 1548 bytes .../common/NetworkSelectionContainer.tsx | 37 ++++++- .../src/hooks/useNetworks.ts | 6 +- .../src/token-bridge-sdk/utils.ts | 13 ++- .../src/types/ChainQueryParam.ts | 14 +++ .../src/util/__tests__/networks.test.ts | 25 +++++ .../src/util/bridgeUiConfig.ts | 19 ++++ .../arb-token-bridge-ui/src/util/infura.ts | 8 ++ .../src/util/isDepositMode.ts | 7 +- .../arb-token-bridge-ui/src/util/networks.ts | 100 ++++++++++++++---- .../src/util/orbitChainsData.json | 50 +++++++++ .../src/util/wagmi/getWagmiChain.ts | 10 +- .../src/util/wagmi/setup.ts | 47 ++++---- .../src/util/wagmi/wagmiAdditionalNetworks.ts | 41 +++++++ 17 files changed, 327 insertions(+), 55 deletions(-) create mode 100644 packages/arb-token-bridge-ui/public/images/BaseWhite.svg create mode 100644 packages/arb-token-bridge-ui/public/images/PolterTestnetLogo.png create mode 100644 packages/arb-token-bridge-ui/public/images/ghst.png diff --git a/packages/arb-token-bridge-ui/.env.local.sample b/packages/arb-token-bridge-ui/.env.local.sample index 9ccb08c10a..9e0d6cfb67 100644 --- a/packages/arb-token-bridge-ui/.env.local.sample +++ b/packages/arb-token-bridge-ui/.env.local.sample @@ -8,8 +8,10 @@ NEXT_PUBLIC_INFURA_KEY_SEPOLIA= # L2 NEXT_PUBLIC_INFURA_KEY_ARBITRUM_ONE= +NEXT_PUBLIC_INFURA_KEY_BASE= # L2 Testnet NEXT_PUBLIC_INFURA_KEY_ARBITRUM_SEPOLIA= +NEXT_PUBLIC_INFURA_KEY_BASE_SEPOLIA= NEXT_PUBLIC_SENTRY_DSN= diff --git a/packages/arb-token-bridge-ui/public/images/BaseWhite.svg b/packages/arb-token-bridge-ui/public/images/BaseWhite.svg new file mode 100644 index 0000000000..72e52ac2f8 --- /dev/null +++ b/packages/arb-token-bridge-ui/public/images/BaseWhite.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/arb-token-bridge-ui/public/images/PolterTestnetLogo.png b/packages/arb-token-bridge-ui/public/images/PolterTestnetLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..70ee5c61fb6933d164c6c5432178686fb49a90c4 GIT binary patch literal 15086 zcmeHNNoW*76s<9?7mcE(YD`QJg}8tLMTp=Af?h-r6~P6!g9kxDM8repq=E-g^dKHY zMQ{O8au5|!yeN2b!Gov_BA();dSWzc%=cCI^f)s;J-sI;)WDxVT~)vS>))@I{!@&l zSRHF?W6&+^`W(iVF!t}dp0ST8v+MVbX6!f`w5m3coe*WGKCKf>RrW=OAT2rungf~x zngf~xBbWnO+}nr1B6;6`5tF=_TDEZeya4tW8h;GqTE~BA_lY|G!!!O}Qznv}IXSrS zyRpt&A^GETnsqb-_FEc%$-JxM@8C$S0?nTi?x-Av=1(oUIO>L)KSZpKq*w#FLXt0b z0Q4vrD*V*bFrN&561cw<=kL5&<^k7HJ(&2ZyP*X!J_gKhi4g;M;1zsF>xcT;Ziq^h8N7Gms-Mqfs(_zivyvF>*CDa9+q>Ii*JH~EC; z*$jMKbtvXcd!v2-KrFw2pK>N62F z7c^PAjz|{#**aUeep1jGOAjaoTv=1c{H4xmwLn%vis!Vdyd4hWK1+|=VK8nrAME#3 z{t2}w&U_f@UEuPgV$MbKr=I?$I2xA!$W4tg zbL)n08Ah zl7B0g%6|^Fe?03&kj@Bx3q0|?|FZUIR=)dVbiV<48kE<%eXw~z$1Blz)tW_9NV${? zWl~fj{T-Q97Q#9*NQq>S&%mabU^f8ihnQIqS2rq8Q4eW>6!R1*TvU8U*0|;;%)Nu! zKiFc39{=~qw^f8k?eTMw?DJwh_8OZ?Gq`UK{K2M<7=_rT!m~c#ehBA z(i;8|e|{P^Z_wr(+P0V4s^26VHoMzn|7o4K7*lCyU!(uK?)J6g2fG9AwrYK?VhtAF}0WN0&h literal 0 HcmV?d00001 diff --git a/packages/arb-token-bridge-ui/public/images/ghst.png b/packages/arb-token-bridge-ui/public/images/ghst.png new file mode 100644 index 0000000000000000000000000000000000000000..b571b7eef9e2bfa9b7322247afd384f4a50a2360 GIT binary patch literal 1548 zcmV+n2J`ueP)jUm)3i-t#<5ve__Elx-3y z(21xB6oK~Xc#N`U|ZE)n4Cm!$A7=hGen@DiHA=kB;-3UsI#ZablwJjb>xRt2N6 zT^MF3!3;c?=fbC9^?$q4P)blHp3@WIuwWDimLimm=XF&ZyI}uDRT@ef%*b=QqV=kD z7=bb&%=0_azg6j31j>wA-ouvGcBjJ#lqt@h39Gwd|0*t2-q<`RtUR0!B2Xd7y*u2( z_tXd)D+%hvd*;;=8Y&UqGp81O=}`nKl;W4ofBRBU$?(2enyZ11JGfINLmhckV^By7Ppc-6AbKOtch{9pr(wR)yuTHAZ(V;X;QI?Vy2<<#8qZx&ncl61+{JT= z&n*UZ<^7dgxWP^AYHnZBSR<9RzK*6o@L7TPS7!Vva0{op;a6>~wSITglqDZo<){6r z00M5{mc)9oRh4fls42f@%9Mu(|7e}U2i#!gv%)7k8TI)t8|%vG(lZmLT=_5#z#la! zaLUSnd*w-Yt}no3ONI5$09Ui>mRxEfbbOsyDO8mNfiM*LPofgzpHIQZH6gfCZ+#}6G|5Xo zg6GeN@-yBPW9sEN#N*aKo!J!?$Sgs#t!Qm+P4`WQXAPfKl&g4Sh3g0I5AjN(d>0lV zXr>j3^1|C&J7&sW2<69yBv|E(x*7PeHpDYHmMGBs=oNkaP{S4^wc=NRndQkx@XW2^1{nA$zU9S3r!k0 z#i~U4Lv=$sXPe~8fBoXP;pG`*F%H1_rexqeK46y%ZN&?aMEQ3yJn@}m`Ajd*AWt&; zyNBoSK_@JRw)BAcBnrHP;fXU?o_sgE@B8RKIk}WsUU>OzJ7kq7oo&{@DI>4W!Q1ub zbAl*vH z1v*Z*Xy69ngZH1lZ!`?)47Nl~`{ZKexpmz)_|mxH<@-2+I`ZCG`U-b)i|(cwcpVFz z!t#7uAx=JZSN9Qon^SmSlY%XYQ3Tv#uthaJW`*O;5z}KXQ2YxLq`_7UUV-qQdG);l z)u+%S~V% yx-hUS;97kBveV(cYUh!?s)|4nRN9yOz0&{0p7!99EAIgS0000 + + + Independent projects using non-Arbitrum technology. These chains have + varying degrees of decentralization.{' '} + Bridge at your own risk. + +

+ ) + }, orbit: { name: ChainGroupName.orbit, description: ( @@ -71,7 +85,7 @@ function ChainTypeInfoRow({ style: CSSProperties }) { const { name, description } = chainGroup - const isCoreGroup = chainGroup.name === ChainGroupName.core + const isOrbitGroup = chainGroup.name === ChainGroupName.orbit return (
@@ -236,7 +250,11 @@ function NetworksPanel({ } const coreNetworks = chainIds.filter( - chainId => !isNetwork(chainId).isOrbitChain + chainId => isNetwork(chainId).isCoreChain + ) + const otherNetworks = chainIds.filter( + chainId => + !isNetwork(chainId).isCoreChain && !isNetwork(chainId).isOrbitChain ) const orbitNetworks = chainIds.filter( chainId => isNetwork(chainId).isOrbitChain @@ -244,6 +262,7 @@ function NetworksPanel({ return { core: coreNetworks, + other: otherNetworks, orbit: orbitNetworks } }, [debouncedNetworkSearched, chainIds]) @@ -262,6 +281,10 @@ function NetworksPanel({ groupedNetworks.push(ChainGroupName.core, ...networksToShow.core) } + if (networksToShow.other.length > 0) { + groupedNetworks.push(ChainGroupName.other, ...networksToShow.other) + } + if (networksToShow.orbit.length > 0) { groupedNetworks.push(ChainGroupName.orbit, ...networksToShow.orbit) } @@ -302,6 +325,12 @@ function NetworksPanel({ ) } + if (networkOrChainTypeName === ChainGroupName.other) { + return ( + + ) + } + if (networkOrChainTypeName === ChainGroupName.orbit) { return ( diff --git a/packages/arb-token-bridge-ui/src/hooks/useNetworks.ts b/packages/arb-token-bridge-ui/src/hooks/useNetworks.ts index 0e0df4907d..b141f2d144 100644 --- a/packages/arb-token-bridge-ui/src/hooks/useNetworks.ts +++ b/packages/arb-token-bridge-ui/src/hooks/useNetworks.ts @@ -12,7 +12,9 @@ import { arbitrumSepolia, localL1Network as local, localL2Network as arbitrumLocal, - localL3Network as l3Local + localL3Network as l3Local, + base, + baseSepolia } from '../util/wagmi/wagmiAdditionalNetworks' import { getDestinationChainIds } from '../util/networks' @@ -37,7 +39,9 @@ export function isSupportedChainId( holesky.id, arbitrum.id, arbitrumNova.id, + base.id, arbitrumSepolia.id, + baseSepolia.id, arbitrumLocal.id, l3Local.id, local.id, diff --git a/packages/arb-token-bridge-ui/src/token-bridge-sdk/utils.ts b/packages/arb-token-bridge-ui/src/token-bridge-sdk/utils.ts index 7dbf694b29..54e7483bbf 100644 --- a/packages/arb-token-bridge-ui/src/token-bridge-sdk/utils.ts +++ b/packages/arb-token-bridge-ui/src/token-bridge-sdk/utils.ts @@ -11,6 +11,7 @@ import { EthL1L3Bridger, getArbitrumNetwork } from '@arbitrum/sdk' +import { isDepositMode } from '../util/isDepositMode' export const getAddressFromSigner = async (signer: Signer) => { const address = await signer.getAddress() @@ -28,8 +29,6 @@ export const getBridgeTransferProperties = ( const sourceChainId = props.sourceChainId const destinationChainId = props.destinationChainId - const isSourceChainEthereumMainnetOrTestnet = - isNetwork(sourceChainId).isEthereumMainnetOrTestnet const isDestinationChainEthereumMainnetOrTestnet = isNetwork(destinationChainId).isEthereumMainnetOrTestnet @@ -37,16 +36,16 @@ export const getBridgeTransferProperties = ( const isDestinationChainArbitrum = isNetwork(destinationChainId).isArbitrum const isSourceChainOrbit = isNetwork(sourceChainId).isOrbitChain - const isDestinationChainOrbit = isNetwork(destinationChainId).isOrbitChain - const isDeposit = - isSourceChainEthereumMainnetOrTestnet || - (isSourceChainArbitrum && isDestinationChainOrbit) + const { isBase: isDestinationChainBase } = isNetwork(destinationChainId) + + const isDeposit = isDepositMode({ sourceChainId, destinationChainId }) const isWithdrawal = (isSourceChainArbitrum && isDestinationChainEthereumMainnetOrTestnet) || // l2 arbitrum chains to l1 (isSourceChainOrbit && isDestinationChainEthereumMainnetOrTestnet) || // l2 orbit chains to l1 - (isSourceChainOrbit && isDestinationChainArbitrum) // l3 orbit chains to l1 + (isSourceChainOrbit && isDestinationChainArbitrum) || // l3 orbit chains to l1 + (isSourceChainOrbit && isDestinationChainBase) // l3 orbit chain to Base l2 const isTeleport = isValidTeleportChainPair({ sourceChainId, diff --git a/packages/arb-token-bridge-ui/src/types/ChainQueryParam.ts b/packages/arb-token-bridge-ui/src/types/ChainQueryParam.ts index 99b20e8463..77abdf0b20 100644 --- a/packages/arb-token-bridge-ui/src/types/ChainQueryParam.ts +++ b/packages/arb-token-bridge-ui/src/types/ChainQueryParam.ts @@ -16,7 +16,9 @@ const chainQueryParams = [ 'holesky', 'arbitrum-one', 'arbitrum-nova', + 'base', 'arbitrum-sepolia', + 'base-sepolia', 'custom-localhost', 'arbitrum-localhost', 'l3-localhost' @@ -51,6 +53,9 @@ export function getChainQueryParamForChain(chainId: ChainId): ChainQueryParam { case ChainId.ArbitrumNova: return 'arbitrum-nova' + case ChainId.Base: + return 'base' + case ChainId.Holesky: return 'holesky' @@ -60,6 +65,9 @@ export function getChainQueryParamForChain(chainId: ChainId): ChainQueryParam { case ChainId.ArbitrumSepolia: return 'arbitrum-sepolia' + case ChainId.BaseSepolia: + return 'base-sepolia' + case ChainId.Local: return 'custom-localhost' @@ -107,9 +115,15 @@ export function getChainForChainKeyQueryParam( case 'arbitrum-nova': return customChains.arbitrumNova + case 'base': + return customChains.base + case 'arbitrum-sepolia': return customChains.arbitrumSepolia + case 'base-sepolia': + return customChains.baseSepolia + case 'custom-localhost': return customChains.localL1Network diff --git a/packages/arb-token-bridge-ui/src/util/__tests__/networks.test.ts b/packages/arb-token-bridge-ui/src/util/__tests__/networks.test.ts index 554663bf91..2dbeb6f3cb 100644 --- a/packages/arb-token-bridge-ui/src/util/__tests__/networks.test.ts +++ b/packages/arb-token-bridge-ui/src/util/__tests__/networks.test.ts @@ -52,6 +52,15 @@ beforeAll(() => { }) registerCustomArbitrumNetwork(xaiTestnet) + + const polterTestnetChainId = 631571 + const polterTestnet = orbitTestnets[polterTestnetChainId] + + if (!polterTestnet) { + throw new Error(`Could not find Polter Testnet in the Orbit chains list.`) + } + + registerCustomArbitrumNetwork(polterTestnet) }) describe('getBaseChainIdByChainId', () => { @@ -254,4 +263,20 @@ describe('getDestinationChainIds', () => { expect(defaultChainId).toBe(ChainId.Sepolia) expect(isAscending(nonDefaultChainIds)).toBe(true) }) + + it('should return a sorted list for Base Sepolia', () => { + const destinationChainIds = getDestinationChainIds(ChainId.BaseSepolia) + const defaultChainId = destinationChainIds[0] + const nonDefaultChainIds = destinationChainIds.slice(1) + + expect(defaultChainId).toBe(631571) + expect(isAscending(nonDefaultChainIds)).toBe(true) + }) + + // Enable when there are Orbit Chains on Base + it('should not return a list for Base', () => { + const destinationChainIds = getDestinationChainIds(ChainId.Base) + + expect(destinationChainIds).toHaveLength(0) + }) }) diff --git a/packages/arb-token-bridge-ui/src/util/bridgeUiConfig.ts b/packages/arb-token-bridge-ui/src/util/bridgeUiConfig.ts index d68e0a1719..d7d4461918 100644 --- a/packages/arb-token-bridge-ui/src/util/bridgeUiConfig.ts +++ b/packages/arb-token-bridge-ui/src/util/bridgeUiConfig.ts @@ -104,6 +104,25 @@ export function getBridgeUiConfigForChain(chainId: number): BridgeUiConfig { 'AnyTrust protocol. Low fees for high-volume transactions. Secured by a trust-minimized Data Availability Committee (DAC).' } } + case ChainId.Base: + return { + color: '#0052ff', + network: { + name: 'Base', + logo: '/images/BaseWhite.svg', + description: + 'Base is an Optimistic Rollup built by Coinbase with the OP Stack.' + } + } + case ChainId.BaseSepolia: + return { + color: '#0052ff', + network: { + name: 'Base Sepolia', + logo: '/images/BaseWhite.svg', + description: 'Base Sepolia is an Ethereum L2 testnet by Coinbase.' + } + } default: { // added Orbit chains const orbitChain = orbitChains[chainId] diff --git a/packages/arb-token-bridge-ui/src/util/infura.ts b/packages/arb-token-bridge-ui/src/util/infura.ts index 02124bb907..20fa95514d 100644 --- a/packages/arb-token-bridge-ui/src/util/infura.ts +++ b/packages/arb-token-bridge-ui/src/util/infura.ts @@ -61,10 +61,14 @@ export function chainIdToInfuraKey(chainId: ChainId) { return process.env.NEXT_PUBLIC_INFURA_KEY_SEPOLIA || defaultInfuraKey case ChainId.ArbitrumOne: return process.env.NEXT_PUBLIC_INFURA_KEY_ARBITRUM_ONE || defaultInfuraKey + case ChainId.Base: + return process.env.NEXT_PUBLIC_INFURA_KEY_BASE || defaultInfuraKey case ChainId.ArbitrumSepolia: return ( process.env.NEXT_PUBLIC_INFURA_KEY_ARBITRUM_SEPOLIA || defaultInfuraKey ) + case ChainId.BaseSepolia: + return process.env.NEXT_PUBLIC_INFURA_KEY_BASE_SEPOLIA || defaultInfuraKey default: return defaultInfuraKey @@ -81,8 +85,12 @@ export function chainIdToInfuraUrl(chainId: ChainId) { return `https://sepolia.infura.io/v3/${infuraKey}` case ChainId.ArbitrumOne: return `https://arbitrum-mainnet.infura.io/v3/${infuraKey}` + case ChainId.Base: + return `https://base-mainnet.infura.io/v3/${infuraKey}` case ChainId.ArbitrumSepolia: return `https://arbitrum-sepolia.infura.io/v3/${infuraKey}` + case ChainId.BaseSepolia: + return `https://base-sepolia.infura.io/v3/${infuraKey}` default: return undefined } diff --git a/packages/arb-token-bridge-ui/src/util/isDepositMode.ts b/packages/arb-token-bridge-ui/src/util/isDepositMode.ts index 86f49391ed..dd22cceb7c 100644 --- a/packages/arb-token-bridge-ui/src/util/isDepositMode.ts +++ b/packages/arb-token-bridge-ui/src/util/isDepositMode.ts @@ -9,13 +9,16 @@ export function isDepositMode({ }) { const { isEthereumMainnetOrTestnet: isSourceChainEthereum, - isArbitrum: isSourceChainArbitrum + isArbitrum: isSourceChainArbitrum, + isBase: isSourceChainBase } = isNetwork(sourceChainId) const { isOrbitChain: isDestinationChainOrbit } = isNetwork(destinationChainId) const isDepositMode = - isSourceChainEthereum || (isSourceChainArbitrum && isDestinationChainOrbit) + isSourceChainEthereum || + isSourceChainBase || + (isSourceChainArbitrum && isDestinationChainOrbit) return isDepositMode } diff --git a/packages/arb-token-bridge-ui/src/util/networks.ts b/packages/arb-token-bridge-ui/src/util/networks.ts index 06fe5ca182..5dc8e5627c 100644 --- a/packages/arb-token-bridge-ui/src/util/networks.ts +++ b/packages/arb-token-bridge-ui/src/util/networks.ts @@ -20,20 +20,23 @@ export enum ChainId { // L2 ArbitrumOne = 42161, ArbitrumNova = 42170, + Base = 8453, // L2 Testnets ArbitrumSepolia = 421614, ArbitrumLocal = 412346, + BaseSepolia = 84532, // L3 Testnets L3Local = 333333 } -type L1Network = { +/** The network that you reference when calling `block.number` in solidity */ +type BlockNumberReferenceNetwork = { chainId: ChainId blockTime: number isTestnet: boolean } -const l1Networks: { [chainId: number]: L1Network } = { +const l1Networks: { [chainId: number]: BlockNumberReferenceNetwork } = { [ChainId.Ethereum]: { chainId: ChainId.Ethereum, blockTime: 12, @@ -56,12 +59,32 @@ const l1Networks: { [chainId: number]: L1Network } = { } } +const baseNetworks: { [chainId: number]: BlockNumberReferenceNetwork } = { + [ChainId.Base]: { + chainId: ChainId.Base, + blockTime: 2, + isTestnet: false + }, + [ChainId.BaseSepolia]: { + chainId: ChainId.BaseSepolia, + blockTime: 2, + isTestnet: true + } +} + export const getChains = () => { - const chains = [...Object.values(l1Networks), ...getArbitrumNetworks()] + const chains: (BlockNumberReferenceNetwork | ArbitrumNetwork)[] = [ + ...Object.values(l1Networks), + ...Object.values(baseNetworks), + ...getArbitrumNetworks() + ] return chains.filter(chain => { - // exclude L1 chains with no child chains - if (isL1Chain(chain) && getChildrenForNetwork(chain.chainId).length === 0) { + // exclude L1 chains or Base Chains with no child chains + if ( + isBlockNumberReferenceNetwork(chain) && + getChildrenForNetwork(chain.chainId).length === 0 + ) { return false } @@ -86,12 +109,12 @@ export function getBaseChainIdByChainId({ }: { chainId: number }): number { - // the chain provided is an L1 chain, so we can return early - if (isL1Chain({ chainId })) { + // the chain provided is an L1 chain or Base chain, so we can return early + if (isBlockNumberReferenceNetwork({ chainId })) { return chainId } - let currentParentChain: L1Network | ArbitrumNetwork + let currentParentChain: BlockNumberReferenceNetwork | ArbitrumNetwork try { currentParentChain = getArbitrumNetwork(chainId) @@ -99,9 +122,9 @@ export function getBaseChainIdByChainId({ return chainId } - // keep following the parent chains until we find the L1 chain + // keep following the parent chains until we find the L1/Base chain while (true) { - if (isL1Chain(currentParentChain)) { + if (isBlockNumberReferenceNetwork(currentParentChain)) { return currentParentChain.chainId } @@ -184,10 +207,12 @@ export function removeCustomChainFromLocalStorage(chainId: number) { ) } +// Only support testnet chains export const supportedCustomOrbitParentChains = [ ChainId.Sepolia, ChainId.Holesky, - ChainId.ArbitrumSepolia + ChainId.ArbitrumSepolia, + ChainId.BaseSepolia ] export const rpcURLs: { [chainId: number]: string } = { @@ -208,10 +233,18 @@ export const rpcURLs: { [chainId: number]: string } = { fallback: 'https://arb1.arbitrum.io/rpc' }), [ChainId.ArbitrumNova]: 'https://nova.arbitrum.io/rpc', + [ChainId.Base]: loadEnvironmentVariableWithFallback({ + env: chainIdToInfuraUrl(ChainId.Base), + fallback: 'https://mainnet.base.org' + }), // L2 Testnets [ChainId.ArbitrumSepolia]: loadEnvironmentVariableWithFallback({ env: chainIdToInfuraUrl(ChainId.ArbitrumSepolia), fallback: 'https://sepolia-rollup.arbitrum.io/rpc' + }), + [ChainId.BaseSepolia]: loadEnvironmentVariableWithFallback({ + env: chainIdToInfuraUrl(ChainId.BaseSepolia), + fallback: 'https://sepolia.base.org' }) } @@ -224,8 +257,10 @@ export const explorerUrls: { [chainId: number]: string } = { // L2 [ChainId.ArbitrumNova]: 'https://nova.arbiscan.io', [ChainId.ArbitrumOne]: 'https://arbiscan.io', + [ChainId.Base]: 'https://basescan.org', // L2 Testnets - [ChainId.ArbitrumSepolia]: 'https://sepolia.arbiscan.io' + [ChainId.ArbitrumSepolia]: 'https://sepolia.arbiscan.io', + [ChainId.BaseSepolia]: 'https://sepolia.basescan.org' } export const getExplorerUrl = (chainId: ChainId) => { @@ -236,7 +271,7 @@ export const getExplorerUrl = (chainId: ChainId) => { export const getL1BlockTime = (chainId: number) => { const chain = getChainByChainId(getBaseChainIdByChainId({ chainId })) - if (!chain || !isL1Chain(chain)) { + if (!chain || !isBlockNumberReferenceNetwork(chain)) { throw new Error(`Couldn't get block time. Unexpected chain ID: ${chainId}`) } @@ -244,6 +279,11 @@ export const getL1BlockTime = (chainId: number) => { } export const getConfirmPeriodBlocks = (chainId: ChainId) => { + // Base is not an Arbitrum chain so it doesn't work in the same way, and we don't support deposits from L1, or withdrawals from Base chains + if (isNetwork(chainId).isBase) { + return 0 + } + return getArbitrumNetwork(chainId).confirmPeriodBlocks } @@ -269,7 +309,7 @@ export const l2MoonGatewayAddresses: { [chainId: number]: string } = { [ChainId.ArbitrumNova]: '0xA430a792c14d3E49d9D00FD7B4BA343F516fbB81' } -const defaultL1Network: L1Network = { +const defaultL1Network: BlockNumberReferenceNetwork = { blockTime: 10, chainId: 1337, isTestnet: true @@ -377,6 +417,11 @@ function isTestnetChain(chainId: ChainId) { return l1Network.isTestnet } + const baseNetwork = baseNetworks[chainId] + if (baseNetwork) { + return baseNetwork.isTestnet + } + try { return getArbitrumNetwork(chainId).isTestnet } catch { @@ -405,12 +450,17 @@ export function isNetwork(chainId: ChainId) { const isArbitrumSepolia = chainId === ChainId.ArbitrumSepolia const isArbitrumLocal = chainId === ChainId.ArbitrumLocal + const isBaseMainnet = chainId === ChainId.Base + const isBaseSepolia = chainId === ChainId.BaseSepolia + const isEthereumMainnetOrTestnet = isEthereumMainnet || isSepolia || isHolesky || isLocal const isArbitrum = isArbitrumOne || isArbitrumNova || isArbitrumLocal || isArbitrumSepolia + const isBase = isBaseMainnet || isBaseSepolia + const isCoreChain = isEthereumMainnetOrTestnet || isArbitrum const isOrbitChain = getIsArbitrumChain(chainId) && !isCoreChain @@ -424,8 +474,11 @@ export function isNetwork(chainId: ChainId) { isArbitrum, isArbitrumOne, isArbitrumNova, + isBase, + isBaseMainnet, // L2 Testnets isArbitrumSepolia, + isBaseSepolia, // Orbit chains isOrbitChain, // General @@ -472,22 +525,29 @@ export function mapCustomChainToNetworkData(chain: ChainWithRpcUrl) { explorerUrls[chain.chainId] = chain.explorerUrl } -function isL1Chain(chain: { chainId: number }): chain is L1Network { - return typeof l1Networks[chain.chainId] !== 'undefined' -} - function isArbitrumChain( - chain: L1Network | ArbitrumNetwork + chain: BlockNumberReferenceNetwork | ArbitrumNetwork ): chain is ArbitrumNetwork { return typeof (chain as ArbitrumNetwork).parentChainId !== 'undefined' } +function isBlockNumberReferenceNetwork(chain: { + chainId: number +}): chain is BlockNumberReferenceNetwork { + return ( + typeof l1Networks[chain.chainId] !== 'undefined' || + typeof baseNetworks[chain.chainId] !== 'undefined' + ) +} + export const TELEPORT_ALLOWLIST: { [id: number]: number[] } = { [ChainId.Ethereum]: [1380012617, 70700, 70701], // Rari, PopApex and PopBoss [ChainId.Sepolia]: [1918988905] // RARI Testnet } -export function getChildChainIds(chain: ArbitrumNetwork | L1Network) { +export function getChildChainIds( + chain: ArbitrumNetwork | BlockNumberReferenceNetwork +) { const childChainIds = [ ...getChildrenForNetwork(chain.chainId).map(chain => chain.chainId), ...(TELEPORT_ALLOWLIST[chain.chainId] ?? []) // for considering teleport (L1-L3 transfers) we will get the L3 children of the chain, if present diff --git a/packages/arb-token-bridge-ui/src/util/orbitChainsData.json b/packages/arb-token-bridge-ui/src/util/orbitChainsData.json index baad064429..406f89a78b 100644 --- a/packages/arb-token-bridge-ui/src/util/orbitChainsData.json +++ b/packages/arb-token-bridge-ui/src/util/orbitChainsData.json @@ -880,6 +880,56 @@ "logoUrl": "/images/xrTokenLogo.png" } } + }, + { + "chainId": 631571, + "confirmPeriodBlocks": 900, + "ethBridge": { + "bridge": "0x133634FA8F372e59422744759a67796F01428BDD", + "inbox": "0x81Bf51dEC736adA7E256ed6C092CAe24D62a1ca7", + "outbox": "0x020e1cb41cF68999D988c20Ef40E2C58e1947db2", + "rollup": "0xAFcb6cF53AB01ac39577A592E141F614171c9371", + "sequencerInbox": "0x2453eb0d6F58C01Adb87505A4348fB5EEceB007D" + }, + "nativeToken": "0xe97f36a00058AA7DfC4E85d23532C3f70453a7aE", + "explorerUrl": "https://polter-testnet.explorer.alchemy.com", + "rpcUrl": "https://geist-polter.g.alchemy.com/public", + "isCustom": true, + "isTestnet": true, + "name": "Polter Testnet", + "slug": "polter-testnet", + "parentChainId": 84532, + "retryableLifetimeSeconds": 604800, + "tokenBridge": { + "parentCustomGateway": "0x24e1e6375f0f0Eecd38266357cADE57cA3A348F3", + "parentErc20Gateway": "0x9014E7244116b965F0D1059f80e2bD8169957117", + "parentGatewayRouter": "0xE38553a7989feD9e240DE8B0f5ed166BF75a088A", + "parentMultiCall": "0xE0753Df74d86D6B25aCd2d049389c7E52e2dd728", + "parentProxyAdmin": "0x0000000000000000000000000000000000000000", + "parentWeth": "0x0000000000000000000000000000000000000000", + "parentWethGateway": "0x0000000000000000000000000000000000000000", + "childCustomGateway": "0x7965162499751ABf89b8e3C640f8229AD8EeB022", + "childErc20Gateway": "0xA8E8b5D957e4ad9335E504442e877E513BD50729", + "childGatewayRouter": "0xF654086B1118fE98ea045De8D6dC0F1C53Da5B76", + "childMultiCall": "0xb97c5bC7DB7532471726550480A855484a408d00", + "childProxyAdmin": "0xda11A4ecaAcA51b1f2e2109a2EEFaC438409b68D", + "childWeth": "0x0000000000000000000000000000000000000000", + "childWethGateway": "0x0000000000000000000000000000000000000000" + }, + "bridgeUiConfig": { + "color": "#03AB2A", + "network": { + "name": "Polter Testnet", + "logo": "/images/PolterTestnetLogo.png", + "description": "A gaming testnet for Aavegotchi's Geist Mainnet." + }, + "nativeTokenData": { + "name": "Aavegotchi GHST Token", + "symbol": "GHST", + "decimals": 18, + "logoUrl": "/images/ghst.png" + } + } } ] } diff --git a/packages/arb-token-bridge-ui/src/util/wagmi/getWagmiChain.ts b/packages/arb-token-bridge-ui/src/util/wagmi/getWagmiChain.ts index bd6774c656..66de1b1b0f 100644 --- a/packages/arb-token-bridge-ui/src/util/wagmi/getWagmiChain.ts +++ b/packages/arb-token-bridge-ui/src/util/wagmi/getWagmiChain.ts @@ -9,7 +9,9 @@ import { arbitrumSepolia, localL1Network, localL2Network, - localL3Network + localL3Network, + baseSepolia, + base } from './wagmiAdditionalNetworks' import { ChainId } from '../networks' import { getCustomChainFromLocalStorageById } from '../networks' @@ -37,6 +39,9 @@ export function getWagmiChain(chainId: number): Chain { case ChainId.ArbitrumNova: return arbitrumNova + case ChainId.Base: + return base + // Testnets case ChainId.Sepolia: return sepolia @@ -47,6 +52,9 @@ export function getWagmiChain(chainId: number): Chain { case ChainId.ArbitrumSepolia: return arbitrumSepolia + case ChainId.BaseSepolia: + return baseSepolia + // Local networks case ChainId.Local: return localL1Network diff --git a/packages/arb-token-bridge-ui/src/util/wagmi/setup.ts b/packages/arb-token-bridge-ui/src/util/wagmi/setup.ts index 0023574b53..fac6d8c971 100644 --- a/packages/arb-token-bridge-ui/src/util/wagmi/setup.ts +++ b/packages/arb-token-bridge-ui/src/util/wagmi/setup.ts @@ -11,7 +11,9 @@ import { localL1Network as local, localL2Network as arbitrumLocal, localL3Network as l3Local, - holesky + holesky, + base, + baseSepolia } from './wagmiAdditionalNetworks' import { isTestingEnvironment } from '../CommonUtils' import { getCustomChainsFromLocalStorage, ChainId } from '../networks' @@ -26,16 +28,22 @@ const wagmiOrbitChains = getOrbitChains().map(chain => getWagmiChain(chain.chainId) ) +const defaultChains = [ + // mainnet, arb1, & arb nova are for network switch tests + mainnet, + arbitrum, + arbitrumNova, + base, + // sepolia & arb sepolia are for tx history panel tests + sepolia, + arbitrumSepolia, + baseSepolia, + holesky +] + const chainList = isTestingEnvironment ? [ - // mainnet, arb1, & arb nova are for network switch tests - mainnet, - arbitrum, - arbitrumNova, - // sepolia & arb sepolia are for tx history panel tests - sepolia, - arbitrumSepolia, - holesky, + ...defaultChains, // Orbit chains ...wagmiOrbitChains, // add local environments during testing @@ -45,16 +53,7 @@ const chainList = isTestingEnvironment // user-added custom chains ...customChains ] - : [ - mainnet, - arbitrum, - arbitrumNova, - sepolia, - arbitrumSepolia, - holesky, - ...wagmiOrbitChains, - ...customChains - ] + : [...defaultChains, ...wagmiOrbitChains, ...customChains] const projectId = process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID! @@ -71,8 +70,10 @@ enum TargetChainKey { Ethereum = 'mainnet', ArbitrumOne = 'arbitrum-one', ArbitrumNova = 'arbitrum-nova', + Base = 'base', Sepolia = 'sepolia', - ArbitrumSepolia = 'arbitrum-sepolia' + ArbitrumSepolia = 'arbitrum-sepolia', + BaseSepolia = 'base-sepolia' } function sanitizeTargetChainKey(targetChainKey: string | null): TargetChainKey { @@ -100,11 +101,17 @@ function getChainId(targetChainKey: TargetChainKey): number { case TargetChainKey.ArbitrumNova: return ChainId.ArbitrumNova + case TargetChainKey.Base: + return ChainId.Base + case TargetChainKey.Sepolia: return ChainId.Sepolia case TargetChainKey.ArbitrumSepolia: return ChainId.ArbitrumSepolia + + case TargetChainKey.BaseSepolia: + return ChainId.BaseSepolia } } diff --git a/packages/arb-token-bridge-ui/src/util/wagmi/wagmiAdditionalNetworks.ts b/packages/arb-token-bridge-ui/src/util/wagmi/wagmiAdditionalNetworks.ts index 4ab0f3b6a9..857f4f8bee 100644 --- a/packages/arb-token-bridge-ui/src/util/wagmi/wagmiAdditionalNetworks.ts +++ b/packages/arb-token-bridge-ui/src/util/wagmi/wagmiAdditionalNetworks.ts @@ -85,6 +85,28 @@ export const arbitrumSepolia: Chain = { } } +export const baseSepolia: Chain = { + id: ChainId.BaseSepolia, + name: 'Base Sepolia', + network: 'base-sepolia', + nativeCurrency: ether, + rpcUrls: { + default: { + http: [rpcURLs[ChainId.BaseSepolia]!] + }, + public: { + http: [rpcURLs[ChainId.BaseSepolia]!] + } + }, + blockExplorers: { + etherscan: { + name: 'Basescan', + url: explorerUrls[ChainId.BaseSepolia]! + }, + default: { name: 'Basescan', url: explorerUrls[ChainId.BaseSepolia]! } + } +} + export const arbitrumNova: Chain = { id: ChainId.ArbitrumNova, name: 'Arbitrum Nova', @@ -104,6 +126,25 @@ export const arbitrumNova: Chain = { } } +export const base: Chain = { + id: ChainId.Base, + name: 'Base', + network: 'base', + nativeCurrency: ether, + rpcUrls: { + default: { + http: [rpcURLs[ChainId.Base]!] + }, + public: { + http: [rpcURLs[ChainId.Base]!] + } + }, + blockExplorers: { + etherscan: { name: 'Basescan', url: explorerUrls[ChainId.Base]! }, + default: { name: 'Basescan', url: explorerUrls[ChainId.Base]! } + } +} + /** * For e2e testing */