From 6f64fd73ea191f1f2b474a1abfad2cebf44b7e55 Mon Sep 17 00:00:00 2001 From: anilchinchawale Date: Mon, 22 Jun 2026 22:24:49 +0530 Subject: [PATCH] feat(evm): add XDC Network (50) and XDC Apothem testnet (51) default assets Registers XDC Network mainnet and Apothem testnet in the EVM default-asset registries (TypeScript, Go, Python) so USD-string pricing ("$0.01") resolves to native USDC on XDC. XDC has native Circle USDC (not bridged) with EIP-3009 transferWithAuthorization, so the default exact scheme works without Permit2. EIP-712 domain values were read on-chain: - mainnet (eip155:50): 0xfA2958CB79b0491CC627c1557F441eF849Ca8eb1, name "USDC", version "2", 6 decimals - apothem (eip155:51): 0xb5AB69F7bBada22B28e79C8FFAECe55eF1c771D4, name "USDC", version "2", 6 decimals Note: the EIP-712 domain name is "USDC" (not "USD Coin"). Native USDC + CCTP V2 launched on XDC in Aug 2025. --- go/mechanisms/evm/constants.go | 22 +++++++++++++++++++ python/x402/mechanisms/evm/constants.py | 20 +++++++++++++++++ .../evm/src/shared/defaultAssets.ts | 12 ++++++++++ 3 files changed, 54 insertions(+) diff --git a/go/mechanisms/evm/constants.go b/go/mechanisms/evm/constants.go index d616f9449f..53bd15bdee 100644 --- a/go/mechanisms/evm/constants.go +++ b/go/mechanisms/evm/constants.go @@ -79,6 +79,8 @@ var ( ChainIDPolygon = big.NewInt(137) ChainIDArbOne = big.NewInt(42161) ChainIDArbSepolia = big.NewInt(421614) + ChainIDXDC = big.NewInt(50) + ChainIDXDCApothem = big.NewInt(51) // Network configurations // See DEFAULT_ASSET.md for guidelines on adding new chains @@ -196,6 +198,26 @@ var ( Decimals: DefaultDecimals, }, }, + // XDC Network Mainnet + "eip155:50": { + ChainID: ChainIDXDC, + DefaultAsset: AssetInfo{ + Address: "0xfA2958CB79b0491CC627c1557F441eF849Ca8eb1", // USDC on XDC (Circle, native) + Name: "USDC", + Version: "2", + Decimals: DefaultDecimals, + }, + }, + // XDC Apothem Testnet + "eip155:51": { + ChainID: ChainIDXDCApothem, + DefaultAsset: AssetInfo{ + Address: "0xb5AB69F7bBada22B28e79C8FFAECe55eF1c771D4", // USDC on XDC Apothem (Circle, native) + Name: "USDC", + Version: "2", + Decimals: DefaultDecimals, + }, + }, } // EIP-3009 ABI for transferWithAuthorization with v,r,s (EOA signatures) diff --git a/python/x402/mechanisms/evm/constants.py b/python/x402/mechanisms/evm/constants.py index c7b3971bd3..a7c31ff201 100644 --- a/python/x402/mechanisms/evm/constants.py +++ b/python/x402/mechanisms/evm/constants.py @@ -504,6 +504,26 @@ class NetworkConfig(_NetworkConfigRequired, total=False): "decimals": 6, }, }, + # XDC Network Mainnet + "eip155:50": { + "chain_id": 50, + "default_asset": { + "address": "0xfA2958CB79b0491CC627c1557F441eF849Ca8eb1", + "name": "USDC", + "version": "2", + "decimals": 6, + }, + }, + # XDC Apothem Testnet + "eip155:51": { + "chain_id": 51, + "default_asset": { + "address": "0xb5AB69F7bBada22B28e79C8FFAECe55eF1c771D4", + "name": "USDC", + "version": "2", + "decimals": 6, + }, + }, } # V1 legacy constants are in x402.mechanisms.evm.v1.constants diff --git a/typescript/packages/mechanisms/evm/src/shared/defaultAssets.ts b/typescript/packages/mechanisms/evm/src/shared/defaultAssets.ts index 4fb47e260c..93fdacc173 100644 --- a/typescript/packages/mechanisms/evm/src/shared/defaultAssets.ts +++ b/typescript/packages/mechanisms/evm/src/shared/defaultAssets.ts @@ -105,6 +105,18 @@ export const DEFAULT_STABLECOINS: Record = { assetTransferMethod: "permit2", supportsEip2612: true, }, // Mezo Testnet mUSD (no EIP-3009, supports EIP-2612) + "eip155:50": { + address: "0xfA2958CB79b0491CC627c1557F441eF849Ca8eb1", + name: "USDC", + version: "2", + decimals: 6, + }, // XDC Network mainnet USDC (Circle, native) + "eip155:51": { + address: "0xb5AB69F7bBada22B28e79C8FFAECe55eF1c771D4", + name: "USDC", + version: "2", + decimals: 6, + }, // XDC Apothem testnet USDC (Circle, native) }; /**