Skip to content

fix(evm): Base Sepolia USDC EIP-712 domain name is "USDC", not "USD Coin" - #30

Merged
TeoSlayer merged 1 commit into
pilot-protocol:mainfrom
patelnav:fix/eip712-domain-per-chain
Jul 30, 2026
Merged

fix(evm): Base Sepolia USDC EIP-712 domain name is "USDC", not "USD Coin"#30
TeoSlayer merged 1 commit into
pilot-protocol:mainfrom
patelnav:fix/eip712-domain-per-chain

Conversation

@patelnav

Copy link
Copy Markdown
Contributor

Satisfy/Verify/USDCDomain hardcode domain name "USD Coin". Base Sepolia USDC (0x036CbD53842c5426634e7929541eC2318f3dCF7e) uses "USDC" → wrong domain separator → every signature on 84532 fails transferWithAuthorization and x402 facilitator verification. Mainnets (1/8453/137) are all "USD Coin", so the default chain set masks it.

Proof: on-chain DOMAIN_SEPARATOR() is 0x71f17a3b2ff373b803d70a5a07c046c1a2bc8e89c09ef722fcb047abe94c9818 (84532) / 0x02fa7265e7c5d81118673727957699e4d68f74cd74b7db77da710fe8a2c7834f (8453); recomputing the domain hash matches only with "USDC" / "USD Coin" respectively. x402 agrees: go/mechanisms/evm/constants.goeip155:84532 Name: "USDC".

Change: usdcDomainName(chainID) (84532→"USDC", else "USD Coin" — unknown chains unchanged), used in the three call sites. New test pins Domain.Separator() for all four KnownChainIDs() to on-chain values.

Longer term you probably want name/version plumbed from x402 extra.name/extra.version through payment.Contract; happy to follow up if you're open to the app-store schema change.

Found while integrating a diarize.io app against Stripe's x402 facilitator on Base Sepolia.

@codecov

codecov Bot commented Jul 30, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@TeoSlayer
TeoSlayer merged commit 2c1bbea into pilot-protocol:main Jul 30, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants