diff --git a/config.e2e-local.yaml b/config.e2e-local.yaml index 28c724c..d135755 100644 --- a/config.e2e-local.yaml +++ b/config.e2e-local.yaml @@ -82,7 +82,7 @@ token: symbol: "DEMO" decimals: 18 instrument_id: "DEMO" - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": + "0xC1A0000000000000000000000000000000000001": name: "USD Coin" symbol: "USDCx" decimals: 6 diff --git a/pkg/config/defaults/config.api-server.docker.yaml b/pkg/config/defaults/config.api-server.docker.yaml index 434a0ab..125dc1b 100644 --- a/pkg/config/defaults/config.api-server.docker.yaml +++ b/pkg/config/defaults/config.api-server.docker.yaml @@ -86,7 +86,7 @@ token: symbol: "DEMO" decimals: 18 instrument_id: "DEMO" - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": + "0xC1A0000000000000000000000000000000000001": name: "USD Coin" symbol: "USDCx" decimals: 6 diff --git a/pkg/config/defaults/config.api-server.local-devnet.yaml b/pkg/config/defaults/config.api-server.local-devnet.yaml index 15b2f66..d871983 100644 --- a/pkg/config/defaults/config.api-server.local-devnet.yaml +++ b/pkg/config/defaults/config.api-server.local-devnet.yaml @@ -79,7 +79,7 @@ token: symbol: "DEMO" decimals: 18 instrument_id: "DEMO" - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": + "0xC1A0000000000000000000000000000000000001": name: "USD Coin" symbol: "USDCx" decimals: 6 diff --git a/pkg/config/defaults/config.api-server.mainnet.yaml b/pkg/config/defaults/config.api-server.mainnet.yaml index aaf9f48..d8ea5c4 100644 --- a/pkg/config/defaults/config.api-server.mainnet.yaml +++ b/pkg/config/defaults/config.api-server.mainnet.yaml @@ -48,12 +48,21 @@ canton: token: supported_tokens: + # Display-only synthetic addresses for MetaMask. The api-server's + # eth_call balanceOf facade keys balances by these addresses. They must + # NOT collide with well-known mainnet token contracts (e.g. real USDC, + # USDT, etc.) or MetaMask flags imports as suspected phishing. + "0x9907000000000000000000000000000000000001": + name: "PROMPT" + symbol: "PROMPT" + decimals: 18 + instrument_id: "PROMPT" "0xDE30000000000000000000000000000000000001": name: "Demo Token" symbol: "DEMO" decimals: 18 instrument_id: "DEMO" - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": + "0xC1A0000000000000000000000000000000000001": name: "USD Coin" symbol: "USDCx" decimals: 6 diff --git a/pkg/config/tests/env-substitution.api.yaml b/pkg/config/tests/env-substitution.api.yaml index ccc220f..b22ff59 100644 --- a/pkg/config/tests/env-substitution.api.yaml +++ b/pkg/config/tests/env-substitution.api.yaml @@ -31,7 +31,7 @@ token: symbol: "PROMPT" decimals: 18 instrument_id: "PROMPT" - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": + "0xC1A0000000000000000000000000000000000001": name: "USD Coin" symbol: "USDCx" decimals: 6 diff --git a/pkg/config/tests/invalid-database-url.api.yaml b/pkg/config/tests/invalid-database-url.api.yaml index 47f1040..6b55e8f 100644 --- a/pkg/config/tests/invalid-database-url.api.yaml +++ b/pkg/config/tests/invalid-database-url.api.yaml @@ -31,7 +31,7 @@ token: symbol: "PROMPT" decimals: 18 instrument_id: "PROMPT" - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": + "0xC1A0000000000000000000000000000000000001": name: "USD Coin" symbol: "USDCx" decimals: 6 diff --git a/pkg/config/tests/minimal.api.yaml b/pkg/config/tests/minimal.api.yaml index 17c043a..f7dd7ad 100644 --- a/pkg/config/tests/minimal.api.yaml +++ b/pkg/config/tests/minimal.api.yaml @@ -31,7 +31,7 @@ token: symbol: "PROMPT" decimals: 18 instrument_id: "PROMPT" - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": + "0xC1A0000000000000000000000000000000000001": name: "USD Coin" symbol: "USDCx" decimals: 6 diff --git a/pkg/config/tests/missing-env.api.yaml b/pkg/config/tests/missing-env.api.yaml index ee39fb6..52ad978 100644 --- a/pkg/config/tests/missing-env.api.yaml +++ b/pkg/config/tests/missing-env.api.yaml @@ -31,7 +31,7 @@ token: symbol: "PROMPT" decimals: 18 instrument_id: "PROMPT" - "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": + "0xC1A0000000000000000000000000000000000001": name: "USD Coin" symbol: "USDCx" decimals: 6 diff --git a/tests/e2e/devstack/stack/types.go b/tests/e2e/devstack/stack/types.go index 7e63f5c..195edb6 100644 --- a/tests/e2e/devstack/stack/types.go +++ b/tests/e2e/devstack/stack/types.go @@ -23,9 +23,12 @@ const ( DemoTokenVirtualAddr = "0xDE30000000000000000000000000000000000001" // USDCxTokenVirtualAddr is the well-known virtual EVM address mapped to the - // USDCx external token in the api-server configuration. - // #nosec G101 -- public deterministic EVM contract address, not a credential. - USDCxTokenVirtualAddr = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" + // USDCx external token in the api-server configuration. Synthetic (no real + // on-chain meaning) so MetaMask's anti-phishing check — which compares + // imported token addresses against its known-mainnet-tokens registry — does + // not flag USDCx imports as a possible spoof of real-mainnet USDC. + // #nosec G101 -- synthetic placeholder EVM address, not a credential. + USDCxTokenVirtualAddr = "0xC1A0000000000000000000000000000000000001" ) // CantonHolding is a minimal view of a CIP56Holding contract used by E2E tests.