Skip to main content

Assets on Polymesh

Assets play a central role on Polymesh, enabling the representation of everything from traditional securities to digital collectibles. Polymesh provides a robust, purpose-built framework for the creation and management of both Fungible Assets and Non-Fungible Assets (NFT) assets. Rich asset features and functionality are available natively on-chain without the need for custom smart contract development, although smart contracts are also available for advanced use cases. All native assets share a standard interface, allowing core chain functionality and integrations to work seamlessly with any Polymesh native asset. This means that if an integration supports the standard asset interface, it can support all native assets on Polymesh, without requiring new integrations for individual smart contracts.

The Polymesh Asset Standard

A common question is: "What token standard do Polymesh assets comply with?" Unlike smart contract platforms, where each token may implement its own variation of a standard (such as ERC-20 or ERC-721), Polymesh defines its asset standard directly in the blockchain runtime. This means all assets, whether fungible or non-fungible, are governed by the same robust, chain-level logic and interface. The standard is enforced by the chain itself, not by individual smart contracts.

We refer to these as Polymesh Native Assets to distinguish them from assets implemented via smart contracts. However, note that the term "native asset" does not refer to the POLYX utility token, which is the native protocol token of Polymesh. Instead, Polymesh Native Assets are any assets (securities, tokens, NFTs, etc.) created and managed using the Polymesh asset framework.

This approach ensures:

  • Consistency and predictability for all assets on the network
  • Built-in compliance, settlement, and management features
  • Seamless integration for wallets, custodians, and other infrastructure
  • No need for custom code or audits for each new asset type

If an integration or application supports the Polymesh asset standard, it will work with all assets on the chain, without requiring new work for each asset or smart contract implementation.

What is an Asset?

An asset on Polymesh is a uniquely identified, on-chain record that can represent any digitized value such as equity, bonds, funds, stablecoins, or NFTs. Each asset is assigned a unique 16-byte AssetId (UUID) at creation, which is used throughout the chain to reference and manage the asset. Assets can be:

  • Fungible: Interchangeable tokens with divisible or indivisible supply (e.g., shares, bonds, stablecoins). See Fungible Assets.
  • Non-Fungible: Unique tokens, each with distinct properties, managed in collections (e.g., NFTs, certificates). See Non-Fungible Assets.

Asset Lifecycle Overview

  1. Register Ticker (optional): Reserve a unique ticker for your asset (fee applies).
  2. Create Asset: Define asset properties and create on-chain, receiving a unique AssetId.
  3. Link Ticker: Optionally link a registered ticker to the asset.
  4. Configure Compliance & Metadata: Set compliance rules, metadata, and external identifiers.
  5. Appoint Agents: Delegate management to external agents as needed.
  6. Issue Tokens: Mint tokens to portfolios you control, then distribute via settlement instructions.
  7. Ongoing Management: Update documentation, metadata, compliance, and manage corporate actions as required.

Asset Creation

Assets are created on-chain by an identity (the issuer) using either the create_asset or create_asset_with_custom_type methods. You must specify the asset name, divisibility, asset type, and can optionally include external identifiers and a funding round name. Each asset receives a unique AssetId.

  • Fungible Assets: Created directly with the chosen type and properties.
  • NFTs: After creating the asset, you must register any local NFT keys or metadata types to the asset before creating the NFT collection. See Non-Fungible Assets for details. If specifying local NFT keys, always create the asset first, then register keys, then create the collection.

Optionally, a unique ticker can be registered and linked to the asset, providing a human-readable symbol. Ticker registration is time-limited and transferable. See Ticker Registration.

For additional asset type specific functionality see Fungible Assets and Non-Fungible Assets.

Core Features of Assets

