Repository containing LayerZero Omnichain Fungible Token (OFT) implementations for cross-chain token bridging between EVM chains and Flow blockchain.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Cross-Chain Token Bridge β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SCENARIO 1: EVM to Flow (Lock & Mint)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
EVM Chain LayerZero Protocol Flow Chain
βββββββββ ββββββββββββββββββ ββββββββββ
ββββββββββββ
β User β
β(Ethereum)β
ββββββ¬ββββββ
β 1. send()
βΌ
ββββββββββββ
β OFT β
β Adapter ββββββββ
β LOCK β β 2. Emit
β Tokens β β Message
ββββββββββββ β
βΌ
ββββββββββββββββββ
β LayerZero β
β Messaging β 3. Relay
β Layer (DVNs βββββββββββββββββββββββ
β & Oracles) β β
ββββββββββββββββββ β
βΌ
ββββββββββββ
β OFT β
β Contract β
β MINT β
β Tokens β
ββββββ¬ββββββ
β 4. Transfer
βΌ
ββββββββββββ
β User β
β on Flow β
ββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SCENARIO 2: Flow to EVM (Burn & Unlock)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Flow Chain LayerZero Protocol EVM Chain
ββββββββββ ββββββββββββββββββ βββββββββ
ββββββββββββ
β User β
β on Flow β
ββββββ¬ββββββ
β 1. send()
βΌ
ββββββββββββ
β OFT β
β Contract ββββββββ
β BURN β β 2. Emit
β Tokens β β Message
ββββββββββββ β
βΌ
ββββββββββββββββββ
β LayerZero β
β Messaging β 3. Relay
β Layer (DVNs βββββββββββββββββββββββ
β & Oracles) β β
ββββββββββββββββββ β
βΌ
ββββββββββββ
β OFT β
β Adapter β
β UNLOCK β
β Tokens β
ββββββ¬ββββββ
β 4. Transfer
βΌ
ββββββββββββ
β User β
β(Ethereum)β
ββββββββββββ
Bridging Process:
EVM to Flow (Lock & Mint):
- Source Chain (EVM): User calls
send()on OFT Adapter, tokens are locked in the adapter contract - LayerZero Protocol: Message is encoded and sent through LayerZero's decentralized network of verifiers (DVNs) and oracles
- Destination Chain (Flow): OFT contract receives verified message and mints equivalent tokens on Flow EVM
- Result: User receives newly minted tokens on Flow with 1:1 parity
Flow to EVM (Burn & Unlock):
- Source Chain (Flow): User calls
send()on Flow OFT contract, tokens are burned - LayerZero Protocol: Message is relayed back through the decentralized network
- Destination Chain (EVM): OFT Adapter receives message and unlocks the original tokens
- Result: User receives unlocked tokens on the EVM chain, maintaining 1:1 parity
This repository contains multiple implementations for cross-chain token bridging:
EVM LayerZero OFT Implementation
A comprehensive LayerZero OFT (Omnichain Fungible Token) implementation for EVM-compatible blockchains. This directory contains:
- Smart Contracts: Multiple OFT contract implementations (
MyOFT.sol,MyOFTAdapter.sol,MyOFTFungi.sol, etc.) - Deployment Scripts: Hardhat-based deployment and configuration tools
- Testing: Both Hardhat and Foundry test suites
- Configuration: LayerZero network configurations for multiple EVM chains
- Custom Scripts: Token transfer utilities for EVM-to-EVM and EVM-to-Flow bridging
Key Features:
- Multi-chain deployment support (Ethereum, Arbitrum, Base, Avalanche, etc.)
- LayerZero DevTools integration with helper tasks
- Cross-chain configuration management
- Token minting and burning mechanisms
- OFT transfer scripts with environment variable support
Supported Networks:
- Testnets: Sepolia, Base Sepolia, Arbitrum Sepolia, Avalanche Fuji
- Mainnets: Ethereum, Flow, Arbitrum, Base, Avalanche
Solana LayerZero OFT Implementation
A complete Solana-based OFT implementation using Anchor framework for cross-chain token bridging. This directory contains:
- Programs: Solana programs written in Rust (
oft/,endpoint-mock/) - Anchor Framework: Complete Anchor project setup with tests
- Deployment Tools: Solana CLI deployment scripts and utilities
- Configuration: LayerZero configuration for Solana networks
- Tasks: Hardhat tasks for Solana OFT operations
Key Features:
- Solana program deployment and management
- SPL token integration with OFT standard
- Cross-chain messaging with LayerZero
- Mint authority multisig support
- Token creation and transfer utilities
Requirements:
- Rust 1.75.0, Anchor 0.29, Solana CLI 1.17.31
- Docker for program builds
- Node.js for deployment scripts
Supported Networks:
- Solana Devnet/Testnet and Mainnet-beta
- Cross-chain compatibility with EVM networks
- LayerZero: Omnichain communication protocol
- Solidity: Smart contract development
- Rust/Anchor: Solana program development
- Hardhat/Foundry: EVM development and testing
- TypeScript: Type-safe development
-
For EVM Development:
- Node.js and npm/pnpm
- Hardhat and Foundry
- Private keys for deployment networks
-
For Solana Development:
- Rust toolchain
- Anchor framework
- Solana CLI tools
- Docker
-
Clone the repository:
git clone <repository-url> cd flow-bridge-app
-
Choose your implementation:
- For EVM chains: Navigate to
ethereum-oapp/ - For Solana: Navigate to
solana-oapp/
- For EVM chains: Navigate to
-
Follow the setup instructions in each directory's README:
EVM Networks:
cd ethereum-oapp
npx hardhat lz:deploySolana:
cd solana-oapp
solana program deploy --program-id target/deploy/oft-keypair.json target/verifiable/oft.so -u devnetEVM Networks:
npx hardhat lz:oapp:wire --oapp-config layerzero.config.tsSolana:
npx hardhat lz:oapp:wire --oapp-config layerzero.config.ts --solana-secret-key <PRIVATE_KEY>EVM to EVM:
npx hardhat oft:send --from-chain ethereum-mainnet --to-chain flow-mainnet --amount 1.5 --receiver <ADDRESS>EVM to Solana:
npx hardhat --network sepolia-testnet send --dst-eid 40168 --amount <AMOUNT> --to <ADDRESS>Solana to EVM:
npx hardhat lz:oft:solana:send --amount <AMOUNT> --from-eid 40168 --to <ADDRESS> --to-eid 40161- MyOFTAdapter:
0x9D6e122780974a917952D70646dD50D2C4f906ae - PYUSDLocker:
0xb077Ef2833Fd7b426146839a86100708c37bfa65 - MyFungi:
0x39dBc26413e6eEe40265E4a7ddc5abDC64849781
- MyOFTAdapter:
0xDD3BFfb358eF34C2964CB9ce29013D071d59094C - MyOFTMock:
0x4e2dCCAfe86719B7BFfAc3b1041031dDd07aF5fF - MyFungi:
0x1605B1067Ce0D294786A09368f38063Df50C0e92
- MyOFTMock:
0x1119cA4D5145432b7B1CD197d136Da15e236E896
- PYUSDLocker:
0xFA0e06B54986ad96DE87a8c56Fea76FBD8d493F8
- Program ID:
D6RHLYN7x69Cb5Y7dFj9T9uJrJCVT9Bt1LT71xHf7QqK - Mint:
CXk2AMBfi3TwaEL2468s6zP8xq9NxTXjp9gjMgzeUynM - Mint Authority:
A6v157j6XFJXwtT5VWXX7uLYTUrxcYGXB8R6rxrgr9hQ - Escrow:
FKt7QuGTkFWHVt7RVgtEsh3rVRZMaeCdQBseyQ9Vf1PN - OFT Store:
CFVgSccTEXbs3hN7gnCHx3FAa1L5j5StsKABTPuMaAYo
- Program ID:
28EyPNAi9BMTvGuCaQrptMXjpWUi7wx8SxAFVoSZxSXe - Mint:
2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo - Mint Authority:
22mKJkKjGEQ3rampp5YKaSsaYZ52BUkcnUN6evXGsXzz - Escrow:
6z3QyVS36nQ9fk2YvToxqJqXqtAFsSijqgHxpzKyG5xn - OFT Store:
2KUb8dcZR9LyrSg4RdkQx91xX6mPQLpS1MEo6gwfvLZk
For detailed information about each implementation:
- EVM OFT Guide: Complete documentation for EVM LayerZero OFT implementation
- Solana OFT Guide: Comprehensive guide for Solana OFT implementation
- LayerZero Documentation: Official LayerZero protocol documentation
Please refer to the individual README files in each subdirectory for specific contribution guidelines and development practices.
This project is licensed under the terms specified in the individual contract implementations.