From c760ffcafe87a35432d91ec3ff100a0a2ab8b0ef Mon Sep 17 00:00:00 2001 From: Shubham Damkondwar Date: Tue, 2 Dec 2025 11:57:16 +0530 Subject: [PATCH] feat: add DogeOS and DogeOS Testnet support Ticket: WIN-8082 --- modules/bitgo/test/v2/unit/keychains.ts | 1 + modules/sdk-core/src/bitgo/environments.ts | 6 +++ modules/statics/src/allCoinsAndTokens.ts | 43 +++++++++++++++++++ modules/statics/src/base.ts | 2 + modules/statics/src/networks.ts | 20 +++++++++ .../unit/fixtures/expectedColdFeatures.ts | 2 + 6 files changed, 74 insertions(+) diff --git a/modules/bitgo/test/v2/unit/keychains.ts b/modules/bitgo/test/v2/unit/keychains.ts index 39056f9eb2..5ee7499812 100644 --- a/modules/bitgo/test/v2/unit/keychains.ts +++ b/modules/bitgo/test/v2/unit/keychains.ts @@ -104,6 +104,7 @@ describe('V2 Keychains', function () { n.asset !== UnderlyingAsset.JOVAYETH && n.asset !== UnderlyingAsset.OKB && n.asset !== UnderlyingAsset.MORPH && + n.asset !== UnderlyingAsset.DOGEOS && coinFamilyValues.includes(n.name) ); diff --git a/modules/sdk-core/src/bitgo/environments.ts b/modules/sdk-core/src/bitgo/environments.ts index 4c8154719a..d8a1054628 100644 --- a/modules/sdk-core/src/bitgo/environments.ts +++ b/modules/sdk-core/src/bitgo/environments.ts @@ -289,6 +289,9 @@ const mainnetBase: EnvironmentTemplate = { morph: { baseUrl: 'https://explorer-api-hoodi.morphl2.io', // TODO: WIN-8134 add mainnet url when available }, + dogeos: { + baseUrl: 'https://blockscout.testnet.dogeos.com', //TODO: WIN-8082 => add mainnet url when available + }, }, icpNodeUrl: 'https://ic0.app', worldExplorerBaseUrl: 'https://worldscan.org/', @@ -445,6 +448,9 @@ const testnetBase: EnvironmentTemplate = { morph: { baseUrl: 'https://explorer-api-hoodi.morphl2.io', }, + dogeos: { + baseUrl: 'https://blockscout.testnet.dogeos.com', + }, }, 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 8f67babda5..e5176bdc97 100644 --- a/modules/statics/src/allCoinsAndTokens.ts +++ b/modules/statics/src/allCoinsAndTokens.ts @@ -2356,6 +2356,49 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_WP, ] ), + account( + '887eebff-5d50-47f7-aea5-905e25c2e846', + 'tdogeos', + 'DogeOS Testnet', + Networks.test.dogeos, + 18, + UnderlyingAsset.DOGEOS, + BaseUnit.ETH, + [ + ...EVM_FEATURES, + CoinFeature.SHARED_EVM_SIGNING, + CoinFeature.SHARED_EVM_SDK, + CoinFeature.EVM_COMPATIBLE_IMS, + CoinFeature.EVM_COMPATIBLE_UI, + CoinFeature.EVM_NON_BITGO_RECOVERY, + CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + ], + KeyCurve.Secp256k1, + '', + 'TDogeOS' + ), + account( + '7d69a368-ea4b-422d-bb21-38812fb5a418', + 'dogeos', + 'DogeOS', + Networks.main.dogeos, + 18, + UnderlyingAsset.DOGEOS, + BaseUnit.ETH, + [ + ...EVM_FEATURES, + CoinFeature.SHARED_EVM_SIGNING, + CoinFeature.SHARED_EVM_SDK, + CoinFeature.EVM_COMPATIBLE_IMS, + CoinFeature.EVM_COMPATIBLE_UI, + CoinFeature.EVM_NON_BITGO_RECOVERY, + CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + CoinFeature.SUPPORTS_ERC20, + ], + KeyCurve.Secp256k1, + '', + 'DogeOS' + ), canton( '07385320-5a4f-48e9-97a5-86d4be9f24b0', 'canton', diff --git a/modules/statics/src/base.ts b/modules/statics/src/base.ts index 91b33b7eb4..ba296f90c9 100644 --- a/modules/statics/src/base.ts +++ b/modules/statics/src/base.ts @@ -47,6 +47,7 @@ export enum CoinFamily { CSPR = 'cspr', DASH = 'dash', DOGE = 'doge', + DOGEOS = 'dogeos', DOT = 'dot', ETH = 'eth', ETH2 = 'eth2', @@ -951,6 +952,7 @@ export enum UnderlyingAsset { DODO = 'dodo', DOG = 'dog', DOGE = 'doge', + DOGEOS = 'dogeos', DOGEBEAR = 'dogebear', DOGEBEAR2021 = 'dogebear2021', DOGEBULL = 'dogebull', diff --git a/modules/statics/src/networks.ts b/modules/statics/src/networks.ts index 80be0b2546..c8f53f8922 100644 --- a/modules/statics/src/networks.ts +++ b/modules/statics/src/networks.ts @@ -2162,6 +2162,24 @@ class CantonTestnet extends Testnet implements BaseNetwork { explorerUrl = 'https://devnet.ccview.io/updates/'; } +class Dogeos extends Mainnet implements EthereumNetwork { + name = 'Doge OS'; + family = CoinFamily.DOGEOS; + explorerUrl = 'https://blockscout.testnet.dogeos.com/tx/'; //TODO: WIN-8082 => add mainnet url when available + accountExplorerUrl = "'https://blockscout.testnet.dogeos.com/address/"; //TODO: WIN-8082 => add mainnet url when available + chainId = 1234567; ////TODO: WIN-8082 => add mainnet chainId when available + nativeCoinOperationHashPrefix = '1234567'; //TODO: WIN-8082 => add when mainnet details available +} + +class DogeosTestnet extends Testnet implements EthereumNetwork { + name = 'Doge OS Testnet'; + family = CoinFamily.DOGEOS; + explorerUrl = 'https://blockscout.testnet.dogeos.com/tx/'; + accountExplorerUrl = 'https://blockscout.testnet.dogeos.com/address/'; + chainId = 6281971; + nativeCoinOperationHashPrefix = '6281971'; +} + export const Networks = { main: { ada: Object.freeze(new Ada()), @@ -2190,6 +2208,7 @@ export const Networks = { cronos: Object.freeze(new Cronos()), dash: Object.freeze(new Dash()), dogecoin: Object.freeze(new Dogecoin()), + dogeos: Object.freeze(new Dogeos()), dot: Object.freeze(new PolkadotAssetHub()), eCash: Object.freeze(new ECash()), eos: Object.freeze(new Eos()), @@ -2295,6 +2314,7 @@ export const Networks = { cronos: Object.freeze(new CronosTestnet()), dash: Object.freeze(new DashTestnet()), dogecoin: Object.freeze(new DogecoinTestnet()), + dogeos: Object.freeze(new DogeosTestnet()), dot: Object.freeze(new WestendAssetHub()), eCash: Object.freeze(new ECashTestnet()), eos: Object.freeze(new EosTestnet()), diff --git a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts index 03b7b87f79..46c7e5596e 100644 --- a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts +++ b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts @@ -83,6 +83,7 @@ export const expectedColdFeatures = { 'coredao', 'coreum', 'cronos', + 'dogeos', 'dot', 'fetchai', 'flow', @@ -144,6 +145,7 @@ export const expectedColdFeatures = { 'tcoredao', 'tcoreum', 'tcronos', + 'tdogeos', 'tdot', 'tfetchai', 'tflow',