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

# Bridging

Transfer assets between Ethereum and [Immutable Chain](https://docs.immutable.com/docs/products/immutable-chain/overview.md) using the canonical bridge or third-party solutions.

> [card] [Bridge Contracts](https://github.com/immutable/zkevm-bridge-contracts)
>
> View the bridge contract source code

> [card] [Audit Reports](https://github.com/immutable/zkevm-bridge-contracts/tree/main/audits)
>
> Trail of Bits audit and Perimeter fuzzing reports

## Bridge Options

| Bridge | Type | Speed | Best For |
| - | - | - | - |
| **[Canonical Bridge](#canonical-bridge)** | Native (Axelar) | 15-30 min | Large amounts, highest security |
| **[LayerSwap](https://layerswap.io)** | Liquidity Network | Minutes | Fast transfers |
| **[Squid](https://squidrouter.com)** | Aggregator | Minutes | Multi-chain routing |

> [!NOTE]
>
> The canonical bridge currently uses [Axelar](https://axelar.network/) for cross-chain messaging, with plans to add ZK proofs in the future for enhanced security.

## Bridge UIs

> [card] [Immutable Play](https://play.immutable.com)
>
> Best interface for [Passport](https://docs.immutable.com/docs/products/passport/overview.md) wallets

> [card] [Toolkit](https://toolkit.immutable.com/ethereum-bridge/)
>
> Canonical bridge for advanced users

## Canonical Bridge

The canonical bridge enables secure asset transfers between Ethereum (L1) and Immutable Chain (L2).

### Supported Assets

| Asset | L1 → L2 | L2 → L1 |
| - | - | - |
| **ETH** | ✅ | ✅ |
| **IMX** | ✅ | ✅ |
| **USDC** | ✅ | ✅ |
| **USDT** | ✅ | ✅ |
| **wBTC** | ✅ | ✅ |
| **any mapped ERC-20** | ✅ | ✅ |

### How It Works

**Deposit (L1 → L2)**: \~15-30 minutes

1. Call the bridge contract on Ethereum with the asset and destination
2. Wait for L1 confirmation and Axelar relay
3. Assets appear in your L2 wallet

**Withdrawal (L2 → L1)**: Up to 24 hours (see [Flow Rate Parameters](#flow-rate-parameters))

1. Call the bridge contract on Immutable Chain
2. Wait for message relay
3. Claim on Ethereum

### Flow Rate Parameters

The bridge implements safety mechanisms to protect against exploits:

| Token | Flow-Rate Capacity (4-Hour Window) | Large Withdrawal Threshold |
| - | - | - |
| ETH | 148 | 29.60 |
| [IMX](https://etherscan.io/token/0xF57e7e7C23978C3cAEC3C3548E3D615c346e79fF) | 539,052 | 107,230 |
| [USDC](https://etherscan.io/token/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48) | 372,000 | 74,000 |
| [USDT](https://etherscan.io/token/0xdAC17F958D2ee523a2206206994597C13D831ec7) | 372,000 | 74,000 |
| [wBTC](https://etherscan.io/token/0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599) | 3.37 | 0.67 |
| [GODS](https://etherscan.io/token/0xccC8cb5229B0ac8069C51fd58367Fd1e622aFD97) | 2,310,559 | 459,627 |
| [GOG](https://etherscan.io/token/0x9AB7bb7FdC60f4357ECFef43986818A2A3569c62) | 9,386,828 | 1,867,272 |

> [!WARNING]
>
> **Large withdrawals** exceeding the threshold are queued for 24 hours. If total withdrawals in a 4-hour window exceed the flow rate capacity, all withdrawals are queued until manually reviewed.

## Bridge Contract Addresses

### Ethereum (L1)

| Contract | Mainnet | Testnet (Sepolia) |
| - | - | - |
| **Bridge Proxy** | [`0xBa5E35E26Ae59c7aea6F029B68c6460De2d13eB6`](https://etherscan.io/address/0xBa5E35E26Ae59c7aea6F029B68c6460De2d13eB6) | [`0x0D3C59c779Fd552C27b23F723E80246c840100F5`](https://sepolia.etherscan.io/address/0x0D3C59c779Fd552C27b23F723E80246c840100F5) |
| **Adaptor Proxy** | [`0x4f49B53928A71E553bB1B0F66a5BcB54Fd4E8932`](https://etherscan.io/address/0x4f49B53928A71E553bB1B0F66a5BcB54Fd4E8932) | [`0x6328Ac88ba8D466a0F551FC7C42C61d1aC7f92ab`](https://sepolia.etherscan.io/address/0x6328Ac88ba8D466a0F551FC7C42C61d1aC7f92ab) |

### Immutable Chain (L2)

| Contract | Mainnet | Testnet |
| - | - | - |
| **Bridge Proxy** | [`0xBa5E35E26Ae59c7aea6F029B68c6460De2d13eB6`](https://explorer.immutable.com/address/0xBa5E35E26Ae59c7aea6F029B68c6460De2d13eB6) | [`0x0D3C59c779Fd552C27b23F723E80246c840100F5`](https://explorer.testnet.immutable.com/address/0x0D3C59c779Fd552C27b23F723E80246c840100F5) |
| **Adaptor Proxy** | [`0x4f49B53928A71E553bB1B0F66a5BcB54Fd4E8932`](https://explorer.immutable.com/address/0x4f49B53928A71E553bB1B0F66a5BcB54Fd4E8932) | [`0x6328Ac88ba8D466a0F551FC7C42C61d1aC7f92ab`](https://explorer.testnet.immutable.com/address/0x6328Ac88ba8D466a0F551FC7C42C61d1aC7f92ab) |

### Token Addresses (L2)

| Token | Mainnet | Testnet |
| - | - | - |
| **Wrapped ETH** | [`0x52a6c53869ce09a731cd772f245b97a4401d3348`](https://explorer.immutable.com/address/0x52a6c53869ce09a731cd772f245b97a4401d3348) | [`0xe9E96d1aad82562b7588F03f49aD34186f996478`](https://explorer.testnet.immutable.com/address/0xe9E96d1aad82562b7588F03f49aD34186f996478) |
| **Wrapped IMX** | [`0x3a0c2ba54d6cbd3121f01b96dfd20e99d1696c9d`](https://explorer.immutable.com/address/0x3a0c2ba54d6cbd3121f01b96dfd20e99d1696c9d) | [`0x1CcCa691501174B4A623CeDA58cC8f1a76dc3439`](https://explorer.testnet.immutable.com/address/0x1CcCa691501174B4A623CeDA58cC8f1a76dc3439) |
| **USDC** | [`0x6de8aCC0D406837030CE4dd28e7c08C5a96a30d2`](https://explorer.immutable.com/address/0x6de8aCC0D406837030CE4dd28e7c08C5a96a30d2) | [`0x3B2d8A1931736Fc321C24864BceEe981B11c3c57`](https://explorer.testnet.immutable.com/address/0x3B2d8A1931736Fc321C24864BceEe981B11c3c57) |
| **USDT** | [`0x68bcc7F1190AF20e7b572BCfb431c3Ac10A936Ab`](https://explorer.immutable.com/address/0x68bcc7F1190AF20e7b572BCfb431c3Ac10A936Ab) | TBA |
| **Wrapped BTC** | [`0x235F9A2Dc29E51cE7D103bcC5Dfb4F5c9c3371De`](https://explorer.immutable.com/address/0x235F9A2Dc29E51cE7D103bcC5Dfb4F5c9c3371De) | TBA |
| **GODS** | [`0xE0e0981D19eF2E0a57Cc48CA60D9454eD2D53fEB`](https://explorer.immutable.com/address/0xE0e0981D19eF2E0a57Cc48CA60D9454eD2D53fEB) | TBA |
| **GOG** | [`0xb00ed913aAFf8280C17BfF33CcE82fE6D79e85e8`](https://explorer.immutable.com/address/0xb00ed913aAFf8280C17BfF33CcE82fE6D79e85e8) | TBA |

## Querying Flow Rates

You can query flow rate parameters directly from the L1 bridge contract:

* `flowRateBuckets(tokenAddress)` - Returns bucket capacity and refill rate
* `largeTransferThreshold(tokenAddress)` - Returns the large withdrawal threshold

> [card] [Manual Bridging Guide](https://github.com/immutable/zkevm-bridge-contracts/blob/main/docs/manual-bridging.md)
>
> For programmatic bridging, see the manual bridging documentation

## Next Steps

> [card] [Native Token](https://docs.immutable.com/docs/products/immutable-chain/native-token.md)
>
> Understand IMX token usage

> [card] [Passport](https://docs.immutable.com/docs/products/passport/overview.md)
>
> Set up wallet integration

> [card] [Differences from Ethereum](https://docs.immutable.com/docs/products/immutable-chain/differences-from-ethereum.md)
>
> Review chain differences


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