Skip to content

bug: Sepolia USDC token address in fee-abstraction tables is the mainnet adapter (no code on Sepolia) #2268

Description

@GigaHierz

What happened? (exact commands + REAL output)

build-on-celo/build-with-ai/overview.mdx:125 lists the Celo Sepolia USDC token address as 0x2F25deB3848C207fc8E0c34035B3Ba7fC157602B. That is the mainnet USDC fee-currency adapter (same page, line 123, and fee-abstraction/using-fee-abstraction.mdx:44). On Celo Sepolia that address has no contract:

$ curl -s -X POST https://forno.celo-sepolia.celo-testnet.org -H 'content-type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0x2F25deB3848C207fc8E0c34035B3Ba7fC157602B","data":"0x95d89b41"},"latest"]}'
{"jsonrpc":"2.0","id":1,"result":"0x"}            # symbol() → empty: no code at this address on Sepolia

$ ... same call, "to":"0x01C5C0122039549AD1493B8220cABEdD739BC44E"
symbol() → USDC ; decimals() → 6                   # the address the x402 page uses as Celo Sepolia USDC

Expected: the Sepolia row names the Sepolia USDC token. The x402 page on the same site (build-on-celo/build-with-ai/x402.mdx:216) uses 0x01C5C0122039549AD1493B8220cABEdD739BC44E as Celo Sepolia USDC, and it answers symbol()=USDC, decimals()=6 on Sepolia.

The same wrong row also appears in build-on-celo/fee-abstraction/using-fee-abstraction.mdx:52 (Sepolia table, "Token" column) and in legacy/protocol/transaction/erc20-transaction-fees.mdx:47 (labelled Alfajores).

Steps to reproduce

  1. Open https://docs.celo.org/build-on-celo/build-with-ai/overview#adapter-addresses
  2. Copy the Sepolia USDC "Token Address"
  3. Call symbol() on it against https://forno.celo-sepolia.celo-testnet.org0x

Root cause (file:line), if known

Copy-paste of the mainnet adapter into the Sepolia token column: build-on-celo/build-with-ai/overview.mdx:125, build-on-celo/fee-abstraction/using-fee-abstraction.mdx:52. The Sepolia adapter column (0x4822e58de6f5e485eF90df51C41CE01721331dC0) is not checked by this issue — OPEN: verify it with eth_getCode on Sepolia before the fix lands.

Version / commit tested

bdf40b37 (main, 2026-08-21)

Where is the defect (not just where you noticed it)?

The agent-facing overview page that llms.txt and the per-page .md export serve to AI tools — an agent following it on testnet sends funds or approvals to an address with no code.

How would we know it's fixed?

symbol() via eth_call on every address in the Sepolia rows returns the ticker in the row; a one-line script over the three files is the pinned check (could live next to the orphan check in CI).

Priority

critical — user-visible wrong data (a contract address)

Size

S — hours

Metadata

Metadata

Assignees

Labels

bugSomething is brokendocumentationImprovements or additions to documentationpriority:criticalMoney correctness, security, or user-visible wrong datasize:SHours: small, well-bounded fixstatus: triageNeeds triage

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions