Skip to main content

Do I need to write or deploy a contract?

No. SODAX’s Ethereum spoke contracts are already deployed; your integration is TypeScript against @sodax/sdk (or the React packages on top of it). You write no on-chain code and hold no admin key for any part of the flow.

How does a swap from Ethereum actually settle?

Your user signs one transaction on Ethereum that creates an intent. The SODAX relayer carries proof of that transaction to the hub network (Sonic), a solver fills the intent on the destination network, and the output lands at the recipient address there. Swaps into Ethereum settle as ordinary ETH or ERC-20 balances at the recipient address. If an intent is never filled, it can be cancelled and the funds recovered.

Which assets are supported on Ethereum?

Two answers, and the difference matters. On Ethereum itself, 26 assets are live for swaps: ETH plus ERC-20 tokens. 12 assets are live in the money market; that list is separate from the swap list, not a subset of it. But your users are not limited to the Ethereum-side list. Every swap is cross-network, so from Ethereum they can reach all 166 assets across every SODAX-supported network. Both lists grow as the backend config adds them; read them from sodax.config at runtime, or see the live tables in Networks & Assets.

Is there an approve step before swapping or supplying?

For ERC-20 tokens, yes. SODAX’s asset manager pulls them through the ERC-20 interface, so isAllowanceValid checks the allowance and approve sets it, the same as on any EVM network. Native ETH needs no approval.

Why did my user sign two approvals for USDT?

Because Ethereum USDT rejects an allowance change from one non-zero value to another. When the wallet already holds a smaller USDT allowance, the SDK’s approve sends approve(0) first and then the real approval. The returned hash is the second one’s. If you build unsigned transactions, use buildApproveTxs, which returns the reset as resetTx when it is needed: USDT approvals.

How do I show the network fee before the user signs?

Build the transaction with raw: true (for example createIntent or approve), then pass it to estimateGas with ChainKeys.ETHEREUM_MAINNET. It returns gas units; multiply by the current fee per gas. See Swaps on Ethereum: Fees and Estimate Gas.

Which RPC endpoint should I use?

Any Ethereum mainnet RPC. The SODAX config uses https://eth.merkle.io, a public endpoint; pass your own through rpcUrl on EvmWalletProvider, or per chain in the @sodax/wallet-sdk-react config.

Is there a testnet?

No. SODAX is mainnet-only on every network, Ethereum included.

What does it cost?

Using SODAX is free: no license, no integration fee, no SDK cost. Trades carry a fixed 0.1% base fee taken by the protocol; on top of that you set your own platform fee and keep it. Your users also pay Ethereum’s network fees in ETH. See Monetize SDK.

How do I know if something went wrong?

SDK operations return Result<T> rather than throwing. Core swap and money market methods return typed error codes (for example 'RELAY_TIMEOUT', 'EXECUTION_FAILED') you can branch on, with structured context attached.

Where are the audits?

Audits for the SODAX protocol are collected on the Audits page.

Can my AI coding assistant do the integration?

Largely, yes. Add the SODAX Builders MCP to Claude, Cursor, VS Code, Windsurf, or any MCP-capable client (https://builders.sodax.com/mcp) and it gets live access to the SODAX System: chains, tokens, swap quotes, money market rates, intent history, and auto-synced SDK docs. Use it to scope the integration against your own codebase first, then to write and verify the code. Setup per client is at builders.sodax.com.

I want a plan specific to my protocol. Who do I talk to?

Reach the SODAX team through any platform listed at linktr.ee/go.sodax.