From e69e56a097e7f11bc47e6ac1b964b48b40190d4c Mon Sep 17 00:00:00 2001 From: Abhijeet Singh Date: Wed, 28 Jan 2026 12:39:44 +0530 Subject: [PATCH] feat(statics): add dYdX L1 chain support Add dYdX as a Cosmos-based L1 blockchain using the shared Cosmos SDK pattern, similar to Kava. This enables offline operations including address generation, transaction building, and validation. COIN-7422 TICKET: COIN-7422 --- modules/statics/src/allCoinsAndTokens.ts | 20 ++++++++++++++ modules/statics/src/base.ts | 2 ++ modules/statics/src/networks.ts | 26 +++++++++++++++++++ modules/statics/test/unit/coins.ts | 2 +- .../unit/fixtures/expectedColdFeatures.ts | 2 ++ 5 files changed, 51 insertions(+), 1 deletion(-) diff --git a/modules/statics/src/allCoinsAndTokens.ts b/modules/statics/src/allCoinsAndTokens.ts index 8b34145763..3e64f03ab4 100644 --- a/modules/statics/src/allCoinsAndTokens.ts +++ b/modules/statics/src/allCoinsAndTokens.ts @@ -1037,6 +1037,26 @@ export const allCoinsAndTokens = [ BaseUnit.KAVA, [...COSMOS_SIDECHAIN_FEATURES, CoinFeature.SHARED_COSMOS_SDK, CoinFeature.SHARED_COSMOS_WP] ), + account( + 'f5a8c3d1-7b2e-4f9a-8c6d-1e3b5a7c9d2f', + 'dydxcosmos', + 'dYdX Cosmos', + Networks.main.dydx, + 18, + UnderlyingAsset.DYDX, + BaseUnit.DYDX, + [...COSMOS_SIDECHAIN_FEATURES, CoinFeature.SHARED_COSMOS_SDK, CoinFeature.SHARED_COSMOS_WP] + ), + account( + 'a2b4c6d8-e1f3-5a7b-9c2d-4e6f8a1b3c5d', + 'tdydxcosmos', + 'Testnet dYdX Cosmos', + Networks.test.dydx, + 18, + UnderlyingAsset.DYDX, + BaseUnit.DYDX, + [...COSMOS_SIDECHAIN_FEATURES, CoinFeature.SHARED_COSMOS_SDK, CoinFeature.SHARED_COSMOS_WP] + ), account( '7df858d5-9da3-4071-ab06-399962ea87b7', 'coreum', diff --git a/modules/statics/src/base.ts b/modules/statics/src/base.ts index 1ab06c11c9..fe9f99de2b 100644 --- a/modules/statics/src/base.ts +++ b/modules/statics/src/base.ts @@ -49,6 +49,7 @@ export enum CoinFamily { DOGE = 'doge', DOGEOS = 'dogeos', DOT = 'dot', + DYDX = 'dydx', ETH = 'eth', ETH2 = 'eth2', ETHW = 'ethw', @@ -3600,6 +3601,7 @@ export enum BaseUnit { IOTA = 'iota', ZETA = 'azeta', KAVA = 'ukava', + DYDX = 'adydx', COREUM = 'ucore', TCOREUM = 'utestcore', // Coreum testnet uses different name for native coin ISLM = 'aISLM', diff --git a/modules/statics/src/networks.ts b/modules/statics/src/networks.ts index f375afafc9..5ccf465511 100644 --- a/modules/statics/src/networks.ts +++ b/modules/statics/src/networks.ts @@ -999,6 +999,30 @@ class KavaTestnet extends Testnet implements CosmosNetwork { validDenoms = ['kava', 'ukava']; } +class Dydx extends Mainnet implements CosmosNetwork { + name = 'Dydx'; + family = CoinFamily.DYDX; + explorerUrl = 'https://www.mintscan.io/dydx/tx/'; + addressPrefix = 'dydx'; + validatorPrefix = 'dydxvaloper'; + denom = 'adydx'; + gasAmount = '5000000000000000'; + gasLimit = 200000; + validDenoms = ['adydx']; +} + +class DydxTestnet extends Testnet implements CosmosNetwork { + name = 'DydxTestnet'; + family = CoinFamily.DYDX; + explorerUrl = 'https://www.mintscan.io/dydx-testnet/tx/'; + addressPrefix = 'dydx'; + validatorPrefix = 'dydxvaloper'; + denom = 'adv4tnt'; + gasAmount = '5000000000000000'; + gasLimit = 200000; + validDenoms = ['adv4tnt']; +} + class Ton extends Mainnet implements AccountNetwork { name = 'Ton'; family = CoinFamily.TON; @@ -2358,6 +2382,7 @@ export const Networks = { dogecoin: Object.freeze(new Dogecoin()), dogeos: Object.freeze(new Dogeos()), dot: Object.freeze(new PolkadotAssetHub()), + dydx: Object.freeze(new Dydx()), eCash: Object.freeze(new ECash()), eos: Object.freeze(new Eos()), ethereum: Object.freeze(new Ethereum()), @@ -2469,6 +2494,7 @@ export const Networks = { dogecoin: Object.freeze(new DogecoinTestnet()), dogeos: Object.freeze(new DogeosTestnet()), dot: Object.freeze(new WestendAssetHub()), + dydx: Object.freeze(new DydxTestnet()), eCash: Object.freeze(new ECashTestnet()), eos: Object.freeze(new EosTestnet()), fiat: Object.freeze(new FiatTestnet()), diff --git a/modules/statics/test/unit/coins.ts b/modules/statics/test/unit/coins.ts index 7d3dde9f75..58cd611a77 100644 --- a/modules/statics/test/unit/coins.ts +++ b/modules/statics/test/unit/coins.ts @@ -878,7 +878,7 @@ coins.forEach((coin, coinName) => { }); if (!coin.isToken && coin.family !== CoinFamily.FIAT) { - if (coin.family !== CoinFamily.THOR) { + if (coin.family !== CoinFamily.THOR && coin.family !== CoinFamily.DYDX) { it(`has expected network type`, function () { coin.network.type.should.eql(coin.name === coin.family ? NetworkType.MAINNET : NetworkType.TESTNET); }); diff --git a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts index febae620d4..87aea006bb 100644 --- a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts +++ b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts @@ -88,6 +88,7 @@ export const expectedColdFeatures = { 'cronos', 'dogeos', 'dot', + 'dydxcosmos', 'fetchai', 'flow', 'fluenteth', @@ -152,6 +153,7 @@ export const expectedColdFeatures = { 'tcronos', 'tdogeos', 'tdot', + 'tdydxcosmos', 'tfetchai', 'tflow', 'tfluenteth',