From 3d5723d1570b8bc994b80c7d4bd7b8dec303d53d Mon Sep 17 00:00:00 2001 From: Alok Baltiyal Date: Tue, 16 Jun 2026 14:15:58 +0530 Subject: [PATCH] feat(statics): onboard GoUSD and SCAASACME tokens Add GoUSD stablecoin on Solana (prod/testnet/staging) and Tempo (prod/testnet/staging), and SCAASACME (Acme USD) demo token on Hoodi ETH, BSC testnet, and Tempo testnet/staging. All tokens include on-chain and OFC counterparts. - GoUSD: 6 decimals, Token-2022 program on Solana - SCAASACME: 18 decimals on EVM chains, 6 on Tempo - No production entries for SCAASACME (staging/test only) TICKET: SCAAS-9540, SCAAS-9748 --- .../sdk-coin-tempo/test/resources/tempo.ts | 16 +++++ modules/statics/src/allCoinsAndTokens.ts | 70 +++++++++++++++++++ modules/statics/src/base.ts | 12 ++++ modules/statics/src/coins/bscTokens.ts | 18 +++++ modules/statics/src/coins/erc20Coins.ts | 24 +++++++ modules/statics/src/coins/ofcCoins.ts | 67 ++++++++++++++++++ modules/statics/src/coins/ofcErc20Coins.ts | 28 ++++++++ modules/statics/src/coins/solTokens.ts | 33 +++++++++ .../test/unit/tokenNamingConvention.ts | 2 + 9 files changed, 270 insertions(+) diff --git a/modules/sdk-coin-tempo/test/resources/tempo.ts b/modules/sdk-coin-tempo/test/resources/tempo.ts index 66dc9ca17b..afa64607a7 100644 --- a/modules/sdk-coin-tempo/test/resources/tempo.ts +++ b/modules/sdk-coin-tempo/test/resources/tempo.ts @@ -31,6 +31,22 @@ export const TESTNET_TOKENS = { address: '0x20c000000000000000000000e4662b69291ab60a', name: 'ttempo:stgusd1', }, + gousd: { + address: '0x20c000000000000000000000abbd755acb373233', + name: 'ttempo:gousd', + }, + stgGoUSD: { + address: '0x20c0000000000000000000004005ba0e59b1e1e5', + name: 'ttempo:stggousd', + }, + scaasacme: { + address: '0x20c0000000000000000000007b20a5729bbc4f2d', + name: 'ttempo:scaasacme', + }, + stgScaasacme: { + address: '0x20c000000000000000000000d846672b70a3dbf9', + name: 'ttempo:stgscaasacme', + }, }; // Valid checksummed test recipient address diff --git a/modules/statics/src/allCoinsAndTokens.ts b/modules/statics/src/allCoinsAndTokens.ts index 86896a139b..7291d2f0d6 100644 --- a/modules/statics/src/allCoinsAndTokens.ts +++ b/modules/statics/src/allCoinsAndTokens.ts @@ -3550,6 +3550,20 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, ] ), + tip20Token( + '95acea50-87a0-4e7f-b84e-e98ad27ee757', + 'tempo:gousd', + 'goUSD', + 6, + '0x20c0000000000000000000006d194f9810e6f886', + UnderlyingAsset['tempo:gousd'], + [ + ...TEMPO_FEATURES, + CoinFeature.STABLECOIN, + CoinFeature.EVM_NON_BITGO_RECOVERY, + CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + ] + ), tip20Token( '9dd63f8e-3f35-4d10-a623-fe7358ad66a4', 'tempo:usdt0', @@ -3649,6 +3663,62 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, ] ), + ttip20Token( + '07cd2cf3-490d-4776-84cf-e1bb47cf3cc0', + 'ttempo:gousd', + 'Testnet goUSD', + 6, + '0x20c000000000000000000000abbd755acb373233', + UnderlyingAsset['ttempo:gousd'], + [ + ...TEMPO_FEATURES, + CoinFeature.STABLECOIN, + CoinFeature.EVM_NON_BITGO_RECOVERY, + CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + ] + ), + ttip20Token( + '0ac48bf9-e8dd-442e-ba8e-a800b525f68a', + 'ttempo:stggousd', + 'Testnet goUSD', + 6, + '0x20c0000000000000000000004005ba0e59b1e1e5', + UnderlyingAsset['ttempo:stggousd'], + [ + ...TEMPO_FEATURES, + CoinFeature.STABLECOIN, + CoinFeature.EVM_NON_BITGO_RECOVERY, + CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + ] + ), + ttip20Token( + '79428fe9-cfdb-43b2-8b95-9d0ca2c04a8d', + 'ttempo:stgscaasacme', + 'Testnet Acme USD', + 6, + '0x20c000000000000000000000d846672b70a3dbf9', + UnderlyingAsset['ttempo:stgscaasacme'], + [ + ...TEMPO_FEATURES, + CoinFeature.STABLECOIN, + CoinFeature.EVM_NON_BITGO_RECOVERY, + CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + ] + ), + ttip20Token( + '250efa18-66a4-43c7-a01c-c037505d0d19', + 'ttempo:scaasacme', + 'Testnet Acme USD', + 6, + '0x20c0000000000000000000007b20a5729bbc4f2d', + UnderlyingAsset['ttempo:scaasacme'], + [ + ...TEMPO_FEATURES, + CoinFeature.STABLECOIN, + CoinFeature.EVM_NON_BITGO_RECOVERY, + CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + ] + ), canton( '07385320-5a4f-48e9-97a5-86d4be9f24b0', 'canton', diff --git a/modules/statics/src/base.ts b/modules/statics/src/base.ts index 2766be0ca1..da462c857a 100644 --- a/modules/statics/src/base.ts +++ b/modules/statics/src/base.ts @@ -1222,6 +1222,9 @@ export enum UnderlyingAsset { 'tsol:stggospcx' = 'tsol:stggospcx', 'sol:gospcx' = 'sol:gospcx', 'sol:usd1' = 'sol:usd1', + 'sol:gousd' = 'sol:gousd', + 'tsol:gousd' = 'tsol:gousd', + 'tsol:stggousd' = 'tsol:stggousd', 'sol:usdm1' = 'sol:usdm1', 'tsol:slnd' = 'tsol:slnd', 'tsol:orca' = 'tsol:orca', @@ -1923,6 +1926,8 @@ export enum UnderlyingAsset { 'hteth:stgsofid' = 'hteth:stgsofid', 'hteth:usd1' = 'hteth:usd1', 'hteth:stgusd1' = 'hteth:stgusd1', + 'hteth:stgscaasacme' = 'hteth:stgscaasacme', + 'hteth:scaasacme' = 'hteth:scaasacme', 'hteth:cusd' = 'hteth:cusd', 'hteth:fyusd' = 'hteth:fyusd', 'hteth:stgcusd' = 'hteth:stgcusd', @@ -3111,6 +3116,8 @@ export enum UnderlyingAsset { 'tbsc:busd' = 'tbsc:busd', 'tbsc:usd1' = 'tbsc:usd1', 'tbsc:stgusd1' = 'tbsc:stgusd1', + 'tbsc:stgscaasacme' = 'tbsc:stgscaasacme', + 'tbsc:scaasacme' = 'tbsc:scaasacme', 'bsc:city' = 'bsc:city', 'bsc:fdusd' = 'bsc:fdusd', 'bsc:floki' = 'bsc:floki', @@ -4061,6 +4068,7 @@ export enum UnderlyingAsset { 'tempo:usdc' = 'tempo:usdc', 'tempo:usd1' = 'tempo:usd1', 'tempo:usdt0' = 'tempo:usdt0', + 'tempo:gousd' = 'tempo:gousd', // Tempo testnet tokens 'ttempo:pathusd' = 'ttempo:pathusd', @@ -4069,6 +4077,10 @@ export enum UnderlyingAsset { 'ttempo:thetausd' = 'ttempo:thetausd', 'ttempo:usd1' = 'ttempo:usd1', 'ttempo:stgusd1' = 'ttempo:stgusd1', + 'ttempo:gousd' = 'ttempo:gousd', + 'ttempo:stggousd' = 'ttempo:stggousd', + 'ttempo:stgscaasacme' = 'ttempo:stgscaasacme', + 'ttempo:scaasacme' = 'ttempo:scaasacme', // Prividium Ethereum testnet tokens 'tprividiumeth:USB-ESCROW-D' = 'tprividiumeth:USB-ESCROW-D', diff --git a/modules/statics/src/coins/bscTokens.ts b/modules/statics/src/coins/bscTokens.ts index f680665534..6a05397a07 100644 --- a/modules/statics/src/coins/bscTokens.ts +++ b/modules/statics/src/coins/bscTokens.ts @@ -1715,4 +1715,22 @@ export const bscTokens = [ UnderlyingAsset['bsc:hybond'], BSC_TOKEN_FEATURES ), + tbscToken( + '2d4e4f61-1acd-416c-9d38-3d80d95a38d4', + 'tbsc:stgscaasacme', + 'Testnet Acme USD', + 6, + '0x3273bfa01f481b13b5fb31f3d47252ea3da2308a', + UnderlyingAsset['tbsc:stgscaasacme'], + [...BSC_TOKEN_FEATURES, CoinFeature.STABLECOIN] + ), + tbscToken( + '661d9dfc-a267-47e9-ba45-cfb598c58eb3', + 'tbsc:scaasacme', + 'Testnet Acme USD', + 6, + '0x1494a12f1a60ed1d21ab98f00eb629e5cd16bc17', + UnderlyingAsset['tbsc:scaasacme'], + [...BSC_TOKEN_FEATURES, CoinFeature.STABLECOIN] + ), ]; diff --git a/modules/statics/src/coins/erc20Coins.ts b/modules/statics/src/coins/erc20Coins.ts index 8d7fa8b5bb..e37df1ee02 100644 --- a/modules/statics/src/coins/erc20Coins.ts +++ b/modules/statics/src/coins/erc20Coins.ts @@ -12857,6 +12857,30 @@ export const erc20Coins = [ undefined, Networks.test.hoodi ), + terc20( + '5add4bd7-9889-4639-b130-083d083ebbe4', + 'hteth:stgscaasacme', + 'Testnet Acme USD', + 6, + '0x3273bfa01f481b13b5fb31f3d47252ea3da2308a', + UnderlyingAsset['hteth:stgscaasacme'], + [...ACCOUNT_COIN_DEFAULT_FEATURES, CoinFeature.STABLECOIN], + undefined, + undefined, + Networks.test.hoodi + ), + terc20( + '3ecfecc1-c910-483f-af54-b737452ceb00', + 'hteth:scaasacme', + 'Testnet Acme USD', + 6, + '0xadebc52bb71dbc09729d6c0727a507fd42b2944e', + UnderlyingAsset['hteth:scaasacme'], + [...ACCOUNT_COIN_DEFAULT_FEATURES, CoinFeature.STABLECOIN], + undefined, + undefined, + Networks.test.hoodi + ), terc20( '8e4f9c4c-2b03-4ad4-8019-ace4bbda3acd', 'hteth:sofid', diff --git a/modules/statics/src/coins/ofcCoins.ts b/modules/statics/src/coins/ofcCoins.ts index 8d8c9bcd5e..b91c5bf3ea 100644 --- a/modules/statics/src/coins/ofcCoins.ts +++ b/modules/statics/src/coins/ofcCoins.ts @@ -1614,6 +1614,10 @@ export const ofcCoins = [ ...SOL_TOKEN_FEATURES, CoinFeature.STABLECOIN, ]), + ofcsolToken('4cde3d6b-1b58-49f2-a689-6242d819ed3d', 'ofcsol:gousd', 'goUSD', 6, UnderlyingAsset['sol:gousd'], [ + ...SOL_TOKEN_FEATURES, + CoinFeature.STABLECOIN, + ]), ofcsolToken('d398e9e1-1a3e-4307-9e31-e1dbc03aa0f0', 'ofcsol:sofid', 'SoFiUSD', 6, UnderlyingAsset['sol:sofid'], [ ...SOL_TOKEN_FEATURES, CoinFeature.STABLECOIN, @@ -2024,6 +2028,22 @@ export const ofcCoins = [ UnderlyingAsset['sol:usd1'], [...SOL_TOKEN_FEATURES, CoinFeature.STABLECOIN] ), + tofcsolToken( + 'cc4c424f-d4e1-4674-8c5f-a1f6754ebde5', + 'ofctsol:gousd', + 'Testnet goUSD', + 6, + UnderlyingAsset['tsol:gousd'], + [...SOL_TOKEN_FEATURES, CoinFeature.STABLECOIN] + ), + tofcsolToken( + '0ed96aeb-fdb5-4426-81b2-05791d4c21d8', + 'ofctsol:stggousd', + 'Testnet goUSD', + 6, + UnderlyingAsset['tsol:stggousd'], + [...SOL_TOKEN_FEATURES, CoinFeature.STABLECOIN] + ), tofcsolToken( 'c9ee21a5-d000-45b6-a045-cb307810434b', 'ofctsol:trump', @@ -3218,6 +3238,24 @@ export const ofcCoins = [ undefined, [CoinFeature.STABLECOIN] ), + tofcBscToken( + 'b94eff50-b8aa-4503-9b56-c6f7fb32bcde', + 'ofctbsc:stgscaasacme', + 'Testnet Acme USD', + 6, + UnderlyingAsset['tbsc:stgscaasacme'], + undefined, + [CoinFeature.STABLECOIN] + ), + tofcBscToken( + '6e4c653e-a614-4a68-8a6b-eba76fb37515', + 'ofctbsc:scaasacme', + 'Testnet Acme USD', + 6, + UnderlyingAsset['tbsc:scaasacme'], + undefined, + [CoinFeature.STABLECOIN] + ), ofcPolygonErc20( '547ce68f-cb4c-4618-bef3-9a0ebe9facd2', 'ofcpolygon:sbc', @@ -5104,6 +5142,7 @@ export const ofcCoins = [ ), ofcTempoToken('c9a90ee0-6546-413c-9cbe-94fdc14985c5', 'ofctempo:usdc', 'USDC', 6, UnderlyingAsset['tempo:usdc']), ofcTempoToken('05ac1283-5e72-4cba-8b0f-38cbd23a25c6', 'ofctempo:usd1', 'USD1', 6, UnderlyingAsset['tempo:usd1']), + ofcTempoToken('11894b40-38da-4c52-80c3-a824bb452e69', 'ofctempo:gousd', 'goUSD', 6, UnderlyingAsset['tempo:gousd']), ofcTempoToken('554f9084-4ac8-466a-8675-3de33ffd47d7', 'ofctempo:usdt0', 'USDT0', 6, UnderlyingAsset['tempo:usdt0']), // Tempo testnet OFC tokens tofcTempoToken( @@ -5148,6 +5187,34 @@ export const ofcCoins = [ 6, UnderlyingAsset['ttempo:stgusd1'] ), + tofcTempoToken( + '7cbcd988-0cec-4d42-849c-d6a00591d862', + 'ofcttempo:gousd', + 'Testnet goUSD', + 6, + UnderlyingAsset['ttempo:gousd'] + ), + tofcTempoToken( + '3c728a90-7dc9-4ae9-962f-e18417dffdc2', + 'ofcttempo:stggousd', + 'Testnet goUSD', + 6, + UnderlyingAsset['ttempo:stggousd'] + ), + tofcTempoToken( + '8876a3e5-5b6d-4184-8c26-0520b5a4a89b', + 'ofcttempo:stgscaasacme', + 'Testnet Acme USD', + 6, + UnderlyingAsset['ttempo:stgscaasacme'] + ), + tofcTempoToken( + '3407563d-4e99-46d5-8d87-16ef1adeb9b3', + 'ofcttempo:scaasacme', + 'Testnet Acme USD', + 6, + UnderlyingAsset['ttempo:scaasacme'] + ), ofc('6f0246cf-b792-483a-b720-9755b158c614', 'ofcunieth', 'Unichain', 18, UnderlyingAsset.UNIETH, CoinKind.CRYPTO), tofc( '4efb1377-8439-410a-b460-2aeeff944fb2', diff --git a/modules/statics/src/coins/ofcErc20Coins.ts b/modules/statics/src/coins/ofcErc20Coins.ts index 19fb115e0d..392bff07e7 100644 --- a/modules/statics/src/coins/ofcErc20Coins.ts +++ b/modules/statics/src/coins/ofcErc20Coins.ts @@ -4568,6 +4568,34 @@ export const tOfcErc20Coins = [ undefined, 'hteth' ), + tofcerc20( + '59a31295-88d3-4142-9e88-c8e500888aef', + 'ofchteth:stgscaasacme', + 'Testnet Acme USD', + 6, + UnderlyingAsset['hteth:stgscaasacme'], + undefined, + [CoinFeature.STABLECOIN], + undefined, + undefined, + undefined, + undefined, + 'hteth' + ), + tofcerc20( + '03ebbbe2-6ba3-45c9-ad82-4f86ae48be69', + 'ofchteth:scaasacme', + 'Testnet Acme USD', + 6, + UnderlyingAsset['hteth:scaasacme'], + undefined, + [CoinFeature.STABLECOIN], + undefined, + undefined, + undefined, + undefined, + 'hteth' + ), tofcerc20( '145b2e09-453d-4861-8f54-5791d295bd96', 'ofchteth:stgsofid', diff --git a/modules/statics/src/coins/solTokens.ts b/modules/statics/src/coins/solTokens.ts index 776e8520f6..e3c52b7496 100644 --- a/modules/statics/src/coins/solTokens.ts +++ b/modules/statics/src/coins/solTokens.ts @@ -4099,4 +4099,37 @@ export const solTokens = [ SOL_TOKEN_FEATURES, ProgramID.Token2022ProgramId ), + solToken( + '7b7edb2a-3952-4083-8df9-cf16baa8d82c', + 'sol:gousd', + 'goUSD', + 6, + '7vXcrS2iHjBhQwP6RhAPhZaTGKjodfGPr2H3GDaqmnPN', + '7vXcrS2iHjBhQwP6RhAPhZaTGKjodfGPr2H3GDaqmnPN', + UnderlyingAsset['sol:gousd'], + [...SOL_TOKEN_FEATURES, CoinFeature.STABLECOIN], + ProgramID.Token2022ProgramId + ), + tsolToken( + '5f4de23d-67b5-4a8f-bb31-9c1c72f62489', + 'tsol:gousd', + 'Testnet goUSD', + 6, + 'BtY9vAphvWWtwFoThckHP9ciY9Mvy2nLyhiYKeRhb3Ds', + 'BtY9vAphvWWtwFoThckHP9ciY9Mvy2nLyhiYKeRhb3Ds', + UnderlyingAsset['tsol:gousd'], + [...SOL_TOKEN_FEATURES, CoinFeature.STABLECOIN], + ProgramID.Token2022ProgramId + ), + tsolToken( + '0b18da3c-a072-42cb-a3bf-3818af269287', + 'tsol:stggousd', + 'Testnet goUSD', + 6, + 'Ec7mXJZtXnbn34Mt9LaLZe3DRmEZmWCxcNrAmvK4HKaS', + 'Ec7mXJZtXnbn34Mt9LaLZe3DRmEZmWCxcNrAmvK4HKaS', + UnderlyingAsset['tsol:stggousd'], + [...SOL_TOKEN_FEATURES, CoinFeature.STABLECOIN], + ProgramID.Token2022ProgramId + ), ]; diff --git a/modules/statics/test/unit/tokenNamingConvention.ts b/modules/statics/test/unit/tokenNamingConvention.ts index 203ef7d254..3dda883fbd 100644 --- a/modules/statics/test/unit/tokenNamingConvention.ts +++ b/modules/statics/test/unit/tokenNamingConvention.ts @@ -63,6 +63,8 @@ describe('Token Naming Convention Tests', function () { 'hteth:qxmp', 'hteth:stgqxmp', 'hteth:usd1', + 'hteth:stgscaasacme', + 'hteth:scaasacme', 'hteth:amstest', 'hterc18dp', 'hteth:bgerchv2',