Cross-Chain Token Launches
One of Omni.fun’s most distinctive features: a user on any supported chain can launch a token that deploys on Base. The entire flow happens via a single LayerZero message.
How It Works
EVM → Base (RemoteLauncher)
RemoteLauncher contracts are deployed on BSC and Ethereum. A user calls launch(name, symbol) with LZ fees attached. The contract sends a LayerZero message to CrossChainLauncher on Base, which calls factory.launchFor() — deploying the token and bonding curve with the remote user as the creator.
BSC/Ethereum Base
┌──────────────────┐ LayerZero V2 ┌──────────────────────┐
│ RemoteLauncher │ ── lzSend ─────→ │ CrossChainLauncher │
│ launch(name,sym) │ │ _lzReceive() │
│ + LZ native fee │ │ → factory │
└──────────────────┘ │ .launchFor() │
│ → Token + Curve │
└──────────────────────┘
LZ Options: 6M gas allocation for factory deployment on Base.
Solana → Base (Token Launcher)
The Solana Token Launcher is an Anchor program that ABI-encodes the launch parameters and sends them via LayerZero’s Solana endpoint. This is a cross-VM launch — Solana to EVM via LayerZero.
Solana Base
┌──────────────────┐ LayerZero V2 ┌──────────────────────┐
│ Token Launcher │ ── lzSend ─────→ │ CrossChainLauncher │
│ create_token() │ (cross-VM) │ _lzReceive() │
│ ABI-encoded │ │ → decode payload │
│ payload │ │ → factory │
└──────────────────┘ │ .launchFor() │
└──────────────────────┘
The Anchor program encodes (deployer, name, symbol) in Solidity ABI format, matching what the CrossChainLauncher expects. LayerZero handles the cross-VM message delivery between Solana and Base.
Live Evidence
All three cross-chain launches were executed on mainnet and verified:
LZDEMOBNB — Launched from BSC
LZDEMOETH — Launched from Ethereum
LZDEMOSOL — Launched from Solana
Cross-VM milestone: LZDEMOSOL was launched from a Solana Anchor program, delivered via LayerZero to an EVM contract on Base, which deployed a standard ERC-20 token and bonding curve. This is a production cross-VM token launch — Solana → LayerZero → EVM.
Auto OFT Deployment
After a token is launched (from any chain), the OFTFactory can deploy the full OFT infrastructure in a single Base transaction:
- CREATE2 deploy OmniOFTAdapter on Base
- Predict all 6 remote OFT addresses deterministically
- Set bidirectional peers on the adapter (using predicted addresses)
- Set enforced options (65K gas, msgType 1) for all 6 routes
- Send 6 LayerZero messages to OFTFactoryRemote contracts
- Register adapter in CCBuyerV3 for cross-chain buy auto-bridge-back
- Refund excess ETH to caller
On each remote chain (~30–60s after the Base transaction):
- OFTFactoryRemote receives the LZ message via
_lzReceive()
- CREATE2 deploys OmniOFT with matching salt
- Sets peer back to the Base OFTAdapter
- Sets enforced options for home chain sends
- Transfers ownership to configured owner
Total cost: ~$1.60 in LZ fees for 6-chain OFT deployment.
Total time: 1 Base transaction + ~60 seconds for all 6 remote deployments.
Five Launch Paths, One Factory
Every launch path ultimately calls the same factory on Base:
| Path | Origin | Mechanism | Factory Call |
|---|
| Direct (Base) | Base | User → factory.launch() | launch() |
| BSC | BSC | RemoteLauncher → LZ → CrossChainLauncher | launchFor() |
| Ethereum | Ethereum | RemoteLauncher → LZ → CrossChainLauncher | launchFor() |
| Solana | Solana | Token Launcher → LZ → CrossChainLauncher | launchFor() |
| AI Agent | Any | API → signed tx → factory | launchFor() |
All tokens, regardless of origin, are identical ERC-20s on Base with the same bonding curve mechanics, fee structure, and graduation path.