Skip to main content
Use this guide when you want to bridge an existing ERC20 from another chain (e.g. Sepolia) to Berachain using LayerZero V2 and the OFT (Omnichain Fungible Token) standard.

Repository

Official documentation

Requirements

  • Node v20.11.0 or greater, npm
  • Wallet with Berachain testnet $BERA — bArtio Faucet
  • Wallet with Sepolia $UNI (or other source token) — see README for faucet/Uniswap
  • Foundry

Stack

Solidity, Foundry (Forge scripts), Node.js, LayerZero V2 OFT.

Quick start

  1. Clone and install
    git clone https://github.com/berachain/guides.git && cd guides/apps/layerzero-oft
    npm install
    
  2. Create .env with PRIVATE_KEY, SEPOLIA_ADAPTER_ADDRESS, BERACHAIN_OFT_ADDRESS (fill addresses after deploying).
  3. Deploy adapter on Sepolia
    forge script script/MyAdapter.s.sol --rpc-url https://rpc.sepolia.org/ --broadcast
    
    Set SEPOLIA_ADAPTER_ADDRESS in .env.
  4. Deploy OFT on Berachain
    forge script script/MyOFT.s.sol --rpc-url https://bartio.rpc.berachain.com/ --broadcast
    
    Set BERACHAIN_OFT_ADDRESS in .env.
  5. Bridge tokens
    forge script script/Bridge.s.sol --rpc-url https://rpc.sepolia.org/ --broadcast
    

Key files

PurposePath
Source chain adapterscript/MyAdapter.s.sol (and source)
Berachain OFTscript/MyOFT.s.sol (and source)
Bridge scriptscript/Bridge.s.sol