From b0713aa963f0535660dc8a4d52b399349faadb6d Mon Sep 17 00:00:00 2001 From: Kashif Jamil Date: Tue, 14 Apr 2026 23:36:22 +0530 Subject: [PATCH] feat(statics): add INK L2 EVM chain Adds INK L2 (EVM) chain support to BitGoJS SDK. - Chain ID: 57073 (mainnet), 763373 (testnet) - Coin codes: inketh / tinketh - OFC entries: ofcinketh / ofctinketh - Explorer: https://explorer.inkonchain.com - Testnet explorer: https://explorer-sepolia.inkonchain.com Jira: WIN-8540 Co-Authored-By: Claude Sonnet 4.6 --- modules/sdk-core/src/bitgo/environments.ts | 6 ++++ modules/statics/src/allCoinsAndTokens.ts | 36 +++++++++++++++++++ modules/statics/src/base.ts | 2 ++ modules/statics/src/coins/ofcCoins.ts | 9 +++++ modules/statics/src/networks.ts | 20 +++++++++++ .../unit/fixtures/expectedColdFeatures.ts | 2 ++ 6 files changed, 75 insertions(+) diff --git a/modules/sdk-core/src/bitgo/environments.ts b/modules/sdk-core/src/bitgo/environments.ts index 8f210a7718..a5814fc185 100644 --- a/modules/sdk-core/src/bitgo/environments.ts +++ b/modules/sdk-core/src/bitgo/environments.ts @@ -308,6 +308,9 @@ const mainnetBase: EnvironmentTemplate = { hemieth: { baseUrl: 'https://explorer.hemi.xyz/api', }, + inketh: { + baseUrl: 'https://explorer.inkonchain.com/api', + }, prividiumeth: { baseUrl: 'https://explorer.prividium.zksync.dev/api', // TODO: update with mainnet URL when available }, @@ -525,6 +528,9 @@ const testnetBase: EnvironmentTemplate = { hemieth: { baseUrl: 'https://testnet.explorer.hemi.xyz/api', }, + tinketh: { + baseUrl: 'https://explorer-sepolia.inkonchain.com/api', + }, prividiumeth: { baseUrl: 'https://explorer.testnet-prividium.zksync.dev/api', }, diff --git a/modules/statics/src/allCoinsAndTokens.ts b/modules/statics/src/allCoinsAndTokens.ts index 47e195cbef..8978327bb9 100644 --- a/modules/statics/src/allCoinsAndTokens.ts +++ b/modules/statics/src/allCoinsAndTokens.ts @@ -2380,6 +2380,42 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, ] ), + account( + 'e3d32879-e6de-4938-b550-8ff4c19211d1', + 'inketh', + 'INK', + Networks.main.inketh, + 18, + UnderlyingAsset.INKETH, + BaseUnit.ETH, + [ + ...EVM_FEATURES, + CoinFeature.SHARED_EVM_SIGNING, + CoinFeature.SHARED_EVM_SDK, + CoinFeature.EVM_COMPATIBLE_IMS, + CoinFeature.EVM_COMPATIBLE_UI, + CoinFeature.EVM_COMPATIBLE_WP, + CoinFeature.SUPPORTS_ERC20, + ] + ), + account( + '8bfa7960-008f-4aa0-b49a-589c3127dd46', + 'tinketh', + 'Testnet INK', + Networks.test.inketh, + 18, + UnderlyingAsset.INKETH, + BaseUnit.ETH, + [ + ...EVM_FEATURES, + CoinFeature.SHARED_EVM_SIGNING, + CoinFeature.SHARED_EVM_SDK, + CoinFeature.EVM_COMPATIBLE_IMS, + CoinFeature.EVM_COMPATIBLE_UI, + CoinFeature.EVM_COMPATIBLE_WP, + CoinFeature.SUPPORTS_ERC20, + ] + ), account( '68d22683-a8f2-47b3-8446-92e02a1963ae', 'hemieth', diff --git a/modules/statics/src/base.ts b/modules/statics/src/base.ts index 0e5da11acb..bd0b827222 100644 --- a/modules/statics/src/base.ts +++ b/modules/statics/src/base.ts @@ -73,6 +73,7 @@ export enum CoinFamily { HOODETH = 'hoodeth', // Robinhood Chain HPPETH = 'hppeth', // House Party Protocol ICP = 'icp', + INKETH = 'inketh', // INK L2 INITIA = 'initia', INJECTIVE = 'injective', IOTA = 'iota', @@ -619,6 +620,7 @@ export enum UnderlyingAsset { HOODETH = 'hoodeth', // Robinhood Chain HPPETH = 'hppeth', // House Party Protocol ICP = 'icp', + INKETH = 'inketh', // INK L2 IP = 'ip', // Story Chain INITIA = 'initia', INJECTIVE = 'injective', diff --git a/modules/statics/src/coins/ofcCoins.ts b/modules/statics/src/coins/ofcCoins.ts index 076eb2b3a6..c281d36bfd 100644 --- a/modules/statics/src/coins/ofcCoins.ts +++ b/modules/statics/src/coins/ofcCoins.ts @@ -346,6 +346,15 @@ export const ofcCoins = [ UnderlyingAsset.LINEAETH, CoinKind.CRYPTO ), + ofc('b68e22ea-c6b6-458b-87d1-b6b5f79d9648', 'ofcinketh', 'INK', 18, UnderlyingAsset.INKETH, CoinKind.CRYPTO), + tofc( + '4d79941f-58ea-4fca-a784-93cf7acdf508', + 'ofctinketh', + 'INK Testnet', + 18, + UnderlyingAsset.INKETH, + CoinKind.CRYPTO + ), ofc( 'bdab1ab0-215d-4d59-b698-7cc624e5027a', 'ofchemieth', diff --git a/modules/statics/src/networks.ts b/modules/statics/src/networks.ts index f839754cdb..92033cb062 100644 --- a/modules/statics/src/networks.ts +++ b/modules/statics/src/networks.ts @@ -2512,6 +2512,24 @@ class PrividiumETHTestnet extends Testnet implements EthereumNetwork { nativeCoinOperationHashPrefix = '8022834'; } +class InkEth extends Mainnet implements EthereumNetwork { + name = 'INK Mainnet'; + family = CoinFamily.INKETH; + explorerUrl = 'https://explorer.inkonchain.com/tx/'; + accountExplorerUrl = 'https://explorer.inkonchain.com/address/'; + chainId = 57073; + nativeCoinOperationHashPrefix = '57073'; +} + +class InkEthTestnet extends Testnet implements EthereumNetwork { + name = 'INK Testnet'; + family = CoinFamily.INKETH; + explorerUrl = 'https://explorer-sepolia.inkonchain.com/tx/'; + accountExplorerUrl = 'https://explorer-sepolia.inkonchain.com/address/'; + chainId = 763373; + nativeCoinOperationHashPrefix = '763373'; +} + class PlumeTestnet extends Testnet implements EthereumNetwork { name = 'PlumeTestnet'; family = CoinFamily.PLUME; @@ -2751,6 +2769,7 @@ export const Networks = { hedera: Object.freeze(new Hedera()), hederaEVM: Object.freeze(new HederaEVM()), hemieth: Object.freeze(new HemiEth()), + inketh: Object.freeze(new InkEth()), hppeth: Object.freeze(new Hppeth()), prividiumeth: Object.freeze(new PrividiumETH()), icp: Object.freeze(new Icp()), @@ -2880,6 +2899,7 @@ export const Networks = { prividiumeth: Object.freeze(new PrividiumETHTestnet()), hederaEVM: Object.freeze(new HederaEVMTestnet()), hemieth: Object.freeze(new HemiEthTestnet()), + inketh: Object.freeze(new InkEthTestnet()), 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 563f4ea564..fa5dc86aaa 100644 --- a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts +++ b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts @@ -101,6 +101,7 @@ export const expectedColdFeatures = { 'hash', 'hbarevm', 'hemieth', + 'inketh', 'hoodeth', 'hppeth', 'icp', @@ -178,6 +179,7 @@ export const expectedColdFeatures = { 'th', 'thbarevm', 'themieth', + 'tinketh', 'thoodeth', 'thppeth', 'tjovayeth',