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

# Cross-Chain Launches

> Launch a token from BSC, Ethereum, or Solana — it deploys on Base via LayerZero

# 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

| Property        | Value                                                                                                                                                              |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Origin Chain    | BSC (EID 30102)                                                                                                                                                    |
| Launcher        | RemoteLauncher [`0x883d5199E85b68E70D017335AcE642fC069b2eB3`](https://bscscan.com/address/0x883d5199E85b68E70D017335AcE642fC069b2eB3)                              |
| Token (Base)    | [`0x1f62c65103a0ad0112b91a923da303ca0b2f4a4d`](https://basescan.org/address/0x1f62c65103a0ad0112b91a923da303ca0b2f4a4d)                                            |
| Curve (Base)    | [`0x36d5dae1a7180d974e209947350549ce7d54d911`](https://basescan.org/address/0x36d5dae1a7180d974e209947350549ce7d54d911)                                            |
| Status          | ✅ Deployed, indexed, tradeable                                                                                                                                     |
| Post-launch buy | [`0x82f0fef0ff79b1a3264745c96c7afa93c1c796f006b16d289bcb467d50cc9696`](https://basescan.org/tx/0x82f0fef0ff79b1a3264745c96c7afa93c1c796f006b16d289bcb467d50cc9696) |

### LZDEMOETH — Launched from Ethereum

| Property        | Value                                                                                                                                                              |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Origin Chain    | Ethereum (EID 30101)                                                                                                                                               |
| Launcher        | RemoteLauncher [`0x0A43Cb04B8b6498aEd8BCD5FEC817c890ed7E376`](https://etherscan.io/address/0x0A43Cb04B8b6498aEd8BCD5FEC817c890ed7E376)                             |
| Token (Base)    | [`0xde6f6f27adc60e7948d1831933d86ecc40d072be`](https://basescan.org/address/0xde6f6f27adc60e7948d1831933d86ecc40d072be)                                            |
| Curve (Base)    | [`0x5dc71c2fea96be2780376fb21d79e818210f83b9`](https://basescan.org/address/0x5dc71c2fea96be2780376fb21d79e818210f83b9)                                            |
| Status          | ✅ Deployed, indexed, tradeable                                                                                                                                     |
| Post-launch buy | [`0xfbdb57a4a57786248ad77f413e8b86946c628e8ace6b9a4f695a34481f9a6b02`](https://basescan.org/tx/0xfbdb57a4a57786248ad77f413e8b86946c628e8ace6b9a4f695a34481f9a6b02) |

### LZDEMOSOL — Launched from Solana

| Property     | Value                                                                                                                                    |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| Origin Chain | Solana (EID 30168)                                                                                                                       |
| Launcher     | Token Launcher [`8AkSHTD2PBhZhAED1zG3vgZ3y3SyPdbL7xBJ8SfXg9bx`](https://solscan.io/account/8AkSHTD2PBhZhAED1zG3vgZ3y3SyPdbL7xBJ8SfXg9bx) |
| Token (Base) | [`0x7cbd2ed22802583fe128928e7807bc1d2fd43d09`](https://basescan.org/address/0x7cbd2ed22802583fe128928e7807bc1d2fd43d09)                  |
| Curve (Base) | [`0x122abee05c8d1bbb39d0c3795fa2835ca77879fc`](https://basescan.org/address/0x122abee05c8d1bbb39d0c3795fa2835ca77879fc)                  |
| Origin TX    | [`exvfdo58HCNS...`](https://solscan.io/tx/exvfdo58HCNSnef6iHstu5NCaYTRoEKEF2s2BDtYXdKLp6ZEhkmPo1SXQ51KsVjGQhqMZjAKyA4UiS2SHR9Z2uU)       |
| Status       | ✅ Deployed, indexed, tradeable                                                                                                           |

<Info>
  **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.
</Info>

***

## Auto OFT Deployment

After a token is launched (from any chain), the OFTFactory can deploy the full OFT infrastructure in a single Base transaction:

1. CREATE2 deploy OmniOFTAdapter on Base
2. Predict all 6 remote OFT addresses deterministically
3. Set bidirectional peers on the adapter (using predicted addresses)
4. Set enforced options (65K gas, msgType 1) for all 6 routes
5. Send 6 LayerZero messages to OFTFactoryRemote contracts
6. Register adapter in CCBuyerV3 for cross-chain buy auto-bridge-back
7. Refund excess ETH to caller

On each remote chain (\~30–60s after the Base transaction):

1. OFTFactoryRemote receives the LZ message via `_lzReceive()`
2. CREATE2 deploys OmniOFT with matching salt
3. Sets peer back to the Base OFTAdapter
4. Sets enforced options for home chain sends
5. 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.
