Bridge assets to and from Celo. Use when transferring tokens between Celo and other chains like Ethereum.
This skill covers bridging assets between Celo and other blockchains, including native bridges and third-party solutions.
| Bridge | Mainnet | Testnet |
|---|---|---|
| Superbridge | https://superbridge.app/celo | https://testnets.superbridge.app |
Native bridge provides direct transfers between Celo L2 and Ethereum L1 via the OP Stack standard bridge.
Source: https://docs.celo.org/tooling/bridges
| Bridge | URL | Description |
|---|---|---|
| Squid Router V2 | https://v2.app.squidrouter.com | Cross-chain routing via Axelar |
| LayerZero | https://layerzero.network | Omnichain interoperability protocol |
| Jumper Exchange | https://jumper.exchange | Multi-chain DEX aggregator |
| Portal (Wormhole) | https://portalbridge.com | Decentralized interoperability layer |
| AllBridge | https://app.allbridge.io/bridge | EVM and non-EVM chains |
| Satellite (Axelar) | https://satellite.money | Axelar network bridge |
| Transporter (CCIP) | https://www.transporter.io | Chainlink CCIP bridge |
| Layerswap | https://layerswap.io/app | 60+ chains, 15+ CEX integrations |
| Hyperlane Nexus | https://www.usenexus.org | Messaging and interoperability |
| Mach Exchange | https://www.mach.exchange | Cross-chain exchange |
| Galaxy | https://galaxy.exchange/swap | Native DEX on Celo |
| SmolRefuel | https://smolrefuel.com | Gasless refueling |
| USDT0 | https://usdt0.to | Native USDT via LayerZero OFT |
Source: https://docs.celo.org/home/bridged-tokens/bridges
Bridge native ETH from Ethereum to Celo as WETH.
Ethereum Mainnet → Celo:
| Contract | Address |
|---|---|
| SuperBridgeETHWrapper (L1) | 0x3bC7C4f8Afe7C8d514c9d4a3A42fb8176BE33c1e |
| L1 Standard Bridge | 0x9C4955b92F34148dbcfDCD82e9c9eCe5CF2badfe |
| L1 WETH | 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 |
| L2 WETH (Celo) | 0xD221812de1BD094f35587EE8E174B07B6167D9Af |
Sepolia Testnet → Celo Sepolia:
| Contract | Address |
|---|---|
| SuperBridgeETHWrapper (L1) | 0x523e358dFd0c4e98F3401DAc7b1879445d377e37 |
| L1 Standard Bridge | 0xec18a3c30131a0db4246e785355fbc16e2eaf408 |
| L1 WETH | 0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9 |
| L2 WETH (Celo Sepolia) | 0x2cE73DC897A3E10b3FF3F86470847c36ddB735cf |
import { createWalletClient, custom, parseEther } from "viem";
import { mainnet } from "viem/chains";
const SUPERBRIDGE_WRAPPER = "0x3bC7C4f8Afe7C8d514c9d4a3A42fb8176BE33c1e";
const WRAPPER_ABI = [
{
name: "wrapAndBridge",
type: "function",
stateMutability: "payable",
inputs: [
{ name: "_minGasLimit", type: "uint32" },
{ name: "_extraData", type: "bytes" },
],
outputs: [],
},
] as const;
async function bridgeETHToCelo(amount: string): Promise<string> {
const walletClient = createWalletClient({
chain: mainnet,
transport: custom(window.ethereum),
});
const [address] = await walletClient.getAddresses();
const hash = await walletClient.writeContract({
address: SUPERBRIDGE_WRAPPER,
abi: WRAPPER_ABI,
functionName: "wrapAndBridge",
args: [200000, "0x"],
value: parseEther(amount),
});
return hash;
}
These tokens have official bridges from Ethereum via native bridge:
| Token | L1 Address (Ethereum) | L2 Address (Celo) |
|---|---|---|
| WETH | 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 | 0xD221812de1BD094f35587EE8E174B07B6167D9Af |
| WBTC | 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 | 0x8aC2901Dd8A1F17a1A4768A6bA4C3751e3995B2D |
| DAI | 0x6B175474E89094C44Da98b954EedeAC495271d0F | 0xac177de2439bd0c7659c61f373dbf247d1f41abe |
| AAVE | 0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9 | 0xF6A54aff8c97f7AF3CC86dbaeE88aF6a7AaB6288 |
| LINK | 0x514910771af9ca656af840dff83e8264ecf986ca | 0xf630876008a4ed9249fb4cac978ba16827f52e91 |
| UNI | 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 | 0xeE571697998ec64e32B57D754D700c4dda2f2a0e |
| CRV | 0xD533a949740bb3306d119CC777fa900bA034cd52 | 0x75184c282e55a7393053f0b8F4F3E7BeAE067fdC |
| rETH | 0xae78736cd615f374d3085123a210448e74fc6393 | 0x55f3d16e6bd2b8b8e6599df6ef4593ce9dcae9ed |
Source: https://docs.celo.org/home/bridged-tokens
For building cross-chain dApps:
| Protocol | URL | Celo Support |
|---|---|---|
| Chainlink CCIP | https://chain.link/cross-chain | Mainnet |
| Hyperlane | https://www.hyperlane.xyz | Mainnet, Sepolia |
| Wormhole | https://wormhole.com | Mainnet |
| LayerZero | https://layerzero.network | Mainnet |
| Axelar Network | https://axelar.network | Mainnet |
Source: https://docs.celo.org/tooling/bridges/cross-chain-messaging
For cross-chain swaps and bridges:
import { createConfig, getQuote, executeRoute } from "@lifi/sdk";
// Initialize LI.FI
createConfig({
integrator: "your-app-name",
});
// Get bridge quote
const quote = await getQuote({
fromChain: 1, // Ethereum
toChain: 42220, // Celo
fromToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC on Ethereum
toToken: "0xcebA9300f2b948710d2653dD7B07f33A8B32118C", // USDC on Celo
fromAmount: "1000000000", // 1000 USDC (6 decimals)
fromAddress: userAddress,
});
// Execute the bridge
const result = await executeRoute(quote, {
updateRouteHook: (route) => {
console.log("Route updated:", route);
},
});
{
"dependencies": {
"viem": "^2.0.0"
}
}
For LI.FI integration:
{
"dependencies": {
"@lifi/sdk": "^3.0.0"
}
}
ZIP package — ready to use