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
- Register Ticker (optional): Reserve a unique ticker for your asset (fee applies).
- Create Asset: Define asset properties and create on-chain, receiving a unique
AssetId
. - Link Ticker: Optionally link a registered ticker to the asset.
- Configure Compliance & Metadata: Set compliance rules, metadata, and external identifiers.
- Appoint Agents: Delegate management to external agents as needed.
- Issue Tokens: Mint tokens to portfolios you control, then distribute via settlement instructions.
- 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.
- 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. - Link Ticker: Link the registered ticker to the asset by calling
asset::link_ticker_to_asset_id
. - 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. - 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 includeasset_id
,value
(amount to transfer), andfrom_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 includeasset_id
,nft_id
(the unique identifier of the NFT to transfer),source_portfolio
(the portfolio to debit), andcallers_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.
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 theasset_id
to prevent standard transfers of the asset or NFT collection. - Unfreeze: Call
asset::unfreeze
with theasset_id
to restore normal transfer functionality.
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
- Fungible Assets
- Non-Fungible Assets
- Asset Metadata
- Asset Ownership Transfer
- Asset Checkpoints
- Asset Agents & Permissions
- Settlement
- Corporate Actions
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.