Token Lists and Whitelists
THORChain (and MAYA Protocol) restrict support for tokens on EVM and Solana chains to explicitly whitelisted contracts. This protects users from malicious or incompatible tokens.
Purpose of Token Whitelists
- Prevent unsupported tokens from being deposited, swapped, or added to pools
- Avoid edge-case ERC-20 behavior (e.g., tokens with transfer fees, blacklists, or non-standard returns)
- Provide transparency to integrators and wallets
Whitelist Enforcement
- Applies to EVM chains (ETH, AVAX, BSC, ARB, BASE) and Solana (coming soon)
- If a token is not on the list, it will be rejected at the Router contract level
- Tokens must be listed to be eligible for THORChain pools, swaps, and LP adds
Whitelist Sources
Each chain has its own maintained JSON whitelist:
Chain | Whitelist URL |
---|---|
Ethereum (ETH) | eth_mainnet_latest.json |
Avalanche (AVAX) | avax_mainnet_latest.json |
Binance Smart Chain (BSC) | bsc_mainnet_latest.json |
Arbitrum (ARB) | arb_mainnet_latest.json |
Base (BASE) | base_mainnet_latest.json |
Solana (SOL) | Pending integration |
Note: Some tokens like $USDT or $USDC exist across multiple chains and may require separate listing per chain.
How to Request New Tokens
To add a token:
- Fork the appropriate repository (e.g., THORNode)
- Locate the relevant token list (e.g.,
common/tokenlist/ethtokens/eth_mainnet_latest.json
) - Add the token with required metadata (name, symbol, address, decimals)
- Submit a merge request for review
See example MR: thornode!2085
Token Support on Solana
Solana uses SPL tokens, which follow a different format than ERC-20. A similar whitelist approach will apply, with support based on:
- Token mint address
- Decimals
- Associated metadata (e.g., name, symbol)
More details will be provided once Solana support is fully launched.