Polymesh assets share a set of powerful, standardized features, regardless of type. For details on each, see the linked dedicated pages:

  • Ownership & Control: Asset ownership is always at the identity level. The issuer can transfer ownership via on-chain authorization. Asset control can be delegated to Asset Agents with granular permissions. See Ownership Transfer.
  • Compliance & Settlement: All asset transfers are subject to compliance rules defined by the issuer. Transfers are executed through the Settlement engine, ensuring all rules are enforced. See Compliance.
  • Metadata & Identifiers: Assets can have both local and global metadata, and can be assigned standard securities identifiers (ISIN, CUSIP, etc.). See Asset Metadata and the Securities Identifiers section below.
  • Documentation: Issuers can link off-chain documents (prospectuses, filings, etc.) to assets, storing references and hashes on-chain for auditability. See Document References.
  • Issuance & Redemption: Issuers or authorized agents can mint (issue) or burn (redeem) tokens for an asset, with all actions recorded on-chain. See Fungible Assets and Non-Fungible Assets for details.
  • Checkpoints & Corporate Actions: (Fungible assets only) Assets support creation of checkpoints to snapshot balances at specific times, enabling distributions and voting. See Corporate Actions. NFTs do not support checkpoints or corporate actions, see Non-Fungible Assets for details.
  • Advanced Controls: Asset issuers/agents can freeze/unfreeze transfers, set mandatory mediators, manage venue restrictions, and more. See Freezing and Unfreezing Assets and Controller Transfers.

Ticker Registration

Tickers are optional, unique symbols that can be linked to assets for easier reference. Tickers can be associated with both fungible assets and non-fungible asset collections. They offer an additional unique identifier that can be defined by the asset owner for a more convenient way to reference an asset.

  1. Register Ticker: Reserve a unique ticker for 60 days by calling the asset::register_unique_ticker function. Ownership of the registration is assigned to the caller. If not linked to an asset within 60 days, the ticker registration will expire and become available to others.
  2. Link Ticker: Link the registered ticker to the asset by calling asset::link_ticker_to_asset_id.
  3. Unlink Ticker: The asset owner or an authorized agent can unlink the ticker from the asset using asset::unlink_ticker_from_asset_id. This does not affect the ticker registration itself, which remains owned by the original owner.
  4. Ticker Ownership Transfer: Ticker ownership can be transferred to another identity. See Ownership Transfer for details.

Asset Name (Renaming)

The asset name is a human-readable label for the asset, set at creation and updatable by the owner or agent using the asset::rename_asset method. Renaming does not affect the asset's operation or identifiers, but helps with discoverability and clarity for users and integrators. Asset names are not unique and can be shared across different assets. However, the asset name can be important for user interfaces, wallets, and other applications that display asset information.

Funding Round

The funding round is an optional, descriptive label (e.g., "Seed Round", "Series A") that can be set at asset creation or updated later with asset::set_funding_round. Its primary purpose is to categorize and track token issuance events for financial reporting, compliance, and audit trails. The system records how many tokens are issued in each funding round, and this information is included in on-chain events and distribution records.

Asset Types

Polymesh supports a wide range of asset types, each designed for specific regulatory, operational, or business needs. The asset type determines whether the asset is fungible or non-fungible and can affect which features are available (e.g., checkpoints, transfer restrictions, NFT collections). Asset types also help with regulatory classification and reporting.

  • Equity (common, preferred): Represents shares in a company, either common or preferred stock. Used for traditional equity securities.
  • Bonds and fixed income: Represents debt instruments, such as bonds or notes, with fixed or variable returns.
  • Funds and REITs: Used for pooled investment vehicles, including mutual funds, ETFs, and real estate investment trusts.
  • Commodities: Represents physical or digital commodities, such as gold, oil, or tokenized resources.
  • Stablecoins: Pegged-value tokens, typically representing fiat currencies or other stable assets.
  • Derivatives: Contracts whose value is derived from other assets, such as options or futures.
  • Revenue share agreements: Represents claims on a share of revenue from a business or project.
  • Structured products: Custom financial instruments combining multiple asset types or features.
  • Custom asset types (user-defined): Issuers can register and use custom asset types for specialized or novel use cases, using asset::register_custom_asset_type.
  • Non-fungible tokens (NFTs): Unique tokens managed in collections, used for digital collectibles, certificates, or other one-of-a-kind assets. NFT types enable features specific to collections and unique ownership.

