From 6fcf5a99a38d24d455d987f056e7e86cc8245aad Mon Sep 17 00:00:00 2001 From: "B.Prasad" Date: Tue, 7 Apr 2026 19:11:25 +0530 Subject: [PATCH] feat(statics): add Boba Network (EVM) with ERC20 token support Ticket: CECHO-305 --- modules/bitgo/test/v2/unit/keychains.ts | 1 + modules/sdk-core/src/bitgo/environments.ts | 6 ++++ modules/statics/src/allCoinsAndTokens.ts | 34 +++++++++++++++++++ modules/statics/src/base.ts | 2 ++ modules/statics/src/coins/ofcCoins.ts | 16 +++++++++ modules/statics/src/networks.ts | 22 ++++++++++++ .../unit/fixtures/expectedColdFeatures.ts | 2 ++ 7 files changed, 83 insertions(+) diff --git a/modules/bitgo/test/v2/unit/keychains.ts b/modules/bitgo/test/v2/unit/keychains.ts index fa70e4ffc3..024d8f08c4 100644 --- a/modules/bitgo/test/v2/unit/keychains.ts +++ b/modules/bitgo/test/v2/unit/keychains.ts @@ -115,6 +115,7 @@ describe('V2 Keychains', function () { n.asset !== UnderlyingAsset.ARCUSDC && n.asset !== UnderlyingAsset.ZKSYNCERA && n.asset !== UnderlyingAsset.HYPERLIQUID && + n.asset !== UnderlyingAsset.BOBAETH && coinFamilyValues.includes(n.name) ); diff --git a/modules/sdk-core/src/bitgo/environments.ts b/modules/sdk-core/src/bitgo/environments.ts index b29e33b058..e4023616dc 100644 --- a/modules/sdk-core/src/bitgo/environments.ts +++ b/modules/sdk-core/src/bitgo/environments.ts @@ -347,6 +347,9 @@ const mainnetBase: EnvironmentTemplate = { h: { baseUrl: 'https://humanity-mainnet.explorer.alchemy.com/api', }, + boba: { + baseUrl: 'https://api.routescan.io/v2/network/mainnet/evm/288/etherscan/api', + }, }, icpNodeUrl: 'https://ic0.app', hyperLiquidNodeUrl: 'https://api.hyperliquid.xyz', @@ -555,6 +558,9 @@ const testnetBase: EnvironmentTemplate = { h: { baseUrl: 'https://humanity-testnet.explorer.alchemy.com/api', }, + boba: { + baseUrl: 'https://api.routescan.io/v2/network/testnet/evm/28882/etherscan/api', + }, }, 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 97bdd59b34..e029db83e9 100644 --- a/modules/statics/src/allCoinsAndTokens.ts +++ b/modules/statics/src/allCoinsAndTokens.ts @@ -2378,6 +2378,40 @@ export const allCoinsAndTokens = [ CoinFeature.SUPPORTS_ERC20, ] ), + account( + 'd055d442-03f1-4d24-b61c-5312e480e378', + 'bobaeth', + 'Boba Network', + Networks.main.boba, + 18, + UnderlyingAsset.BOBAETH, + BaseUnit.ETH, + [ + ...EVM_FEATURES, + CoinFeature.SHARED_EVM_SIGNING, + CoinFeature.SHARED_EVM_SDK, + CoinFeature.EVM_COMPATIBLE_IMS, + CoinFeature.EVM_COMPATIBLE_UI, + CoinFeature.SUPPORTS_ERC20, + ] + ), + account( + '8fc7c710-e64e-4743-8ce7-03bcf71d7723', + 'tbobaeth', + 'Boba Network Testnet', + Networks.test.boba, + 18, + UnderlyingAsset.BOBAETH, + BaseUnit.ETH, + [ + ...EVM_FEATURES, + CoinFeature.SHARED_EVM_SIGNING, + CoinFeature.SHARED_EVM_SDK, + CoinFeature.EVM_COMPATIBLE_IMS, + CoinFeature.EVM_COMPATIBLE_UI, + CoinFeature.SUPPORTS_ERC20, + ] + ), erc721Token( 'a7604e03-7f40-41f0-8efa-2e7673ac2a9f', diff --git a/modules/statics/src/base.ts b/modules/statics/src/base.ts index b225fbae76..9c97585c09 100644 --- a/modules/statics/src/base.ts +++ b/modules/statics/src/base.ts @@ -140,6 +140,7 @@ export enum CoinFamily { ARCUSDC = 'arcusdc', // ARC network TEMPO = 'tempo', // Tempo Network UNIETH = 'unieth', // Unichain + BOBAETH = 'bobaeth', // BOBA Network } /** @@ -2137,6 +2138,7 @@ export enum UnderlyingAsset { ZMT = 'zmt', ZOOM = 'zoom', ZRO = 'zro', + BOBAETH = 'bobaeth', 'ZRO-0x320' = 'zro-0x320', 'ZRO-0xFCF' = 'zro-0xfcf', 'ZRO-0xE5C' = 'zro-0xe5c', diff --git a/modules/statics/src/coins/ofcCoins.ts b/modules/statics/src/coins/ofcCoins.ts index 4280cbb2a7..9261329b7a 100644 --- a/modules/statics/src/coins/ofcCoins.ts +++ b/modules/statics/src/coins/ofcCoins.ts @@ -455,6 +455,22 @@ export const ofcCoins = [ ), ofc('aa7e956f-2d59-4bf6-aba6-2d51bd298150', 'ofcip', 'Story', 18, UnderlyingAsset.IP, CoinKind.CRYPTO), tofc('773b02f6-32ea-493a-bca5-13d93cb0afff', 'ofctip', 'Story Testnet', 18, UnderlyingAsset.IP, CoinKind.CRYPTO), + ofc( + '9fd3e1b0-2e67-46c6-ab3b-a9942533b9d6', + 'ofcbobaeth', + 'Boba Network', + 18, + UnderlyingAsset.BOBAETH, + CoinKind.CRYPTO + ), + tofc( + '14c7407a-0daa-4c3d-b438-8a9d2e60cc29', + 'ofctbobaeth', + 'Boba Network Testnet', + 18, + UnderlyingAsset.BOBAETH, + CoinKind.CRYPTO + ), ofc( '8b50bd47-54d4-456d-a141-09f8e90df850', 'ofczksyncera', diff --git a/modules/statics/src/networks.ts b/modules/statics/src/networks.ts index 10a777af16..110ba2198f 100644 --- a/modules/statics/src/networks.ts +++ b/modules/statics/src/networks.ts @@ -2553,6 +2553,26 @@ class TempoTestnet extends Testnet implements EthereumNetwork { tokenOperationHashPrefix = '42431'; } +class Boba extends Mainnet implements EthereumNetwork { + name = 'Boba'; + family = CoinFamily.BOBAETH; + explorerUrl = 'https://bobascan.com/blockchain/transactions'; + accountExplorerUrl = 'https://bobascan.com/blockchain/accounts'; + chainId = 288; + nativeCoinOperationHashPrefix = '288'; + tokenOperationHashPrefix = '288-ERC20'; +} + +class BobaTestnet extends Testnet implements EthereumNetwork { + name = 'Boba Testnet'; + family = CoinFamily.BOBAETH; + explorerUrl = 'https://testnet.bobascan.com/blockchain/transactions'; + accountExplorerUrl = 'https://testnet.bobascan.com/blockchain/accounts'; + chainId = 28882; + nativeCoinOperationHashPrefix = '28882'; + tokenOperationHashPrefix = '28882-ERC20'; +} + /** * Constructor options for {@link DynamicNetwork}. * Accepts string-typed `type` and `family` so AMS JSON can be passed directly. @@ -2763,6 +2783,7 @@ export const Networks = { zkSync: Object.freeze(new ZkSync()), zkSyncEra: Object.freeze(new ZkSyncEra()), unieth: Object.freeze(new Unieth()), + boba: Object.freeze(new Boba()), }, test: { ada: Object.freeze(new AdaTestnet()), @@ -2889,6 +2910,7 @@ export const Networks = { zkSync: Object.freeze(new ZkSyncTestnet()), zkSyncEra: Object.freeze(new ZkSyncEraTestnet()), unieth: Object.freeze(new UniethTestnet()), + boba: Object.freeze(new BobaTestnet()), }, }; diff --git a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts index d0e364771c..76e7486590 100644 --- a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts +++ b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts @@ -81,6 +81,7 @@ export const expectedColdFeatures = { 'bera', 'baseeth', 'bld', + 'bobaeth', 'bsc', 'canton', 'chiliz', @@ -156,6 +157,7 @@ export const expectedColdFeatures = { 'tbera', 'tbaseeth', 'tbld', + 'tbobaeth', 'tbsc', 'tcanton', 'tchiliz',