Skip to main content

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

NetworkChain IDRouter Address
Arbitrum One421610x8F224903363E1DD8B66b9f83DE37f48E5d10f33C
Avalanche C-Chain431140x4cB630aAEA9e152db83A846f4509d83053F21078
Base84530x4cB630aAEA9e152db83A846f4509d83053F21078
Binance Smart Chain560x8F224903363E1DD8B66b9f83DE37f48E5d10f33C
Ethereum10x8F224903363E1DD8B66b9f83DE37f48E5d10f33C
Filecoin3140x6f9f1c10B2a9f1d5a4cFb55f87aa419ad5b25470
Linea591440x8F224903363E1DD8B66b9f83DE37f48E5d10f33C
Optimism100x8F224903363E1DD8B66b9f83DE37f48E5d10f33C
Scroll5343520x8F224903363E1DD8B66b9f83DE37f48E5d10f33C

Testnet Networks

NetworkChain IDRouter AddressRUSD (Test Token) Address
Arc50420020x8F224903363E1DD8B66b9f83DE37f48E5d10f33C0xeEFEBadf8f73192D210a64C97bC032C51f995666
Avalanche Fuji431130xC69DD549B037215BA1Ea9866FFa59603862bf9860xC69DD549B037215BA1Ea9866FFa59603862bf986
Base Sepolia845320xC69DD549B037215BA1Ea9866FFa59603862bf9860xC69DD549B037215BA1Ea9866FFa59603862bf986

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:

TokenNetworkContract Address
USDFCFilecoin0x80B98d3aa09ffff255c3ba4A241111Ff1262F045
USDTArbitrum One0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9
USDTAvalanche C-Chain0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7
USDTBase0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2
USDTBinance Smart Chain0x55d398326f99059ff775485246999027b3197955
USDTEthereum0xdac17f958d2ee523a2206206994597c13d831ec7
USDTLinea0xA219439258ca9da29E9Cc4cE5596924745e12B93
USDTOptimism0x94b008aA00579c1307B0EF2c499aD98a8ce58e58
USDTScroll0xf55bec9cafdbe8730f096aa55dad6d22d44099df

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.

TokenDescriptionContract Addresses
RUSDTest 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

  1. Permit Destination Chain: On the source chain's Router, the admin must whitelist the new destination chain ID.
  2. 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 dstChainId is not permitted.
  • Reverts with TokenMappingAlreadyExists if 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].