The asset type is set at creation and can only be updated within the same fungibility class (fungible to fungible, NFT to NFT) using asset::update_asset_type. Asset type is not just metadata: it determines how the asset behaves on-chain. For example, only assets with a fungible type can use certain features (like checkpoints, transfer restrictions, or redemption), while NFT types enable collection and unique token management. Custom asset types can be registered with asset::register_custom_asset_type and used for specialized or user-defined asset categories.

Securities Identifiers

Securities identifiers (such as ISIN, CUSIP, LEI, CINS, and FIGI) can be assigned to Polymesh assets to help them integrate with global financial systems and meet regulatory requirements. These identifiers are informational and make assets more easily recognizable and interoperable with custodians, exchanges, and other infrastructure.

Identifiers can be set during asset creation or updated later by the asset owner or an authorized agent using the asset::update_identifiers function. All identifiers are validated for correct format and changes are recorded on-chain for transparency.

Document References

Polymesh allows asset owners and authorized agents to attach references to off-chain documents directly to an asset. Document references can include a URI (such as a URL, IPFS address, or other location), a document name, and an optional hash of the document content. The referenced documents themselves can be publicly accessible, encrypted, or protected behind secure login as appropriate for the use case.

  • Adding Documents: Use asset::add_documents to attach one or more document references to an asset. Including a hash allows anyone to verify the integrity of the off-chain document by comparing it to the hash stored on-chain.
  • Removing Documents: Use asset::remove_documents to remove document references from an asset. All changes are recorded immutably on-chain, creating a transparent audit trail.

This functionality provides a tamper-evident, on-chain record of all documents associated with an asset, supporting compliance, due diligence, and independent verification for regulatory or legal purposes.

Controller Transfers

Controller transfers allow the asset owner or an authorized agent to forcibly transfer tokens or NFTs from one portfolio to another, typically for regulatory or legal enforcement scenarios. This feature is available for both fungible and non-fungible assets, but the method and parameters differ slightly:

  • Fungible Assets: Use the asset::controller_transfer method. Parameters include asset_id, value (amount to transfer), and from_portfolio (the portfolio to debit). The tokens are transferred to the caller's default portfolio.
  • Non-Fungible Assets (NFTs): Use the nft::controller_transfer method. Parameters include asset_id, nft_id (the unique identifier of the NFT to transfer), source_portfolio (the portfolio to debit), and callers_portfolio_kind (the ID of a portfolio owned by the caller to receive the NFT). This allows specifying the exact NFT and the destination portfolio.
info

Note: Assets that are locked in a settlement instruction cannot be transferred using controller transfer. While controller transfers bypass many compliance and restriction checks, they cannot bypass basic balance checks. If tokens or NFTs are locked (e.g., as part of a pending settlement), controller transfer will fail due to insufficient available balance.

Controller transfers are powerful tools for asset issuers and agents, but should be used with care as they override normal transfer restrictions and compliance checks.

Freezing and Unfreezing Assets

Freezing and unfreezing assets or NFT collections is an important control for issuers and agents, allowing them to quickly respond to regulatory, compliance, or emergency situations. For example, freezing may be required if there is a suspected security breach, regulatory investigation, or to prevent unauthorized transfers during a corporate action or legal dispute.

Assets and NFT collections on Polymesh can be frozen or unfrozen by the asset owner or an authorized agent. When an asset is frozen, regular transfers are blocked, including settlements, STO distributions, and portfolio movements.

  • Freeze: Call asset::freeze with the asset_id to prevent standard transfers of the asset or NFT collection.
  • Unfreeze: Call asset::unfreeze with the asset_id to restore normal transfer functionality.
info

While an asset is frozen, controller transfers are still permitted. This allows issuers or agents to forcibly move tokens or NFTs even when the asset is otherwise locked down.

Further Reading


warning

Anyone can create and configure assets on Polymesh, including setting names, tickers, metadata, and identifiers. The presence of information on-chain does not guarantee that an asset is genuine, regulated, or recognized by any authority. Always perform your own due diligence before interacting with or relying on any asset or its associated data.

Polymesh assets are designed for flexibility, compliance, and extensibility, supporting a wide range of use cases from regulated securities to digital collectibles.