From 5b9fbdf0c11185e3f6b07cf742d018318c1d88fe Mon Sep 17 00:00:00 2001 From: Maxime OUAIRY Date: Thu, 29 Jan 2026 09:05:10 +0100 Subject: [PATCH] feat: add HyperEVM preferences and transactions --- packages/preferences-controller/CHANGELOG.md | 6 ++++++ .../src/PreferencesController.test.ts | 4 ++++ .../preferences-controller/src/PreferencesController.ts | 1 + packages/preferences-controller/src/constants.ts | 1 + packages/transaction-controller/CHANGELOG.md | 6 ++++++ .../transaction-controller/src/api/accounts-api.test.ts | 2 +- packages/transaction-controller/src/api/accounts-api.ts | 1 + packages/transaction-controller/src/constants.ts | 1 + .../src/helpers/AccountsApiRemoteTransactionSource.ts | 1 + packages/transaction-controller/src/utils/swaps.ts | 7 +++++++ 10 files changed, 29 insertions(+), 1 deletion(-) diff --git a/packages/preferences-controller/CHANGELOG.md b/packages/preferences-controller/CHANGELOG.md index 1e21c002700..f98a16fa7cd 100644 --- a/packages/preferences-controller/CHANGELOG.md +++ b/packages/preferences-controller/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Add support for HYPEREVM (chain ID `0x3e7`) ([#7770](https://github.com/MetaMask/core/pull/7770)) + - Add `HYPEREVM` into constant `ETHERSCAN_SUPPORTED_CHAIN_IDS` + - Update default controller state so HYPEREVM (Chain ID `0x3e7`) is automatically enabled in `showIncomingTransactions` + ### Changed - Upgrade `@metamask/utils` from `^11.8.1` to `^11.9.0` ([#7511](https://github.com/MetaMask/core/pull/7511)) diff --git a/packages/preferences-controller/src/PreferencesController.test.ts b/packages/preferences-controller/src/PreferencesController.test.ts index 48952478dfd..e0373ec7d11 100644 --- a/packages/preferences-controller/src/PreferencesController.test.ts +++ b/packages/preferences-controller/src/PreferencesController.test.ts @@ -610,6 +610,7 @@ describe('PreferencesController', () => { "0x1": true, "0x13881": true, "0x38": true, + "0x3e7": true, "0x5": true, "0x504": true, "0x505": true, @@ -673,6 +674,7 @@ describe('PreferencesController', () => { "0x1": true, "0x13881": true, "0x38": true, + "0x3e7": true, "0x5": true, "0x504": true, "0x505": true, @@ -738,6 +740,7 @@ describe('PreferencesController', () => { "0x1": true, "0x13881": true, "0x38": true, + "0x3e7": true, "0x5": true, "0x504": true, "0x505": true, @@ -802,6 +805,7 @@ describe('PreferencesController', () => { "0x1": true, "0x13881": true, "0x38": true, + "0x3e7": true, "0x5": true, "0x504": true, "0x505": true, diff --git a/packages/preferences-controller/src/PreferencesController.ts b/packages/preferences-controller/src/PreferencesController.ts index 70cfa3d0317..a59f2611c07 100644 --- a/packages/preferences-controller/src/PreferencesController.ts +++ b/packages/preferences-controller/src/PreferencesController.ts @@ -357,6 +357,7 @@ export function getDefaultPreferencesState(): PreferencesState { [ETHERSCAN_SUPPORTED_CHAIN_IDS.GNOSIS]: true, [ETHERSCAN_SUPPORTED_CHAIN_IDS.SEI]: true, [ETHERSCAN_SUPPORTED_CHAIN_IDS.MONAD]: true, + [ETHERSCAN_SUPPORTED_CHAIN_IDS.HYPEREVM]: true, }, showTestNetworks: false, useNftDetection: false, diff --git a/packages/preferences-controller/src/constants.ts b/packages/preferences-controller/src/constants.ts index 8414467446b..9844731761f 100644 --- a/packages/preferences-controller/src/constants.ts +++ b/packages/preferences-controller/src/constants.ts @@ -21,4 +21,5 @@ export const ETHERSCAN_SUPPORTED_CHAIN_IDS = { GNOSIS: '0x64', SEI: '0x531', MONAD: '0x8f', + HYPEREVM: '0x3e7', } as const; diff --git a/packages/transaction-controller/CHANGELOG.md b/packages/transaction-controller/CHANGELOG.md index c849a4287ea..cf75a3e020c 100644 --- a/packages/transaction-controller/CHANGELOG.md +++ b/packages/transaction-controller/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Add `HYPEREVM` network support ([#7770](https://github.com/MetaMask/core/pull/7770)) + - Add account address relationship API support + - Add incoming transactions API support + ## [62.12.0] ### Added diff --git a/packages/transaction-controller/src/api/accounts-api.test.ts b/packages/transaction-controller/src/api/accounts-api.test.ts index e9fd2317328..4bb6acfc815 100644 --- a/packages/transaction-controller/src/api/accounts-api.test.ts +++ b/packages/transaction-controller/src/api/accounts-api.test.ts @@ -22,7 +22,7 @@ const CURSOR_MOCK = '0x456'; const END_TIMESTAMP_MOCK = 123; const START_TIMESTAMP_MOCK = 456; const CHAIN_ID_SUPPORTED = 1; -const CHAIN_ID_UNSUPPORTED = 999; +const CHAIN_ID_UNSUPPORTED = 123456789; const FROM_ADDRESS = '0xSender'; const TO_ADDRESS = '0xRecipient'; const TAG_MOCK = 'test1'; diff --git a/packages/transaction-controller/src/api/accounts-api.ts b/packages/transaction-controller/src/api/accounts-api.ts index d8239b12e06..84fd67cd8bf 100644 --- a/packages/transaction-controller/src/api/accounts-api.ts +++ b/packages/transaction-controller/src/api/accounts-api.ts @@ -109,6 +109,7 @@ const SUPPORTED_CHAIN_IDS_FOR_RELATIONSHIP_API = [ 534352, // Scroll 1329, // Sei 143, // Monad + 999, // HyperEVM ]; const log = createModuleLogger(projectLogger, 'accounts-api'); diff --git a/packages/transaction-controller/src/constants.ts b/packages/transaction-controller/src/constants.ts index 22690d8a85a..e7dee47d896 100644 --- a/packages/transaction-controller/src/constants.ts +++ b/packages/transaction-controller/src/constants.ts @@ -5,6 +5,7 @@ export const CHAIN_IDS = { BASE_TESTNET: '0x14a33', BSC: '0x38', BSC_TESTNET: '0x61', + HYPEREVM: '0x3e7', OPTIMISM: '0xa', OPTIMISM_TESTNET: '0x1a4', OPBNB: '0xcc', diff --git a/packages/transaction-controller/src/helpers/AccountsApiRemoteTransactionSource.ts b/packages/transaction-controller/src/helpers/AccountsApiRemoteTransactionSource.ts index cd2bb3bac8e..304d7231ac5 100644 --- a/packages/transaction-controller/src/helpers/AccountsApiRemoteTransactionSource.ts +++ b/packages/transaction-controller/src/helpers/AccountsApiRemoteTransactionSource.ts @@ -30,6 +30,7 @@ export const SUPPORTED_CHAIN_IDS: Hex[] = [ CHAIN_IDS.SCROLL, CHAIN_IDS.SEI, CHAIN_IDS.MONAD, + CHAIN_IDS.HYPEREVM, ]; const log = createModuleLogger( diff --git a/packages/transaction-controller/src/utils/swaps.ts b/packages/transaction-controller/src/utils/swaps.ts index d7aa0542bd4..4808073c74f 100644 --- a/packages/transaction-controller/src/utils/swaps.ts +++ b/packages/transaction-controller/src/utils/swaps.ts @@ -106,6 +106,12 @@ const MONAD_SWAPS_TOKEN_OBJECT: SwapsTokenObject = { decimals: 18, } as const; +const HYPEREVM_SWAPS_TOKEN_OBJECT: SwapsTokenObject = { + name: 'Hyperliquid', + address: DEFAULT_TOKEN_ADDRESS, + decimals: 18, +} as const; + export const SWAPS_CHAINID_DEFAULT_TOKEN_MAP = { [CHAIN_IDS.MAINNET]: ETH_SWAPS_TOKEN_OBJECT, [SWAPS_TESTNET_CHAIN_ID]: TEST_ETH_SWAPS_TOKEN_OBJECT, @@ -118,6 +124,7 @@ export const SWAPS_CHAINID_DEFAULT_TOKEN_MAP = { [CHAIN_IDS.ZKSYNC_ERA]: ZKSYNC_ERA_SWAPS_TOKEN_OBJECT, [CHAIN_IDS.SEI]: SEI_SWAPS_TOKEN_OBJECT, [CHAIN_IDS.MONAD]: MONAD_SWAPS_TOKEN_OBJECT, + [CHAIN_IDS.HYPEREVM]: HYPEREVM_SWAPS_TOKEN_OBJECT, } as const; export const SWAP_TRANSACTION_TYPES = [