From de480fd6dba2dff178058b6a2ea2bf4e7dff68af Mon Sep 17 00:00:00 2001 From: Rohit Saw Date: Mon, 27 Oct 2025 14:27:57 +0530 Subject: [PATCH] feat: add statics config for Hedera EVM ticket: win-7681 --- modules/sdk-core/src/bitgo/environments.ts | 6 +++ modules/statics/src/allCoinsAndTokens.ts | 38 +++++++++++++++++++ modules/statics/src/base.ts | 2 + modules/statics/src/networks.ts | 20 ++++++++++ .../unit/fixtures/expectedColdFeatures.ts | 2 + 5 files changed, 68 insertions(+) diff --git a/modules/sdk-core/src/bitgo/environments.ts b/modules/sdk-core/src/bitgo/environments.ts index 6bc697d032..fbd33bcb0f 100644 --- a/modules/sdk-core/src/bitgo/environments.ts +++ b/modules/sdk-core/src/bitgo/environments.ts @@ -266,6 +266,9 @@ const mainnetBase: EnvironmentTemplate = { megaeth: { baseUrl: 'https://carrot.megaeth.com/rpc', //TODO: add mainnet url when available }, + hedera: { + baseUrl: 'https://server-verify.hashscan.io/verify', + }, }, icpNodeUrl: 'https://ic0.app', worldExplorerBaseUrl: 'https://worldscan.org/', @@ -400,6 +403,9 @@ const testnetBase: EnvironmentTemplate = { plume: { baseUrl: 'https://testnet-explorer.plume.org/api', }, + hedera: { + baseUrl: 'https://server-verify.hashscan.io/verify', + }, }, stxNodeUrl: 'https://api.testnet.hiro.so', vetNodeUrl: 'https://sync-testnet.vechain.org', diff --git a/modules/statics/src/allCoinsAndTokens.ts b/modules/statics/src/allCoinsAndTokens.ts index c152b750e8..14f2a91e5a 100644 --- a/modules/statics/src/allCoinsAndTokens.ts +++ b/modules/statics/src/allCoinsAndTokens.ts @@ -2121,6 +2121,44 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, ] ), + account( + '577efbd5-4f61-4620-a736-5a2655d1521d', + 'hbarevm', + 'Hedera EVM', + Networks.main.hederaEVM, + 8, + UnderlyingAsset.HBAREVM, + BaseUnit.HBAR, + [ + ...EVM_FEATURES, + CoinFeature.SHARED_EVM_SIGNING, + CoinFeature.SHARED_EVM_SDK, + CoinFeature.EVM_COMPATIBLE_IMS, + CoinFeature.EVM_COMPATIBLE_UI, + CoinFeature.EVM_COMPATIBLE_WP, + CoinFeature.EVM_NON_BITGO_RECOVERY, + CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + ] + ), + account( + 'd38fb9c4-2949-404b-85be-7c828a416de9', + 'thbarevm', + 'Testnet Hedera EVM', + Networks.test.hederaEVM, + 8, + UnderlyingAsset.HBAREVM, + BaseUnit.HBAR, + [ + ...EVM_FEATURES, + CoinFeature.SHARED_EVM_SIGNING, + CoinFeature.SHARED_EVM_SDK, + CoinFeature.EVM_COMPATIBLE_IMS, + CoinFeature.EVM_COMPATIBLE_UI, + CoinFeature.EVM_COMPATIBLE_WP, + CoinFeature.EVM_NON_BITGO_RECOVERY, + CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + ] + ), canton( '07385320-5a4f-48e9-97a5-86d4be9f24b0', 'canton', diff --git a/modules/statics/src/base.ts b/modules/statics/src/base.ts index f9277dbe21..df54690e18 100644 --- a/modules/statics/src/base.ts +++ b/modules/statics/src/base.ts @@ -60,6 +60,7 @@ export enum CoinFamily { FLRP = 'flrp', HASH = 'hash', // Provenance HBAR = 'hbar', + HBAREVM = 'hbarevm', // Hedera EVM coin ICP = 'icp', INITIA = 'initia', INJECTIVE = 'injective', @@ -536,6 +537,7 @@ export enum UnderlyingAsset { GTC = 'gtc', HASH = 'hash', // Provenance HBAR = 'hbar', // Hedera main coin + HBAREVM = 'hbarevm', // Hedera EVM coin ICP = 'icp', IP = 'ip', // Story Chain INITIA = 'initia', diff --git a/modules/statics/src/networks.ts b/modules/statics/src/networks.ts index 0d6b5bc714..1eba2f8435 100644 --- a/modules/statics/src/networks.ts +++ b/modules/statics/src/networks.ts @@ -1992,6 +1992,24 @@ class Plume extends Mainnet implements EthereumNetwork { nativeCoinOperationHashPrefix = '98866'; } +class HederaEVMTestnet extends Testnet implements EthereumNetwork { + name = 'Testnet Hedera EVM'; + family = CoinFamily.HBAREVM; + explorerUrl = 'https://hashscan.io/mainnet/transactions/'; + accountExplorerUrl = 'https://hashscan.io/mainnet/account/'; + chainId = 296; + nativeCoinOperationHashPrefix = '296'; +} + +class HederaEVM extends Mainnet implements EthereumNetwork { + name = 'Hedera EVM'; + family = CoinFamily.HBAREVM; + explorerUrl = 'https://hashscan.io/testnet/transaction/'; + accountExplorerUrl = 'https://hashscan.io/testnet/account/'; + chainId = 295; + nativeCoinOperationHashPrefix = '295'; +} + class PlumeTestnet extends Testnet implements EthereumNetwork { name = 'PlumeTestnet'; family = CoinFamily.PLUME; @@ -2055,6 +2073,7 @@ export const Networks = { flrP: Object.freeze(new FlareP()), hash: Object.freeze(new Hash()), hedera: Object.freeze(new Hedera()), + hederaEVM: Object.freeze(new HederaEVM()), icp: Object.freeze(new Icp()), ip: Object.freeze(new IP()), initia: Object.freeze(new Initia()), @@ -2155,6 +2174,7 @@ export const Networks = { ethereumClassicTestnet: Object.freeze(new EthereumClassicTestnet()), hash: Object.freeze(new HashTestnet()), hedera: Object.freeze(new HederaTestnet()), + hederaEVM: Object.freeze(new HederaEVMTestnet()), icp: Object.freeze(new IcpTestnet()), ip: Object.freeze(new IPTestnet()), initia: Object.freeze(new InitiaTestnet()), diff --git a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts index 21d491d91b..223f905e99 100644 --- a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts +++ b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts @@ -74,6 +74,7 @@ export const expectedColdFeatures = { 'flow', 'flr', 'hash', + 'hbarevm', 'icp', 'ip', // Story chain 'initia', @@ -129,6 +130,7 @@ export const expectedColdFeatures = { 'tfetchai', 'tflow', 'tflr', + 'thbarevm', 'tog', 'tmegaeth', 'tmon',