Supported tokens
Each chain has a set of tokens accepted as exchangeToken on offers. Native gas tokens (ETH, MATIC) are always supported and represented as 0x0000…0000.
Reading at runtime
import { CoreSDK } from "@bosonprotocol/core-sdk"
const sdk = CoreSDK.fromDefaultConfig({ web3Lib, configId: "production-137-0" })
const tokens = await sdk.getSupportedTokens()
// → [{ address, name, symbol, decimals }, …]Or via MCP: get_supported_tokens.
Typical lineup
| Chain | Native | USDC | USDT | DAI | EURC | Other |
|---|---|---|---|---|---|---|
| Polygon (137) | MATIC | ✅ | ✅ | ✅ | ✅ | (subject to update) |
| Ethereum (1) | ETH | ✅ | ✅ | ✅ | ✅ | |
| Base (8453) | ETH | ✅ | — | — | ✅ | |
| Optimism (10) | ETH | ✅ | ✅ | ✅ | — | |
| Arbitrum (42161) | ETH | ✅ | ✅ | ✅ | — |
The actual list is config-driven and may differ; always check at runtime.
Common gotchas
- Token addresses are chain-specific. USDC on Polygon ≠ USDC on Base. Don't reuse addresses across chains.
- Decimals vary. USDC is 6 decimals; DAI is 18. Don't hard-code.
- Adding a token is a config change. If a token you want isn't listed, open an issue or PR against the config.