Supported Chains and Tokens
This document lists the currently supported chains and tokens on the only swaps protocol and outlines the administrative process for adding new support.
Supported Chains
The following EVM chains are currently supported by the only swaps protocol and integrated via the onlyswaps-js constants module.
Mainnet Networks
| Network | Chain ID | Router Address |
|---|---|---|
| Arbitrum One | 42161 | 0x8F224903363E1DD8B66b9f83DE37f48E5d10f33C |
| Avalanche C-Chain | 43114 | 0x4cB630aAEA9e152db83A846f4509d83053F21078 |
| Base | 8453 | 0x4cB630aAEA9e152db83A846f4509d83053F21078 |
| Binance Smart Chain | 56 | 0x8F224903363E1DD8B66b9f83DE37f48E5d10f33C |
| Ethereum | 1 | 0x8F224903363E1DD8B66b9f83DE37f48E5d10f33C |
| Filecoin | 314 | 0x6f9f1c10B2a9f1d5a4cFb55f87aa419ad5b25470 |
| Linea | 59144 | 0x8F224903363E1DD8B66b9f83DE37f48E5d10f33C |
| Optimism | 10 | 0x8F224903363E1DD8B66b9f83DE37f48E5d10f33C |
| Scroll | 534352 | 0x8F224903363E1DD8B66b9f83DE37f48E5d10f33C |
Testnet Networks
| Network | Chain ID | Router Address | RUSD (Test Token) Address |
|---|---|---|---|
| Arc | 5042002 | 0x8F224903363E1DD8B66b9f83DE37f48E5d10f33C | 0xeEFEBadf8f73192D210a64C97bC032C51f995666 |
| Avalanche Fuji | 43113 | 0xC69DD549B037215BA1Ea9866FFa59603862bf986 | 0xC69DD549B037215BA1Ea9866FFa59603862bf986 |
| Base Sepolia | 84532 | 0xC69DD549B037215BA1Ea9866FFa59603862bf986 | 0xC69DD549B037215BA1Ea9866FFa59603862bf986 |
Developers should always reference the exported constants from the onlyswaps-js constants module for the most up-to-date information. Do not hard-code these addresses.
Supported Tokens
Currently, the protocol primarily focuses on like-for-like swaps. The primary token used for integration testing and demonstration is RUSD, an 18-decimal ERC20 faucet token.
Mainnet Tokens
The following tokens are supported for cross-chain swaps on mainnet networks:
| Token | Network | Contract Address |
|---|---|---|
| USDFC | Filecoin | 0x80B98d3aa09ffff255c3ba4A241111Ff1262F045 |
| USDT | Arbitrum One | 0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9 |
| USDT | Avalanche C-Chain | 0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7 |
| USDT | Base | 0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2 |
| USDT | Binance Smart Chain | 0x55d398326f99059ff775485246999027b3197955 |
| USDT | Ethereum | 0xdac17f958d2ee523a2206206994597c13d831ec7 |
| USDT | Linea | 0xA219439258ca9da29E9Cc4cE5596924745e12B93 |
| USDT | Optimism | 0x94b008aA00579c1307B0EF2c499aD98a8ce58e58 |
| USDT | Scroll | 0xf55bec9cafdbe8730f096aa55dad6d22d44099df |
Token mappings are established through the Router contract's administrative functions and enable cross-chain swaps between equivalent tokens.
RUSD (Testnet Token)
RUSD is an 18-decimal ERC20 faucet token used for integration testing and demonstration across supported testnet networks.
| Token | Description | Contract Addresses |
|---|---|---|
| RUSD | Test ERC-20 token with token faucet functionality. | - Arc Testnet: 0xeEFEBadf8f73192D210a64C97bC032C51f995666 - Avalanche Fuji: 0x908e1D85604E0e9e703d52D18f3f3f604Fe7Bb1b - Base Sepolia: 0x908e1D85604E0e9e703d52D18f3f3f604Fe7Bb1b |
Adding Support for New Chains and Tokens
Adding support for new chains and tokens is an administrative function restricted to the ADMIN_ROLE on the Router contract. The Router enforces checks to ensure swaps only occur between permitted chains and correctly mapped tokens.
Process Overview
- Permit Destination Chain: On the source chain's Router, the admin must whitelist the new destination chain ID.
- Map Tokens: The admin must establish a mapping between the source token address and the destination token address for that specific destination chain ID.
Administrative Functions (Solidity)
These functions are available on the Router.sol contract and require the ADMIN_ROLE.
permitDestinationChainId(uint256 chainId)
Whitelists a destination chain ID, enabling swaps to that chain.
function permitDestinationChainId(uint256 chainId) external;
setTokenMapping(uint256 dstChainId, address dstToken, address srcToken)
Creates a mapping between a source token and a destination token for a specific destination chain.
- Reverts if
dstChainIdis not permitted. - Reverts with
TokenMappingAlreadyExistsif the mapping is already set.
function setTokenMapping(uint256 dstChainId, address dstToken, address srcToken) external;
blockDestinationChainId(uint256 chainId) and removeTokenMapping(...)
These functions are used to remove support for chains or tokens, respectively.
Request a New Network
We aim to bring OnlySwaps support to all ecosystems that need it!
If your network of choice is not yet supported, request its addition at: [email protected].