From f6839de16b5d8ec283359fe43f574a6cbe76e43c Mon Sep 17 00:00:00 2001 From: bruce-riley <96066700+bruce-riley@users.noreply.github.com> Date: Fri, 20 Dec 2024 07:28:56 -0600 Subject: [PATCH] Add HyperEVM testnet support (#760) * Add HyperEVM testnet support * Fix Type instantiation is excessively deep and possibly infinite --- core/base/src/constants/chains.ts | 1 + core/base/src/constants/contracts/core.ts | 1 + core/base/src/constants/contracts/index.ts | 1 + core/base/src/constants/contracts/tokenBridge.ts | 1 + core/base/src/constants/finality.ts | 1 + core/base/src/constants/nativeChainIds.ts | 1 + core/base/src/constants/platforms.ts | 1 + core/base/src/constants/rpc.ts | 1 + core/icons/src/constants/chainIcons.ts | 5 +++++ core/icons/src/images/chains/HyperEVM.svg | 3 +++ 10 files changed, 16 insertions(+) create mode 100755 core/icons/src/images/chains/HyperEVM.svg diff --git a/core/base/src/constants/chains.ts b/core/base/src/constants/chains.ts index 07b5e13ca..bef43c774 100644 --- a/core/base/src/constants/chains.ts +++ b/core/base/src/constants/chains.ts @@ -51,6 +51,7 @@ const chainIdAndChainEntries = [ [ 44, "Unichain" ], [ 45, "Worldchain" ], [ 46, "Ink" ], + [ 47, "HyperEVM" ], [ 3104, "Wormchain" ], [ 4000, "Cosmoshub" ], [ 4001, "Evmos" ], diff --git a/core/base/src/constants/contracts/core.ts b/core/base/src/constants/contracts/core.ts index a0490918d..76bc90237 100644 --- a/core/base/src/constants/contracts/core.ts +++ b/core/base/src/constants/contracts/core.ts @@ -89,6 +89,7 @@ export const coreBridgeContracts = [[ ["Unichain", "0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd"], ["Worldchain", "0xe5E02cD12B6FcA153b0d7fF4bF55730AE7B3C93A"], ["Ink", "0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd"], + ["HyperEVM", "0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd"], ["Xlayer", "0xA31aa3FDb7aF7Db93d18DDA4e19F811342EDF780"], ["Linea", "0x79A1027a6A159502049F10906D333EC57E95F083"], ["MonadDevnet", "0xBB73cB66C26740F31d1FabDC6b7A46a038A300dd"], diff --git a/core/base/src/constants/contracts/index.ts b/core/base/src/constants/contracts/index.ts index 60ff1a738..ef0cd7d19 100644 --- a/core/base/src/constants/contracts/index.ts +++ b/core/base/src/constants/contracts/index.ts @@ -25,6 +25,7 @@ export const circleContracts = constMap(circle.circleContracts); export type { PorticoContracts } from './portico.js'; export const rollupContracts = constMap(rollup.rollupContractAddresses); +// @ts-ignore: Adding one more token bridge is causing "Type instantiation is excessively deep and possibly infinite." export const tokenBridgeChains = constMap(tb.tokenBridgeContracts, [0, 1]); export const tokenBridgeRelayerChains = constMap(tbr.tokenBridgeRelayerContracts, [0, 1]); export const circleContractChains = constMap(circle.circleContracts, [0, 1]); diff --git a/core/base/src/constants/contracts/tokenBridge.ts b/core/base/src/constants/contracts/tokenBridge.ts index 5f48ab2fb..ca360e21f 100644 --- a/core/base/src/constants/contracts/tokenBridge.ts +++ b/core/base/src/constants/contracts/tokenBridge.ts @@ -81,6 +81,7 @@ export const tokenBridgeContracts = [[ ["Unichain", "0xa10f2eF61dE1f19f586ab8B6F2EbA89bACE63F7a"], ["Worldchain", "0x430855B4D43b8AEB9D2B9869B74d58dda79C0dB2"], ["Ink", "0x376428e7f26D5867e69201b275553C45B09EE090"], + ["HyperEVM", "0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78"], ["Linea", "0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e"], ]], [ "Devnet", [ diff --git a/core/base/src/constants/finality.ts b/core/base/src/constants/finality.ts index 7d67e5e9d..cfaf53c91 100644 --- a/core/base/src/constants/finality.ts +++ b/core/base/src/constants/finality.ts @@ -63,6 +63,7 @@ const finalityThresholds = [ ["Snaxchain", 512], ["Unichain", 512], ["Ink", 512], + ["HyperEVM", 1], ["Cosmoshub", 0], ["Evmos", 0], ["Kujira", 0], diff --git a/core/base/src/constants/nativeChainIds.ts b/core/base/src/constants/nativeChainIds.ts index 428e86995..2715d7bb6 100644 --- a/core/base/src/constants/nativeChainIds.ts +++ b/core/base/src/constants/nativeChainIds.ts @@ -112,6 +112,7 @@ const chainNetworkNativeChainIdEntries = [ ["Unichain", 1301n], ["Worldchain", 4801n], ["Ink", 763373n], + ["HyperEVM", 998n], ["Xlayer", 195n], ["Linea", 59141n], // Sepolia ["MonadDevnet", 41454n], diff --git a/core/base/src/constants/platforms.ts b/core/base/src/constants/platforms.ts index a3d589a1a..8faf44463 100644 --- a/core/base/src/constants/platforms.ts +++ b/core/base/src/constants/platforms.ts @@ -40,6 +40,7 @@ const platformAndChainsEntries = [[ "Unichain", "Worldchain", "Ink", + "HyperEVM", "MonadDevnet", ]], [ "Solana", [ diff --git a/core/base/src/constants/rpc.ts b/core/base/src/constants/rpc.ts index cfe302759..38af0145d 100644 --- a/core/base/src/constants/rpc.ts +++ b/core/base/src/constants/rpc.ts @@ -94,6 +94,7 @@ const rpcConfig = [[ ["Unichain", "https://sepolia.unichain.org"], ["Worldchain", "https://worldchain-sepolia.g.alchemy.com/public"], ["Ink", "https://rpc-qnd-sepolia.inkonchain.com"], + ["HyperEVM", "https://api.hyperliquid-testnet.xyz/evm"], ["MonadDevnet", ""], // TODO: No public rpc is currently available, override with a custom rpc for now. ["Noble", "https://noble-testnet-rpc.polkachu.com/"], ]], [ diff --git a/core/icons/src/constants/chainIcons.ts b/core/icons/src/constants/chainIcons.ts index eb10ae0cd..63ea5c953 100644 --- a/core/icons/src/constants/chainIcons.ts +++ b/core/icons/src/constants/chainIcons.ts @@ -210,6 +210,11 @@ export function chainToIcon(chain: Chain): string { PREFIX + "PHN2ZyB3aWR0aD0iMjc1IiBoZWlnaHQ9IjI3NSIgdmlld0JveD0iMCAwIDI3NSAyNzUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ICAgIDxwYXRoIGZpbGxSdWxlPSJldmVub2RkIiBjbGlwUnVsZT0iZXZlbm9kZCIgZD0iTTI3NSAxMzcuNUMyNzUgNjEuNTYwOCAyMTMuNDM5IC0zLjMxOTQxZS0wNiAxMzcuNSAwQzYxLjU2MDggMy4zMTk0MWUtMDYgLTMuMzE5NDFlLTA2IDYxLjU2MDggMCAxMzcuNUMzLjMxOTQxZS0wNiAyMTMuNDM5IDYxLjU2MDggMjc1IDEzNy41IDI3NUMyMTMuNDM5IDI3NSAyNzUgMjEzLjQzOSAyNzUgMTM3LjVaTTE1Ny4xMjUgMjQwLjQwN0MxNTcuMTI1IDI0OS43MzUgMTQ5LjQ2OSAyNTcuMzE3IDEzOC42MDIgMjU3LjUzNUMxMzguMzAxIDI1Ny41MzggMTM4IDI1Ny41MzkgMTM3LjY5OCAyNTcuNTRIMTM3LjMwMkM3MS4wOTY5IDI1Ny40MzMgMTcuNDYwMyAyMDMuNzMgMTcuNDYwMyAxMzcuNUMxNy40NjAzIDcxLjIwNDEgNzEuMjAzOSAxNy40NjA1IDEzNy41IDE3LjQ2MDVDMTM3Ljg1NyAxNy40NjA1IDEzOC4yMTUgMTcuNDYyMSAxMzguNTcxIDE3LjQ2NTJDMTUwLjgzNCAxNy42ODM2IDE1Ny4xMjUgMjUuMjY1NCAxNTcuMTI1IDM0LjU5MjlDMTU3LjEyNSA0NC4wODU5IDE0OC43MzMgNTEuMDcxNSAxMzkuODQzIDUxLjA3MTVDMTMwLjk1MiA1MS4wNzE1IDEzMC41MTYgNTEuMDcxNSAxMjIuMDA2IDUxLjc1MzRDMTEzLjQ5NSA1Mi40MzU0IDEwNC42OTUgNTkuNDIwOSAxMDQuNjk1IDY4Ljg4NTlDMTA0LjY5NSA3OC40MDcxIDExMi40MyA4Ni4wNzQ1IDEyMi4wMDYgODYuMDc0NUgxOTcuNDhDMjA3LjAyOCA4Ni4wNzQ1IDIxNC43NjIgOTMuNzQyIDIxNC43NjIgMTAzLjIwN0MyMTQuNzYyIDExMi42NzIgMjA3LjAyOCAxMjAuMzM5IDE5Ny40OCAxMjAuMzM5SDgxLjIyOThDNzEuNjUzOSAxMjAuMzM5IDYzLjkxOTUgMTI4LjAzNSA2My45MTk1IDEzNy41MjhDNjMuOTE5NSAxNDYuOTkzIDcxLjY1MzkgMTU0LjY2MSA4MS4yMjk4IDE1NC42NjFIMTM5Ljg0M0MxNDkuMzkxIDE1NC42NjEgMTU3LjEyNSAxNjIuMzI4IDE1Ny4xMjUgMTcxLjgyMUMxNTcuMTI1IDE4MS4yODYgMTQ5LjM5MSAxODguOTU0IDEzOS44NDMgMTg4Ljk1NEgxMjIuMDA2QzExMi40MyAxODguOTU0IDEwNC42OTUgMTk2LjYyMSAxMDQuNjk1IDIwNi4wODZDMTA0LjY5NSAyMTUuNTc5IDExMi42MjIgMjIyLjUwOSAxMjIuMDA2IDIyMy4yMTlDMTIyLjc0NSAyMjMuMjc1IDEyMy40MjIgMjIzLjMyNiAxMjQuMDQ1IDIyMy4zNzRDMTI3LjM0NyAyMjMuNjI1IDEyOS4xNTEgMjIzLjc2MyAxMzAuOTU4IDIyMy44MzhDMTMzLjEzNCAyMjMuOTI5IDEzNS4zMTQgMjIzLjkyOSAxNDAuMTE5IDIyMy45MjlDMTQ5LjY2NyAyMjMuOTI5IDE1Ny4xMjUgMjMwLjk0MiAxNTcuMTI1IDI0MC40MDdaIiBmaWxsPSIjNzEzMkY1Ii8+PC9zdmc+" ); + } else if (chain === "HyperEVM") { + return ( + PREFIX + + "PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0NCA3MS42OTkxQzE0NCAxMTkuMzA2IDExNC44NjYgMTM0LjU4MiA5OS41MTU2IDEyMC45OEM4Ni44ODA0IDEwOS44ODkgODMuMTIxMSA4Ni40NTIxIDY0LjExNiA4NC4wNDU2QzM5Ljk5NDIgODEuMDExMyAzNy45MDU3IDExMy4xMzMgMjIuMDMzNCAxMTMuMTMzQzMuNTUwNCAxMTMuMTMzIDAgODYuMjQyOCAwIDcyLjQzMTVDMCA1OC4zMDYzIDMuOTY4MDkgMzkuMDU0MiAxOS43MzYgMzkuMDU0MkMzOC4xMTQ2IDM5LjA1NDIgMzkuMTU4OCA2Ni41NzIyIDYyLjEzMiA2NS4xMDczQzg1LjAwMDcgNjMuNTM3OSA4NS40MTg0IDM0Ljg2ODkgMTAwLjI0NyAyMi42MjcxQzExMy4xOTUgMTIuMDU5MyAxNDQgMjMuNDY0MSAxNDQgNzEuNjk5MVoiIGZpbGw9IiM5N0ZDRTQiLz48L3N2Zz4=" + ); } else if (chain === "Wormchain") { return ( PREFIX + diff --git a/core/icons/src/images/chains/HyperEVM.svg b/core/icons/src/images/chains/HyperEVM.svg new file mode 100755 index 000000000..c9eb0bd09 --- /dev/null +++ b/core/icons/src/images/chains/HyperEVM.svg @@ -0,0 +1,3 @@ + + +