Cross-Chain Trades
How Brtr enables trading across different blockchains.
Overview
Cross-chain trades let you buy tokens on one blockchain while paying from another. For example:
- Buy USDC on Base Sepo, pay with ETH on OP Sepo
- Sell tokens on Monad Testnet, receive payment on MegaETH
This works through LayerZero, a messaging protocol that securely coordinates between chains.
The 3-Message Flow
Every cross-chain trade involves 3 messages between blockchains:
Step-by-Step
Buyer Initiates (Message 1)
When you click "Buy" on a cross-chain listing:
- Your payment tokens are escrowed on your chain
- A
FILL_INITIATEmessage is sent to the seller's chain - The message includes your payment details and what you're buying
Your tokens are now safely locked. The trade is in progress.
Seller's Tokens Locked (Message 2)
When the message arrives on the seller's chain:
- The contract verifies everything is valid
- Seller's tokens are locked (but not sent yet)
- A
FILL_CONFIRMATIONis sent back to your chain
Both sides are now locked in. The trade will complete.
Payment Released (Message 3)
When confirmation arrives on your chain:
- Your escrowed payment is released to the seller
- A
FILL_FINALIZATIONis sent to the seller's chain - The seller's tokens are released to you
Trade complete! Both parties have their tokens.
Why 3 Messages?
This might seem complex, but it ensures safety:
| Message | Purpose | What Could Go Wrong Without It |
|---|---|---|
| INITIATE | Lock buyer's payment | Buyer could double-spend |
| CONFIRMATION | Lock seller's tokens | Seller could sell twice |
| FINALIZATION | Release all tokens | Incomplete trades could get stuck |
Each step must succeed before the next begins. If anything fails, tokens stay safe and recovery is possible.
Timing
| Step | Typical Time |
|---|---|
| Your transaction confirms | ~15 seconds |
| Message 1 delivered | 1-2 minutes |
| Message 2 delivered | 1-2 minutes |
| Message 3 delivered | 1-2 minutes |
| Total | 3-6 minutes |
Times vary by network conditions. LayerZero typically delivers messages within 2 minutes per hop.
Gas Costs
Cross-chain trades require gas on both chains:
- You pay: Gas on your chain + LayerZero fees
- Seller pays: Nothing extra (gas is pre-funded via "gas drop")
The UI calculates the total cost before you confirm. The extra ETH you send covers:
- LayerZero messaging fees
- Gas drop for seller's chain execution
- Buffer for gas price fluctuations
What If Something Goes Wrong?
Trade Stuck?
Very rare, but if a message doesn't arrive:
- Wait 10 minutes — Network delays happen
- Check LayerZero Scan — See message status at layerzeroscan.com (opens in a new tab)
- After 30 minutes — Recovery functions become available
Recovery Functions
Built-in safety nets:
| Function | When to Use | What Happens |
|---|---|---|
| Refund Pending Fill | Confirmation never arrived | Buyer gets payment back |
| Emergency Finalize | Finalization lost (admin) | Trade completes manually |
| Emergency Refund | Trade failed completely | Everyone gets tokens back |
Recovery functions have a 30-minute timeout. This prevents race conditions with in-flight messages.
Monitoring Your Trade
Track cross-chain message status:
- In-app: Watch the progress timeline
- LayerZero Scan: Enter your transaction hash at layerzeroscan.com (opens in a new tab)
- Block explorers: Check events on each chain
Same-Chain is Simpler
If you don't need cross-chain:
- Trade on the same chain as the listing
- Single transaction, instant completion
- Lower gas costs, no messaging fees
Pro tip: When creating listings, add at least one same-chain payment option for buyers who prefer speed.