Skip to main content
This section covers how to add crosschain capabilities to your application. The features are ordered from most commonly used (and easiest to integrate) to most advanced (requiring deeper systems understanding).

Why This Order?

Most developers coming to LayerZero want to transfer tokens across chains. The question is: how much customization do you need?
If you want to…Use thisComplexity
Transfer existing assets (USDC, ETH, USDT, USDT0, USDe, WBTC, etc.)Stargate, OFTsLowest
Transfer tokens + execute logic on destinationComposerLow
Manage crosschain liquidity in vaultsOVaultMedium
Build completely custom crosschain logicOAppHigher
Read data from other chainslzReadHigher

Transfer Existing Assets

Best for: Integrating transfers of assets that are already crosschain enabled. If the asset you need already exists as an OFT or in Stargate pools, you can integrate directly without deploying anything.

Stargate Assets

Stargate provides unified liquidity pools for major assets across 60+ chains. The hard work—issuing the asset, managing liquidity, handling edge cases—is already done. Assets: ETH, USDC, USDT, and more via unified pools.

Existing OFTs

Other teams have deployed OFTs that you can integrate directly. These maintain unified supply across chains through LayerZero messaging. Assets: USDT0, USDe, WBTC, and more.
Don’t see your asset? You can deploy your own OFT to make any token crosschain.

Composer

Best for: Token transfers + arbitrary logic in a single transaction. Composers let you bundle a token transfer with additional calldata that executes on the destination chain. Send tokens AND trigger a swap, deposit into a protocol, or call any contract function. Example use cases:
  • Transfer USDC and swap to ETH on arrival
  • Bridge tokens directly into a lending protocol
  • Crosschain purchases (send payment + execute buy)

OVault

Best for: Crosschain vault and liquidity management. OVault provides a standard for managing assets across multiple chains from a unified interface. Deposit on one chain, manage liquidity across many.

OApp (Custom Messaging)

Best for: Building completely custom crosschain systems. OApp is the base standard for arbitrary crosschain messaging. You define the message format, the sending logic, and the receiving logic. Full flexibility, but you’re responsible for the design. When to use OApp:
  • You need to send non-token data across chains
  • You’re building crosschain governance, oracles, or coordination systems
  • You need complete control over message handling
OApp requires systems design knowledge. You’re defining message schemas, handling failures, and managing state across chains. If you just need token transfers, use Stargate, OFT, or Composer instead.
Multi-chain support: OApp is available on Solana, Sui, IOTA, and Aptos.

lzRead (Crosschain Queries)

Best for: Reading data from other chains without transferring assets. lzRead allows your contracts to query state from other blockchains. Instead of sending a message and waiting for a response, you can pull data directly. Example use cases:
  • Check token balances on another chain
  • Read oracle prices from a different network
  • Verify state before executing logic

Comparison Table

FeatureToken TransferCustom DataCompose LogicComplexity
StargateYes (pooled assets)NoNoLowest
ComposerYes (OFT-based)Yes (calldata)YesLow
OVaultYes (vault deposits)LimitedYesMedium
OAppManualYes (anything)YesHigher
lzReadNoYes (read-only)NoHigher

Next Steps