On this page

Fees

An Omniassets transfer has one source-chain payment:

total quote = LayerZero message fee + Omnisea flat protocol fee

Both parts are returned together by quoteSendOriginal or quoteSendOFT.

Pay the exact quote

On the current supported EVM deployments, the endpoint fee is paid in the source chain's native token. Pass the complete quote as msg.value:

const fee = await publicClient.readContract({
  address: omnisea,
  abi: omniseaAbi,
  functionName: "quoteSendOriginal",
  args,
});

await walletClient.writeContract({
  account,
  address: omnisea,
  abi: omniseaAbi,
  functionName: "sendOriginal",
  args,
  value: fee,
});

The contract accepts neither a buffer nor a refund request. If msg.value differs from the live quote, the transaction reverts with InvalidFee.

Read fee configuration

These getters expose the current configuration:

function fixedProtocolFee() external view returns (uint256);
function fixedFeeTokenProtocolFee() external view returns (uint256);
function endpointNativeToken() external view returns (address);

fixedProtocolFee() is denominated in the source chain's native token. endpointNativeToken() returns the zero address for a native-token endpoint. The fee-token getters exist for LayerZero endpoints that use an ERC-20 fee token; they are not needed for the current supported EVM mesh.

Use the quote function as the source of truth. Fee configuration and LayerZero prices can change, so hard-coded fee values will become stale.

What changes the LayerZero fee

The LayerZero part can vary with:

  • source and destination;
  • destination receive gas;
  • first deployment versus an existing Omniasset;
  • optional destination composition;
  • current endpoint and executor pricing.

The token amount does not change the protocol fee. See LayerZero for execution options.

Approval gas is separate

An original ERC-20 usually requires an approval transaction before the transfer. Its gas is paid to the source chain by the user and is not included in the Omniassets quote. Omniasset transfers do not require an ERC-20 approval.

Introducing Omnipad-Launch tokens between chains