Skip to content
This new developer portal is under construction. For complete documentation, please refer to the old developer portal.

Algorand Standard Assets (ASAs)

The Algorand protocol supports the creation of on-chain assets that benefit from the same security, compatibility, speed and ease of use as the Algo. The official name for assets on Algorand is Algorand Standard Assets (ASA).

With Algorand Standard Assets you can represent stablecoins, loyalty points, system credits, and in-game points, just to name a few examples. You can also represent single, unique assets like a deed for a house, collectable items, unique parts on a supply chain, etc. There is also ABI_CODEC functionality to place transfer restrictions on an asset that help support securities, compliance, and certification use cases.

Quick start videos

If you prefer videos, take a look at this 7 minute guide to learn about Introduction to Assets.

Assets overview

Here are several things to be aware of before getting started with assets.

  • For every asset an account creates or owns, its minimum balance is increased by 0.1 Algos (100,000 microAlgos).
  • This minimum balance requirement will be placed on the original creator as long as the asset has not been destroyed. Transferring the asset does not alleviate the creator’s minimum balance requirement.
  • Before a new asset can be transferred to a specific account the receiver must opt-in to receive the asset. This process is described in Receiving an asset.
  • If any transaction is issued that would violate the minimum balance requirements, the transaction will fail.

Asset parameters

The type of asset that is created will depend on the parameters that are passed during asset creation and sometimes during asset re-configuration. View the full list of asset parameters in the Asset Parameters Reference.

Immutable asset parameters

These eight parameters can only be specified when an asset is created.

  • Creator (required)

  • AssetName (optional, but recommended) ../transactions/transactions#assetname

  • UnitName (optional, but recommended) ../transactions/transactions#unitname

  • Total (required) ../transactions/transactions#total

  • Decimals (required) ../transactions/transactions#decimals

  • DefaultFrozen (required)

  • URL (optional)

  • MetaDataHash (optional)

Mutable asset parameters

There are four parameters that correspond to addresses that can authorize specific functionality for an asset. These addresses must be specified on creation but they can also be modified after creation. Alternatively, these addresses can be set as empty strings, which will irrevocably lock the function that they would have had authority over.

Here are the four address types.

Manager Address

The manager account is the only account that can authorize transactions to re-configure or destroy an asset.

Reserve Address

Specifying a reserve account signifies that non-minted assets will reside in that account instead of the default creator account. Assets transferred from this account are “minted” units of the asset. If you specify a new reserve address, you must make sure the new account has opted into the asset and then issue a transaction to transfer all assets to the new reserve.

Freeze Address

The freeze account is allowed to freeze or unfreeze the asset holdings for a specific account. When an account is frozen it cannot send or receive the frozen asset. In traditional finance, freezing assets may be performed to restrict liquidation of company stock, to investigate suspected criminal activity or to deny-list certain accounts. If the DefaultFrozen state is set to True, you can use the unfreeze action to authorize certain accounts to trade the asset (such as after passing KYC/AML checks).

Clawback Address

The clawback address represents an account that is allowed to transfer assets from and to any asset holder (assuming they have opted-in). Use this if you need the option to revoke assets from an account (like if they breach certain contractual obligations tied to holding the asset). In traditional finance, this sort of transaction is referred to as a clawback.

If any of these four addresses is set to "" that address will be cleared and can never be reset for the life of the asset. This will also effectively disable the feature of that address. For example setting the freeze address to "" will prevent the asset from ever being frozen.

Quick start videos

If you prefer videos, take a look at this 8 minute guide to learn about Building Solutions Using ASAs.