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 AddressHook Executor Address
Arbitrum One421610x16323707e61d20A39AaE5ab64808e480B91658aB0x932ebFe04BA907deEEa92E24238C20ADf1C40F54
Avalanche C-Chain431140x16323707e61d20A39AaE5ab64808e480B91658aB0x932ebFe04BA907deEEa92E24238C20ADf1C40F54
Base84530x16323707e61d20A39AaE5ab64808e480B91658aB0x932ebFe04BA907deEEa92E24238C20ADf1C40F54
Binance Smart Chain560x16323707e61d20A39AaE5ab64808e480B91658aB0x932ebFe04BA907deEEa92E24238C20ADf1C40F54
Ethereum10x16323707e61d20A39AaE5ab64808e480B91658aB0x932ebFe04BA907deEEa92E24238C20ADf1C40F54
Filecoin3140xA25921858Fa5Ee8177FaaFF1D6522730E46496480xF47e7d837c16e75F6dD4c9A2dD8Ff6720CA6c414
Linea591440x16323707e61d20A39AaE5ab64808e480B91658aB0x932ebFe04BA907deEEa92E24238C20ADf1C40F54
Optimism100x16323707e61d20A39AaE5ab64808e480B91658aB0x932ebFe04BA907deEEa92E24238C20ADf1C40F54
Scroll5343520x16323707e61d20A39AaE5ab64808e480B91658aB0x932ebFe04BA907deEEa92E24238C20ADf1C40F54

Testnet Networks

NetworkChain IDRouter AddressRUSD (Test Token) AddressHook Executor Address
Arc50420020x16323707e61d20A39AaE5ab64808e480B91658aB0xFDdcB87aFED6B20cF7616A7339Bc5f8aC37154C30x932ebFe04BA907deEEa92E24238C20ADf1C40F54
Avalanche Fuji431130x16323707e61d20A39AaE5ab64808e480B91658aB0xFDdcB87aFED6B20cF7616A7339Bc5f8aC37154C30x932ebFe04BA907deEEa92E24238C20ADf1C40F54
Base Sepolia845320x16323707e61d20A39AaE5ab64808e480B91658aB0x9Eb392A6286138E5d59a40Da5398e567Ab3AAd7c0x932ebFe04BA907deEEa92E24238C20ADf1C40F54
Filecoin Calibration3141590x1B37530129E84Cc0C4Db6C00c61beC06B9691b8c0xb3042734b608a1B16e9e86B374A3f3e389B4cDf0 (Filecoin Calibration Test USDFC)0x2Cdc2E02f33c31AD700E96625d64BE4b900E882c

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: 0xFDdcB87aFED6B20cF7616A7339Bc5f8aC37154C3
- Avalanche Fuji: 0xFDdcB87aFED6B20cF7616A7339Bc5f8aC37154C3
- Base Sepolia: 0x9Eb392A6286138E5d59a40Da5398e567Ab3AAd7c

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].