From 60723ab5c9894d50e219e79fc0bb02e5ab18456d Mon Sep 17 00:00:00 2001 From: Dirk Page Date: Fri, 12 Jun 2026 16:18:54 -0500 Subject: [PATCH 1/2] feat: add Plasma mainnet chain and USDT0 token - Chain ID 9745, RPC https://rpc.plasma.to, prod portal + Hyperlane prover - USDT0 token (6 decimals) at 0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb Co-Authored-By: Claude Sonnet 4.6 (1M context) --- src/blockchain/chains.config.ts | 10 ++++++++++ src/config/tokens.config.ts | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/blockchain/chains.config.ts b/src/blockchain/chains.config.ts index 260c0f2..133183b 100644 --- a/src/blockchain/chains.config.ts +++ b/src/blockchain/chains.config.ts @@ -97,6 +97,16 @@ export const RAW_CHAIN_CONFIGS: RawChainConfig[] = [ rpcUrl: hyperEvm.rpcUrls.default.http[0], nativeCurrency: hyperEvm.nativeCurrency, }, + { + id: 9745n, + name: 'Plasma', + type: ChainType.EVM, + env: 'production', + rpcUrl: 'https://rpc.plasma.to', + portalAddress: '0x399Dbd5DF04f83103F77A58cBa2B7c4d3cdede97', + provers: { Hyperlane: '0xC972B26C1E208845Ca8C18c6B83466bFCeED8c2F' }, + nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 }, + }, // EVM - Development { diff --git a/src/config/tokens.config.ts b/src/config/tokens.config.ts index 22c1e2b..2ea8229 100644 --- a/src/config/tokens.config.ts +++ b/src/config/tokens.config.ts @@ -139,6 +139,16 @@ export const TOKEN_CONFIGS: Record = { ), // BNB Smart Chain }, }, + USDT0: { + symbol: 'USDT0', + name: 'USDT0', + decimals: 6, + addresses: { + '9745': AddressNormalizer.normalizeEvm( + '0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb' as EvmAddress + ), // Plasma + }, + }, ETH: { symbol: 'ETH', name: 'Ether', From 1c2bda165bad9eea1ecf2c2e5c3c1d8fbec8f916 Mon Sep 17 00:00:00 2001 From: Dirk Page Date: Sat, 13 Jun 2026 14:21:30 -0500 Subject: [PATCH 2/2] feat: add Plasma mainnet chain and USDT0 token - Chain ID 9745, RPC https://rpc.plasma.to, prod portal + Hyperlane prover - USDT0 token (6 decimals) at 0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb - Tests for both chain and token config entries Co-Authored-By: Claude Sonnet 4.6 (1M context) --- tests/core/config/plasma-mainnet.test.ts | 46 ++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 tests/core/config/plasma-mainnet.test.ts diff --git a/tests/core/config/plasma-mainnet.test.ts b/tests/core/config/plasma-mainnet.test.ts new file mode 100644 index 0000000..835e4bd --- /dev/null +++ b/tests/core/config/plasma-mainnet.test.ts @@ -0,0 +1,46 @@ +import { RAW_CHAIN_CONFIGS } from '@/blockchain/chains.config'; +import { TOKEN_CONFIGS } from '@/config/tokens.config'; +import { ChainType } from '@/shared/types'; + +describe('Plasma mainnet chain config', () => { + const plasma = RAW_CHAIN_CONFIGS.find(c => c.id === 9745n); + + it('exists in RAW_CHAIN_CONFIGS', () => { + expect(plasma).toBeDefined(); + }); + + it('has correct static properties', () => { + expect(plasma).toMatchObject({ + id: 9745n, + name: 'Plasma', + type: ChainType.EVM, + env: 'production', + rpcUrl: 'https://rpc.plasma.to', + portalAddress: '0x399Dbd5DF04f83103F77A58cBa2B7c4d3cdede97', + }); + }); + + it('has Hyperlane prover address', () => { + expect(plasma?.provers?.Hyperlane).toBe('0xC972B26C1E208845Ca8C18c6B83466bFCeED8c2F'); + }); +}); + +describe('USDT0 token config', () => { + const usdt0 = TOKEN_CONFIGS['USDT0']; + + it('exists in TOKEN_CONFIGS', () => { + expect(usdt0).toBeDefined(); + }); + + it('has correct symbol and decimals', () => { + expect(usdt0.symbol).toBe('USDT0'); + expect(usdt0.decimals).toBe(6); + }); + + it('has a normalized address for Plasma mainnet (chain 9745)', () => { + const addr = usdt0.addresses['9745']; + expect(addr).toBeDefined(); + expect(addr).toMatch(/^0x[0-9a-fA-F]{64}$/); + expect(addr.toLowerCase()).toContain('b8ce59fc3717ada4c02eadf9682a9e934f625ebb'); + }); +});