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

# Bridge to Quai

> Technical details and contract addresses for bridging assets to and from Quai Network via Symbiosis.

Bridge assets to Quai Network using the [Symbiosis](https://app.symbiosis.finance/swap?amountIn\&chainIn=Base\&chainOut=Quai\&tokenIn=ETH\&tokenOut=QUAI) cross-chain protocol. Symbiosis enables seamless transfers between Quai and other major networks including Ethereum and Base.

### Quick Bridge Links

<div style={{ display: 'flex', flexDirection: 'column', gap: '12px' }}>
  <a href="https://app.symbiosis.finance/bridge?chainIn=Base&chainOut=Quai&syntheticIn=1&syntheticOut=0&tokenIn=0x5c97D726bf5130AE15408cE32bc764e458320D2f&tokenOut=0x006C3e2AaAE5DB1bCd11A1a097cE572312EADdBB" target="_blank" rel="noopener noreferrer" style={{ padding: '10px 14px', borderRadius: 8, border: '1px solid #ddd', background: 'var(--secondary-bg)', color: 'var(--primary-text)', cursor: 'pointer', textDecoration: 'none', display: 'block', width: 'fit-content' }}>
    Bridge WQUAI from Base to Quai Network
  </a>

  <a href="https://app.symbiosis.finance/bridge?chainIn=Ethereum&chainOut=Quai&syntheticIn=1&syntheticOut=0&tokenIn=0x70b7f7044D2ca8E2F1E999B90EF16d7Cb7A0cDA1&tokenOut=0x006C3e2AaAE5DB1bCd11A1a097cE572312EADdBB" target="_blank" rel="noopener noreferrer" style={{ padding: '10px 14px', borderRadius: 8, border: '1px solid #ddd', background: 'var(--secondary-bg)', color: 'var(--primary-text)', cursor: 'pointer', textDecoration: 'none', display: 'block', width: 'fit-content' }}>
    Bridge WQUAI from Ethereum to Quai Network
  </a>

  <a href="https://app.symbiosis.finance/bridge?chainIn=Ethereum&chainOut=Quai&syntheticIn=0&syntheticOut=1&tokenIn=0xdAC17F958D2ee523a2206206994597C13D831ec7&tokenOut=0x0049F7cbCa3556C2DfaE62Aafa7015F99de1b8f5" target="_blank" rel="noopener noreferrer" style={{ padding: '10px 14px', borderRadius: 8, border: '1px solid #ddd', background: 'var(--secondary-bg)', color: 'var(--primary-text)', cursor: 'pointer', textDecoration: 'none', display: 'block', width: 'fit-content' }}>
    Bridge USDT from Ethereum to Quai Network
  </a>
</div>

Note: USDT bridging from Base to Quai is not currently available. For USDT, use Ethereum → Quai.

### Key Contract Addresses

Use these exact addresses when bridging to avoid interacting with the wrong tokens.

| Network  | Token            | Address                                      |
| :------- | :--------------- | :------------------------------------------- |
| Quai     | USDT             | `0x0049F7cbCa3556C2DfaE62Aafa7015F99de1b8f5` |
| Quai     | WQUAI            | `0x006C3e2AaAE5DB1bCd11A1a097cE572312EADdBB` |
| Base     | QUAI (Symbiosis) | `0x5c97D726bf5130AE15408cE32bc764e458320D2f` |
| Ethereum | QUAI (Symbiosis) | `0x70b7f7044D2ca8E2F1E999B90EF16d7Cb7A0cDA1` |

### Add Token to Wallet

Use the buttons below to add the QUAI token (Symbiosis representation) to your wallet on Base or Ethereum. Make sure your wallet (e.g., MetaMask) is installed. The button will switch to the correct network and prompt an “Add Token” dialog.

<div style={{ display: 'flex', gap: '12px', flexWrap: 'wrap' }}>
  <button
    onClick={async () => {
  const tokenLogo = 'https://pbs.twimg.com/profile_images/1882168961061531648/fsmniyg7_400x400.jpg'
  const pickEvmProvider = () => {
    if (typeof window === 'undefined' || !window?.ethereum) return null
    const candidates = Array.isArray(window.ethereum.providers) && window.ethereum.providers.length
      ? window.ethereum.providers
      : [window.ethereum]

    const prioritized = candidates.find((provider) => provider?.isMetaMask || provider?.isCoinbaseWallet || provider?.isBraveWallet)
    return prioritized ?? candidates[0]
  }

  const provider = pickEvmProvider()

  if (!provider || typeof provider.request !== 'function') {
    alert('No EVM wallet detected. Please install MetaMask, Coinbase Wallet, or another EVM-compatible wallet.')
    return
  }

  if (provider.__quaiAddTokenPending) {
    alert('Please finish the wallet popup already open, then try again.')
    return
  }

  try {
    provider.__quaiAddTokenPending = true
    await provider.request({ method: 'eth_requestAccounts' })

    try {
      await provider.request({
        method: 'wallet_switchEthereumChain',
        params: [{ chainId: '0x2105' }],
      })
    } catch (switchErr) {
      if (switchErr?.code === 4902) {
        await provider.request({
          method: 'wallet_addEthereumChain',
          params: [{
            chainId: '0x2105',
            chainName: 'Base',
            nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
            rpcUrls: ['https://mainnet.base.org'],
            blockExplorerUrls: ['https://basescan.org'],
          }],
        })
        await provider.request({
          method: 'wallet_switchEthereumChain',
          params: [{ chainId: '0x2105' }],
        })
      } else if (switchErr?.code === -32601) {
        throw new Error('Your connected wallet cannot switch networks. Please try MetaMask or another EVM wallet, or add the token manually.')
      } else if (switchErr?.code === 4001) {
        throw new Error('Network switch was rejected in your wallet.')
      } else {
        throw switchErr
      }
    }

    await provider.request({
      method: 'wallet_watchAsset',
      params: {
        type: 'ERC20',
        options: {
          address: '0x5c97D726bf5130AE15408cE32bc764e458320D2f',
          symbol: 'QUAI',
          decimals: 18,
          image: tokenLogo,
        },
      },
    })

    alert('QUAI was added to your wallet.')
  } catch (e) {
    console.error(e)
    alert(e?.message || 'Failed to add token. Please connect and try again or add it manually in your wallet.')
  } finally {
    provider.__quaiAddTokenPending = false
  }
}}
    style={{ padding: '10px 14px', borderRadius: 8, border: '1px solid #ddd', background: 'var(--secondary-bg)', color: 'var(--primary-text)', cursor: 'pointer' }}
  >
    Add QUAI on Base to Base Wallet
  </button>

  <button
    onClick={async () => {
  const tokenLogo = 'https://pbs.twimg.com/profile_images/1882168961061531648/fsmniyg7_400x400.jpg'
  const pickEvmProvider = () => {
    if (typeof window === 'undefined' || !window?.ethereum) return null
    const candidates = Array.isArray(window.ethereum.providers) && window.ethereum.providers.length
      ? window.ethereum.providers
      : [window.ethereum]

    const prioritized = candidates.find((provider) => provider?.isMetaMask || provider?.isCoinbaseWallet || provider?.isBraveWallet)
    return prioritized ?? candidates[0]
  }

  const provider = pickEvmProvider()

  if (!provider || typeof provider.request !== 'function') {
    alert('No EVM wallet detected. Please install MetaMask, Coinbase Wallet, or another EVM-compatible wallet.')
    return
  }

  if (provider.__quaiAddTokenPending) {
    alert('Please finish the wallet popup already open, then try again.')
    return
  }

  try {
    provider.__quaiAddTokenPending = true
    await provider.request({ method: 'eth_requestAccounts' })

    try {
      await provider.request({
        method: 'wallet_switchEthereumChain',
        params: [{ chainId: '0x1' }],
      })
    } catch (switchErr) {
      if (switchErr?.code === -32601) {
        throw new Error('Your connected wallet cannot switch networks. Please try MetaMask or another EVM wallet, or add the token manually.')
      } else if (switchErr?.code === 4001) {
        throw new Error('Network switch was rejected in your wallet.')
      } else {
        throw switchErr
      }
    }

    await provider.request({
      method: 'wallet_watchAsset',
      params: {
        type: 'ERC20',
        options: {
          address: '0x70b7f7044D2ca8E2F1E999B90EF16d7Cb7A0cDA1',
          symbol: 'QUAI',
          decimals: 18,
          image: tokenLogo,
        },
      },
    })

    alert('QUAI was added to your wallet.')
  } catch (e) {
    console.error(e)
    alert(e?.message || 'Failed to add token. Please connect and try again or add it manually in your wallet.')
  } finally {
    provider.__quaiAddTokenPending = false
  }
}}
    style={{ padding: '10px 14px', borderRadius: 8, border: '1px solid #ddd', background: 'var(--secondary-bg)', color: 'var(--primary-text)', cursor: 'pointer' }}
  >
    Add QUAI on Ethereum to Ethereum Wallet
  </button>
</div>

## Symbiosis Bridge

Symbiosis is a cross-chain AMM DEX that pools liquidity across multiple blockchains, allowing users to swap any token on any supported chain with a single transaction.

<Card title="Symbiosis App" icon="bridge" href="https://symbiosis.finance">
  Access the Symbiosis bridge interface to transfer assets to and from Quai Network.
</Card>

## Quai Network Configuration

| Property            | Value                              |
| :------------------ | :--------------------------------- |
| Chain ID            | `9`                                |
| RPC Endpoint        | `https://rpc.quai.network/cyprus1` |
| Block Explorer      | [QuaiScan](https://quaiscan.io)    |
| Filter Block Offset | `500`                              |

## Smart Contract Addresses on Quai

The following contracts are deployed on Quai Network (Chain ID: 9) for the Symbiosis bridge integration.

| Contract          | Address                                      |
| :---------------- | :------------------------------------------- |
| MetaRouter        | `0x001C50a8527fA172A5FBcb65e5402D55cf319ADe` |
| MetaRouterGateway | `0x0024334B36aDe5b7FD9b168aD68Ad288d85Ba261` |
| Bridge            | `0x003d4d57930b2E0887606bE461ab167CAC2E769e` |
| Synthesis         | `0x004E53ED63b674B1e64Bed32eF037e1f94fc1996` |
| Portal            | `0x003d9F9666853fD4A10351FF5364c602470A7cF6` |
| Fabric            | `0x005a04B1EB81A8d1591602eb58742DEee478485D` |
| MulticallRouter   | `0x0049ff6C9ACe2BAf67ad0466D82e0A2Dc7E309d1` |

## Token on Quai

| Token                | Address                                      | Decimals |
| :------------------- | :------------------------------------------- | :------- |
| WQUAI (Wrapped Quai) | `0x006C3e2AaAE5DB1bCd11A1a097cE572312EADdBB` | 18       |

## Symbiosis Contracts on Source Chains

### Ethereum (Chain ID: 1)

| Contract          | Address                                      |
| :---------------- | :------------------------------------------- |
| MetaRouter        | `0xf621Fb08BBE51aF70e7E0F4EA63496894166Ff7F` |
| MetaRouterGateway | `0xfCEF2Fe72413b65d3F393d278A714caD87512bcd` |
| Bridge            | `0x5523985926Aa12BA58DC5Ad00DDca99678D7227E` |
| Synthesis         | `0xD7c3DF25683871d18BC838E4F619126442Dd38B3` |
| Portal            | `0xb8f275fBf7A959F4BCE59999A2EF122A099e81A8` |
| Fabric            | `0xbBFb7cb70f84fb6fE1Cb13e42A0B71EFDe769428` |
| MulticallRouter   | `0x49d3Fc00f3ACf80FABCb42D7681667B20F60889A` |

**USDT on Ethereum:** `0xdAC17F958D2ee523a2206206994597C13D831ec7` (6 decimals)

### Base (Chain ID: 8453)

| Contract          | Address                                      |
| :---------------- | :------------------------------------------- |
| MetaRouter        | `0x691df9C4561d95a4a726313089c8536dd682b946` |
| MetaRouterGateway | `0x41Ae964d0F61Bb5F5e253141A462aD6F3b625B92` |
| Bridge            | `0x8097f0B9f06C27AF9579F75762F971D745bb222F` |
| Synthesis         | `0x9F6424FE88fBe7785Fa34F0E369F192bF38E7A6e` |
| Portal            | `0xEE981B2459331AD268cc63CE6167b446AF4161f8` |
| Fabric            | `0x44487a445a7595446309464A82244B4bD4e325D5` |
| MulticallRouter   | `0x01A3c8E513B758EBB011F7AFaf6C37616c9C24d9` |

## Integration Notes

* **CoinGecko Platform ID:** `quai-network`
* **Gas Token ID:** `quai-network`
* Quai uses the Cyprus1 zone for cross-chain operations
* Transactions on Quai use standard EVM-compatible signing for the account-based (Quai) token

<Note>
  USDT is not currently available as a native token on Quai Network. When bridging USDT from other chains, it will be represented as a synthetic asset through the Symbiosis Synthesis contract.
</Note>

## Additional Resources

<CardGroup cols={2}>
  <Card title="Symbiosis Docs" icon="book" href="https://docs.symbiosis.finance">
    Full documentation for the Symbiosis protocol
  </Card>

  <Card title="Symbiosis SDK" icon="code" href="https://github.com/symbiosis-finance/js-sdk">
    JavaScript SDK for programmatic bridge integration
  </Card>
</CardGroup>
