> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sodax.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> SODAX is mainnet-only (no testnet chains or RPC endpoints exist) with a hub-and-spoke architecture; Sonic is the hub. SODAX is non-custodial protocol/software: it routes and settles; independent solvers on the marketplace fill — never say 'our solver', 'the SODAX solver', that SODAX trades, takes custody, or fills orders. For frontend/React integrations, prefer @sodax/dapp-kit hooks over calling @sodax/sdk directly. SDK operations — the methods that build, submit or await a transaction, and the API/quote calls — return Result<T, E> ({ ok: true, value } or { ok: false, error }): check result.ok, never wrap them in try/catch or branch on error.message; discriminate on the narrow error.code union instead. Synchronous config getters (getPartnerFee, getSupportedSwapTokens, getVault, ...) return their value directly, not a Result.

# Base FAQ

> The questions Base engineers actually ask about integrating SODAX.

#### Do I need to write or deploy a contract?

No. SODAX's Base 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 Base actually settle?

Your user signs one transaction on Base 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 Base 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.

#### Does anything work differently on Base?

Not for SODAX. Base uses the same wallet provider, approvals, and intent flow as every other EVM network; the SDK has no Base-specific handling. Code written for another EVM network works on Base once you change the chain key to `ChainKeys.BASE_MAINNET`.

#### Which assets are supported on Base?

Two answers, and the difference matters. On Base itself, <span data-sodax-config="count" data-metric="chain-swap-tokens" data-chain="0x2105.base">11</span> assets are live for swaps: ETH plus ERC-20 tokens. <span data-sodax-config="count" data-metric="chain-money-market-tokens" data-chain="0x2105.base">10</span> 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 Base-side list. Every swap is cross-network, so from Base they can reach all <span data-sodax-config="count" data-metric="swap-tokens">166</span> 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](/base/networks-and-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 is the network fee higher than estimated gas times gas price?

Every Base transaction pays an L2 execution fee and an L1 security fee for publishing it to Ethereum. `estimateGas` returns gas units, which price the execution part only. Base's `GasPriceOracle` predeploy quotes the L1 part: see [Network fees](https://docs.base.org/specifications/transactions/network-fees).

#### Which RPC endpoint should I use?

Any Base mainnet RPC. The SODAX config uses `https://mainnet.base.org`; 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, Base 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 Base's network fees in ETH. See [Monetize SDK](/developers/how-to/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](/developers/audits) page.

#### Can my AI coding assistant do the integration?

Largely, yes. Add the [SODAX Builders MCP](/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](https://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](https://linktr.ee/go.sodax).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.