On this page

Asset identity

An asset is identified by its origin chain, original token and permanent creator. Two creators using the same original token produce separate assets, separate OFT facades and separate backing balances.

Discover an asset

On the origin router, read assetOf(originToken, creator). Zero means that creator has not created the asset. Read getAsset(assetId) to find its local facade. On any chain, assetIdOf(token) identifies an existing local OFT or OFTAdapter.

The canonical web link is /{locale}/tokens/{originChainId}/{originToken}/{creator}. Without the creator segment, the page lists assets of the original token. It must not silently choose a different creator.

Descriptor

The asset ID is the Keccak-256 hash of the packed, versioned descriptor, not Solidity ABI encoding. It commits to origin EID, bytes32 origin token, bytes32 creator, name, symbol, decimals, shared decimals, the issuer-compliance requirement (complianceMode) and pre-enabled EIDs. These fields are frozen.

Use the canonical wire specification and vectors in solidity-v2/spec for non-EVM integrations. EVM addresses are left-padded to bytes32. EIDs are not chain IDs.

Predicted is not deployed

predictOFT(assetId) and predictAdapter(assetId) calculate local addresses. A prediction is not evidence of deployment or an enabled route. Check getAsset(assetId).exists, peers and isChainEnabled(assetId, eid) on the actual routers.

The API separates tokens (registered facades) from enabledEids (origin-approved destinations).