From 6e9c2b54235df008c7cde35d0a327118e588962e Mon Sep 17 00:00:00 2001 From: Kushagra Sharma Date: Mon, 18 May 2026 09:00:39 +0000 Subject: [PATCH 1/3] feat(statics): add Katana Network (katanaeth/tkatanaeth) EVM statics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds Katana Network (OP Stack L2, chain IDs 747474 mainnet / 737373 Bokuto testnet). No custom coin module — reuses shared EVM SDK. Ticket: CECHO-808 Session-Id: ce42c66f-0583-4245-91a2-d0a0d5be99a6 Task-Id: 2dfd5a22-d68e-454b-9fe2-deeaae035cb9 --- modules/sdk-core/src/bitgo/environments.ts | 6 ++++ modules/statics/src/allCoinsAndTokens.ts | 36 +++++++++++++++++++ modules/statics/src/base.ts | 2 ++ modules/statics/src/networks.ts | 20 +++++++++++ .../unit/fixtures/expectedColdFeatures.ts | 2 ++ 5 files changed, 66 insertions(+) diff --git a/modules/sdk-core/src/bitgo/environments.ts b/modules/sdk-core/src/bitgo/environments.ts index 21507c099c..49830a218a 100644 --- a/modules/sdk-core/src/bitgo/environments.ts +++ b/modules/sdk-core/src/bitgo/environments.ts @@ -315,6 +315,9 @@ const mainnetBase: EnvironmentTemplate = { inketh: { baseUrl: 'https://explorer.inkonchain.com/api', }, + katanaeth: { + baseUrl: 'https://katanascan.com/api', + }, prividiumeth: { baseUrl: 'https://explorer.prividium.zksync.dev/api', // TODO: update with mainnet URL when available }, @@ -543,6 +546,9 @@ const testnetBase: EnvironmentTemplate = { tinketh: { baseUrl: 'https://explorer-sepolia.inkonchain.com/api', }, + tkatanaeth: { + baseUrl: 'https://explorer-bokuto.katanarpc.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 82f988b8ed..44647ec3fe 100644 --- a/modules/statics/src/allCoinsAndTokens.ts +++ b/modules/statics/src/allCoinsAndTokens.ts @@ -2478,6 +2478,42 @@ export const allCoinsAndTokens = [ CoinFeature.SUPPORTS_ERC20, ] ), + account( + '0da54d73-c480-4c53-8526-a5990816ac3f', + 'katanaeth', + 'Katana', + Networks.main.katanaeth, + 18, + UnderlyingAsset.KATANAETH, + 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( + 'c82a3444-6f27-426e-9efe-4d3eb6e304a8', + 'tkatanaeth', + 'Testnet Katana', + Networks.test.katanaeth, + 18, + UnderlyingAsset.KATANAETH, + 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 810bf57c63..d1bdf69cc0 100644 --- a/modules/statics/src/base.ts +++ b/modules/statics/src/base.ts @@ -82,6 +82,7 @@ export enum CoinFamily { JOVAYETH = 'jovayeth', KAIA = 'kaia', KASPA = 'kaspa', + KATANAETH = 'katanaeth', // Katana Network L2 KAVACOSMOS = 'kavacosmos', KAVAEVM = 'kavaevm', LNBTC = 'lnbtc', @@ -1352,6 +1353,7 @@ export enum UnderlyingAsset { KARMA = 'karma', KAS = 'kas', KASPA = 'kaspa', + KATANAETH = 'katanaeth', // Katana Network L2 KCASH = 'kcash', KCS = 'kcs', KEEP = 'keep', diff --git a/modules/statics/src/networks.ts b/modules/statics/src/networks.ts index 3d0f1ae216..d666bba730 100644 --- a/modules/statics/src/networks.ts +++ b/modules/statics/src/networks.ts @@ -2549,6 +2549,24 @@ class PrividiumETHTestnet extends Testnet implements EthereumNetwork { nativeCoinOperationHashPrefix = '8022834'; } +class KatanaEth extends Mainnet implements EthereumNetwork { + name = 'Katana'; + family = CoinFamily.KATANAETH; + explorerUrl = 'https://katanascan.com/tx/'; + accountExplorerUrl = 'https://katanascan.com/address/'; + chainId = 747474; + nativeCoinOperationHashPrefix = '747474'; +} + +class KatanaEthTestnet extends Testnet implements EthereumNetwork { + name = 'Testnet Katana'; + family = CoinFamily.KATANAETH; + explorerUrl = 'https://explorer-bokuto.katanarpc.com/tx/'; + accountExplorerUrl = 'https://explorer-bokuto.katanarpc.com/address/'; + chainId = 737373; + nativeCoinOperationHashPrefix = '737373'; +} + class InkEth extends Mainnet implements EthereumNetwork { name = 'INK Mainnet'; family = CoinFamily.INKETH; @@ -2807,6 +2825,7 @@ export const Networks = { hederaEVM: Object.freeze(new HederaEVM()), hemieth: Object.freeze(new HemiEth()), inketh: Object.freeze(new InkEth()), + katanaeth: Object.freeze(new KatanaEth()), hppeth: Object.freeze(new Hppeth()), prividiumeth: Object.freeze(new PrividiumETH()), icp: Object.freeze(new Icp()), @@ -2939,6 +2958,7 @@ export const Networks = { hederaEVM: Object.freeze(new HederaEVMTestnet()), hemieth: Object.freeze(new HemiEthTestnet()), inketh: Object.freeze(new InkEthTestnet()), + katanaeth: Object.freeze(new KatanaEthTestnet()), 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 7ad97b77c2..d86ebc7067 100644 --- a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts +++ b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts @@ -115,6 +115,7 @@ export const expectedColdFeatures = { 'jovayeth', 'kaia', 'kaspa', + 'katanaeth', 'kavacosmos', 'megaeth', 'mantle', @@ -211,6 +212,7 @@ export const expectedColdFeatures = { 'tiota', 'tkaia', 'tkaspa', + 'tkatanaeth', 'tkavacosmos', 'tmantle', 'tmantra', From bd74754d1ca20bfb71ff6678ad2f1260ca6bd766 Mon Sep 17 00:00:00 2001 From: Kushagra Sharma Date: Mon, 18 May 2026 10:43:32 +0000 Subject: [PATCH 2/3] feat(statics): add katanaeth OFC coins and network feature map entry Add ofckatanaeth/ofctkatanaeth OFC coin entries and katanaeth EIP-1559 network feature map entry for Katana Network (OP Stack L2). Ticket: CECHO-1125 Session-Id: ce42c66f-0583-4245-91a2-d0a0d5be99a6 Task-Id: 2dfd5a22-d68e-454b-9fe2-deeaae035cb9 --- modules/statics/src/coins/ofcCoins.ts | 9 +++++++++ modules/statics/src/networkFeatureMapForTokens.ts | 1 + 2 files changed, 10 insertions(+) diff --git a/modules/statics/src/coins/ofcCoins.ts b/modules/statics/src/coins/ofcCoins.ts index fb68b1cd82..2751487e13 100644 --- a/modules/statics/src/coins/ofcCoins.ts +++ b/modules/statics/src/coins/ofcCoins.ts @@ -383,6 +383,15 @@ export const ofcCoins = [ UnderlyingAsset.INKETH, CoinKind.CRYPTO ), + ofc('51ac7f59-576f-460a-b7d7-31ad10e1c201', 'ofckatanaeth', 'Katana', 18, UnderlyingAsset.KATANAETH, CoinKind.CRYPTO), + tofc( + '9738849a-5936-4560-814c-9a3e83bcc30b', + 'ofctkatanaeth', + 'Testnet Katana', + 18, + UnderlyingAsset.KATANAETH, + CoinKind.CRYPTO + ), ofc('f58a94a1-9f67-423a-bfd0-298f1b2411d8', 'ofcscrolleth', 'Scroll', 18, UnderlyingAsset.SCROLLETH, CoinKind.CRYPTO), tofc( '2995fd87-c9b8-4541-a112-17b0f9f74bfc', diff --git a/modules/statics/src/networkFeatureMapForTokens.ts b/modules/statics/src/networkFeatureMapForTokens.ts index ec4fcfc1a0..eecb0f321a 100644 --- a/modules/statics/src/networkFeatureMapForTokens.ts +++ b/modules/statics/src/networkFeatureMapForTokens.ts @@ -41,6 +41,7 @@ export const networkFeatureMapForTokens: Partial Date: Mon, 18 May 2026 11:24:03 +0000 Subject: [PATCH 3/3] fix(statics): fix katanaeth OFC UUIDs and placement in ofcCoins Update ofckatanaeth and ofctkatanaeth to use the pre-generated UUIDs and move their entries to before ofcinketh as required. Ticket: CECHO-808 Session-Id: 959e8742-a797-4a4b-8317-2574e0496b06 Task-Id: 070f3895-7ae2-41e3-b768-467cd0f4d831 --- modules/statics/src/coins/ofcCoins.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/statics/src/coins/ofcCoins.ts b/modules/statics/src/coins/ofcCoins.ts index 2751487e13..251af88fd9 100644 --- a/modules/statics/src/coins/ofcCoins.ts +++ b/modules/statics/src/coins/ofcCoins.ts @@ -374,6 +374,15 @@ export const ofcCoins = [ UnderlyingAsset.LINEAETH, CoinKind.CRYPTO ), + ofc('84fdd183-ee79-478f-af9a-06ff420e654b', 'ofckatanaeth', 'Katana', 18, UnderlyingAsset.KATANAETH, CoinKind.CRYPTO), + tofc( + '4a912718-0ae2-4fbc-ae46-f3561e4b3a2a', + 'ofctkatanaeth', + 'Testnet Katana', + 18, + UnderlyingAsset.KATANAETH, + CoinKind.CRYPTO + ), ofc('b68e22ea-c6b6-458b-87d1-b6b5f79d9648', 'ofcinketh', 'INK', 18, UnderlyingAsset.INKETH, CoinKind.CRYPTO), tofc( '4d79941f-58ea-4fca-a784-93cf7acdf508', @@ -383,15 +392,6 @@ export const ofcCoins = [ UnderlyingAsset.INKETH, CoinKind.CRYPTO ), - ofc('51ac7f59-576f-460a-b7d7-31ad10e1c201', 'ofckatanaeth', 'Katana', 18, UnderlyingAsset.KATANAETH, CoinKind.CRYPTO), - tofc( - '9738849a-5936-4560-814c-9a3e83bcc30b', - 'ofctkatanaeth', - 'Testnet Katana', - 18, - UnderlyingAsset.KATANAETH, - CoinKind.CRYPTO - ), ofc('f58a94a1-9f67-423a-bfd0-298f1b2411d8', 'ofcscrolleth', 'Scroll', 18, UnderlyingAsset.SCROLLETH, CoinKind.CRYPTO), tofc( '2995fd87-c9b8-4541-a112-17b0f9f74bfc',