On this page

Asset identity

Every Omniasset is tied to one original token by two values:

(originalEid, originalToken)

originalEid is the LayerZero endpoint ID of the original chain. originalToken is the original contract identifier as raw bytes. For an EVM original, it is the 20-byte token address.

This identity does not change when the asset moves between representation chains.

Discover an Omniasset's original

function oftToOriginal(address representation)
    external
    view
    returns (uint32 originalEid, bytes originalToken, bool exists);

If exists is true, the selected token is an Omniasset. If false, treat it as an original ERC-20 on the local chain.

Use the returned identity to locate the representation on another chain:

function representationFor(uint32 originalEid, bytes originalToken)
    external
    view
    returns (address);

The zero address means it has not been deployed on that destination.

Predict before deployment

Omniassets use deterministic minimal-proxy deployment. You can calculate the destination address before the first transfer:

function predictRepresentation(uint32 originalEid, bytes originalToken)
    external
    view
    returns (address);

Use representationFor to check deployed state and predictRepresentation when you need the future address. A predicted address is not proof that contract code exists.

Metadata is frozen at origin

The current Registry source preserves the original token's name and symbol as read on its first send:

name:   {original name}
symbol: {original symbol}

Decimals are preserved. If the original does not return decimals, the Registry falls back to 18. A first send requires nonempty name and symbol values.

The stored name, symbol, decimals, and contract-level URI are reused for later destinations. No symbol prefix or chain-name suffix is added. The original chain and token remain available through the asset identity getters.

Existing representations and previously frozen metadata are not renamed by a source update. Earlier deployments used an om symbol prefix and origin-chain name suffix. Read the deployed token's name() and symbol() rather than inferring them from the current source or a UI label. Metadata is a first-transfer snapshot; later changes to the original token are not automatically synchronized.

Identity versus display data

Never identify an asset by name, symbol, logo, or representation address alone. Use the original endpoint ID and original token bytes. This remains stable across destinations and avoids symbol collisions.

For an indexer, store both:

  • stable identity: originalEid and originalToken;
  • local instance: EVM chain ID and representation address.
Introducing Omnipad-Launch tokens between chains