Sending from Tempo
Tempo's LayerZero deployment uses the EndpointV2Alt fee model: messaging fees are paid in an ERC-20 fee token (LZD) rather than the chain's native value. The Omnisea bridges detect this automatically via endpoint.nativeToken() and adjust how they collect fees.
Receiving on Tempo is unaffected - a user sending Base -> Tempo pays fees in ETH on Base as usual. This page only concerns transfers whose source is Tempo.
Detect the fee token
const feeToken = await tempoClient.readContract({
address: OFT_BRIDGE,
abi: bridgeAbi,
functionName: "endpointNativeToken",
});
const usesFeeToken = feeToken !== "0x0000000000000000000000000000000000000000";On Base, Optimism, Arbitrum, Polygon, and BNB Chain this returns the zero address (pay with msg.value). On Tempo it returns the LZD token address.
The Tempo send flow
1. Quote normally
The quote still returns one number - but on Tempo it is denominated in LZD smallest units and already includes the fee-token protocol fee (fixedFeeTokenProtocolFee, 0.10 LZD):
const totalFee = await tempoClient.readContract({
address: OFT_BRIDGE,
abi: bridgeAbi,
functionName: "quoteSendOFT",
args: [DST_EID, representation, amount, recipient, isFirstTransfer, options],
});2. Check LZD balance
The sender must hold at least totalFee LZD.
3. Approve the bridge for the fee
This is in addition to any token approval for originals:
await tempoWallet.writeContract({
address: feeToken,
abi: erc20Abi,
functionName: "approve",
args: [OFT_BRIDGE, totalFee],
});4. Send with msg.value = 0
The Tempo endpoint rejects any native value:
await tempoWallet.writeContract({
address: OFT_BRIDGE,
abi: bridgeAbi,
functionName: "sendOFT",
args: [DST_EID, representation, amount, recipient, isFirstTransfer, options],
value: 0n,
});The bridge pulls exactly totalFee LZD, forwards LayerZero's share, and records the protocol fee - the same exact-fee rule applies, just in LZD.
Sending to Tempo
Always buy at least 1,500,000 lzReceive gas in your executor options for any route whose destination is Tempo. This covers destination execution including first-time representation creation on Tempo's execution environment.
Chain facts
| Chain ID | 4217 |
| LayerZero EID | 30410 |
| EndpointV2 (Alt) | 0x20Bb7C2E2f4e5ca2B4c57060d1aE2615245dCc9C |
| RPC | https://rpc.tempo.xyz |
| Explorer | https://explore.tempo.xyz |
| Native currency label | USD |