The Algorand protocol enables the creation of on-chain assets that enjoy the same level of security, compatibility, speed, and user-friendliness as the Algo cryptocurrency. These assets are officially known as Algorand Standard Assets (ASA). ASA allows for the representation of various assets, including stablecoins, loyalty points, system credits, in-game points, and more. It also enables the representation of unique assets such as property deeds, collectible items, specific components in a supply chain, and others.
Algorand Standard Assets (ASAs) are utilized to create Non-Fungible Tokens (NFTs) within the Algorand blockchain. ASAs are integrated into the protocol itself and can be generated through a specific type of transaction, distinguishing it from other blockchains that require smart contracts for asset representation. To create an NFT, only a few parameters need to be specified to designate it as such and establish a link to the metadata. This metadata provides potential owners with the necessary information to verify the asset's integrity. For example, setting the total amount of units to 1 and the number of decimals to 0 ensures the creation of a single, indivisible unit of the ASA. For proper formatting of NFT properties, the Algorand community adheres to the standards outlined in the Algorand Request for Comments. The creation transaction for such an asset can be implemented using any of Algorand's SDKs, in our case we will be using the java sdk.
ARC-3 is the official Algorand Standard Asset Parameters Conventions for Fungible and Non-Fungible Tokens. It provides a standard for specifying ASA metadata, including asset name, unit name, and other properties. ARC-3 is more general and can be applied to both fungible and non-fungible tokens.
Asset Name: The asset name is either arc3
or suffixed by @arc3
. This allows client software to know when an asset follows the ARC-3 conventions.
JSON Metadata File Schema: ARC-3 introduces a JSON Metadata File Schema that allows indicating the MIME type of the files pointed by any URI field. This helps clients to display the resource appropriately without having to first query it to find out the MIME type.
Asset Integrity: A digest of the JSON Metadata file is included in the ASA parameters to ensure the integrity of this file. This is important to ensure the integrity of the JSON file when IPFS is not used.
MIME Type Fields: MIME type fields are added to help clients know how to display the files pointed by URI.
Relative URI Support: Support for relative URI is added to allow storing both the JSON Metadata files and the files it refers to in the same IPFS directory.
Asset Configuration: Asset Name and Asset Unit can be optionally specified in the ASA parameters. This allows wallets that are not aware of ARC-3 or that are not able to retrieve the JSON file to still display meaningful information.
ARC-69 is an unofficial Algorand Standard Asset Parameters Convention popular in the Algorand NFT community. It is inspired by Open Sea's metadata standards and EIP-1155. ARC-69 focuses on optimization for fetching digital media and the use of on-chain metadata. It also allows for mutable or immutable metadata, depending on the use case.
Asset Name, Unit Name, and URL: These are specified in the ASA parameters. This allows applications to efficiently display meaningful information, even if they aren't aware of ARC-69 metadata.
MIME types: These help clients more effectively fetch and render media.
Metadata: All asset metadata is stored on-chain. Metadata can be either mutable or immutable. If an ASA has a manager address, then the manager may update an ASA's ARC-69 metadata by sending a new acfg
transaction with the entire metadata represented as JSON in the transaction's note
field.