From 65a719de07d40eb5cdcd6623cec91eed0ab4e53c Mon Sep 17 00:00:00 2001 From: Mohammed Ryaan Date: Mon, 24 Nov 2025 19:23:30 +0530 Subject: [PATCH] feat: add jovay eth chain config TICKET: COIN-6592 --- modules/bitgo/test/v2/unit/keychains.ts | 1 + modules/sdk-core/src/bitgo/environments.ts | 6 +++ modules/statics/src/allCoinsAndTokens.ts | 40 +++++++++++++++++++ modules/statics/src/base.ts | 2 + modules/statics/src/networks.ts | 20 ++++++++++ .../unit/fixtures/expectedColdFeatures.ts | 2 + 6 files changed, 71 insertions(+) diff --git a/modules/bitgo/test/v2/unit/keychains.ts b/modules/bitgo/test/v2/unit/keychains.ts index 1b0cf0bbec..d25fe2d695 100644 --- a/modules/bitgo/test/v2/unit/keychains.ts +++ b/modules/bitgo/test/v2/unit/keychains.ts @@ -101,6 +101,7 @@ describe('V2 Keychains', function () { n.asset !== UnderlyingAsset.FLRP && n.asset !== UnderlyingAsset.FLUENTETH && n.asset !== UnderlyingAsset.MANTLE && + n.asset !== UnderlyingAsset.JOVAYETH && coinFamilyValues.includes(n.name) ); diff --git a/modules/sdk-core/src/bitgo/environments.ts b/modules/sdk-core/src/bitgo/environments.ts index ca24d40f86..614a93efb8 100644 --- a/modules/sdk-core/src/bitgo/environments.ts +++ b/modules/sdk-core/src/bitgo/environments.ts @@ -280,6 +280,9 @@ const mainnetBase: EnvironmentTemplate = { mantle: { baseUrl: 'https://api.mantlescan.xyz/api', }, + jovayeth: { + baseUrl: 'https://api.zan.top/node/v1/jovay/mainnet/', + }, }, icpNodeUrl: 'https://ic0.app', worldExplorerBaseUrl: 'https://worldscan.org/', @@ -427,6 +430,9 @@ const testnetBase: EnvironmentTemplate = { mantle: { baseUrl: 'https://api-sepolia.mantlescan.xyz/api', }, + jovayeth: { + baseUrl: 'https://api.zan.top/node/v1/jovay/testnet/', + }, }, 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 390b82d0e5..a1a96dfd04 100644 --- a/modules/statics/src/allCoinsAndTokens.ts +++ b/modules/statics/src/allCoinsAndTokens.ts @@ -2238,6 +2238,46 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_WP, ] ), + account( + 'd7ed1781-23ff-49b7-be6b-7fec13e1c452', + 'jovayeth', + 'Jovay Ethereum', + Networks.main.jovayeth, + 18, + UnderlyingAsset.JOVAYETH, + BaseUnit.ETH, + [ + ...EVM_FEATURES, + CoinFeature.SHARED_EVM_SIGNING, + CoinFeature.SHARED_EVM_SDK, + CoinFeature.EVM_COMPATIBLE_IMS, + CoinFeature.EVM_COMPATIBLE_UI, + CoinFeature.EVM_COMPATIBLE_WP, + ], + KeyCurve.Secp256k1, + '', + 'JovayETH' + ), + account( + '200f9547-79ad-48a3-bc8f-3f074d51bc35', + 'tjovayeth', + 'Testnet Jovay Ethereum', + Networks.test.jovayeth, + 18, + UnderlyingAsset.JOVAYETH, + BaseUnit.ETH, + [ + ...EVM_FEATURES, + CoinFeature.SHARED_EVM_SIGNING, + CoinFeature.SHARED_EVM_SDK, + CoinFeature.EVM_COMPATIBLE_IMS, + CoinFeature.EVM_COMPATIBLE_UI, + CoinFeature.EVM_COMPATIBLE_WP, + ], + KeyCurve.Secp256k1, + '', + 'TJovayETH' + ), canton( '07385320-5a4f-48e9-97a5-86d4be9f24b0', 'canton', diff --git a/modules/statics/src/base.ts b/modules/statics/src/base.ts index cf7188c330..f432c86af4 100644 --- a/modules/statics/src/base.ts +++ b/modules/statics/src/base.ts @@ -67,6 +67,7 @@ export enum CoinFamily { IOTA = 'iota', IRYS = 'irys', ISLM = 'islm', + JOVAYETH = 'jovayeth', KAIA = 'kaia', KAVA = 'kava', KAVAEVM = 'kavaevm', @@ -568,6 +569,7 @@ export enum UnderlyingAsset { IOTA = 'iota', IRYS = 'irys', ISLM = 'islm', + JOVAYETH = 'jovayeth', KAIA = 'kaia', KAVA = 'kava', KAVAEVM = 'kavaevm', diff --git a/modules/statics/src/networks.ts b/modules/statics/src/networks.ts index 8ee4d737e4..5503e1a2c6 100644 --- a/modules/statics/src/networks.ts +++ b/modules/statics/src/networks.ts @@ -1527,6 +1527,24 @@ class MantleTestnet extends Testnet implements EthereumNetwork { nativeCoinOperationHashPrefix = '5003'; } +class JovayETH extends Mainnet implements EthereumNetwork { + name = 'Jovay Ethereum'; + family = CoinFamily.JOVAYETH; + explorerUrl = 'https://explorer.jovay.io/tx/'; + accountExplorerUrl = 'https://explorer.jovay.io/address/'; + chainId = 5734951; + nativeCoinOperationHashPrefix = '5734951'; +} + +class JovayETHTestnet extends Testnet implements EthereumNetwork { + name = 'Testnet Jovay Ethereum'; + family = CoinFamily.JOVAYETH; + explorerUrl = 'https://sepolia-explorer.jovay.io/tx/'; + accountExplorerUrl = 'https://sepolia-explorer.jovay.io/address/'; + chainId = 2019775; + nativeCoinOperationHashPrefix = '2019775'; +} + class CreditcoinTestnet extends Testnet implements EthereumNetwork { name = 'CreditcoinTestnet'; family = CoinFamily.CTC; @@ -2122,6 +2140,7 @@ export const Networks = { injective: Object.freeze(new Injective()), irys: Object.freeze(new Irys()), islm: Object.freeze(new Islm()), + jovayeth: Object.freeze(new JovayETH()), kaia: Object.freeze(new Kaia()), kava: Object.freeze(new Kava()), kavaevm: Object.freeze(new KavaEVM()), @@ -2225,6 +2244,7 @@ export const Networks = { iota: Object.freeze(new IotaTestnet()), irys: Object.freeze(new IrysTestnet()), islm: Object.freeze(new IslmTestnet()), + jovayeth: Object.freeze(new JovayETHTestnet()), kava: Object.freeze(new KavaTestnet()), kavaevm: Object.freeze(new KavaEVMTestnet()), kovan: Object.freeze(new Kovan()), diff --git a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts index e9ca99d824..79c965b832 100644 --- a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts +++ b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts @@ -96,6 +96,7 @@ export const expectedColdFeatures = { 'irys', 'islm', 'injective', + 'jovayeth', 'kaia', 'kava', 'megaeth', @@ -146,6 +147,7 @@ export const expectedColdFeatures = { 'tflow', 'tfluenteth', 'thbarevm', + 'tjovayeth', 'tog', 'tmegaeth', 'tmon',