Aptos Token Standards 101: Fungible Asset, Digital Asset + 8 more
Table of Contents
In August 2023, the Aptos Foundation unveiled two new token standards: Fungible Asset and Digital Asset. We’ll examine how they are different from the older Aptos Coin and Aptos Token standards and also look at standards on Ethereum, Solana, TON, and MultiversX.
- A token standard is a set of rules that govern the creation, transfer, and behavior of crypto tokens.
- By following a popular standard, developers ensure that their token will be supported by blockchain wallets and dApps.
- Ethereum’s ERC-20 and ERC-721 standards are structured as lists of functions and events that those functions should trigger.
- The advantage of ERC-20 and ERC-721 is that they are supported by dApps on all EVM chains, but they have issues: for example, a recipient can’t reject an incoming transfer.
- Non-EVM blockchains adopt different token standards, often more efficient and feature-rich than Ethereum standards.
- Aptos (which uses the Move language) used to rely on the Aptos Coin standard for fungible tokens and Aptos Token for NFTs. One of their many advantages is that you don’t have to deploy a separate smart contract to launch a new asset. Instead, you just need to run some functions, define the token’s metadata, and pay a small gas fee.
- In August 2023, Aptos introduced two new standards: Fungible Asset for regular tokens, tokenized real-world assets, and in-game assets; and Digital Asset for NFTs.
- You can create coins and NFTs on Aptos yourself using Pontem’s free Intellij plugin for Move. This detailed tutorial will help even non-coders take their first steps with Move.
- The new token standards use Move’s object model: every token and collection is coded as an object with various resources, all of which are stored in a single account.
- Treating assets as objects allows developers to write all sorts of custom properties for them and save them as resources.
- With the new Aptos standards, users won’t have to register a token before using it, or opt into incoming NFT transfers.It’s even possible to mutate NFT properties, freeze assets, forcibly transfer them between accounts, and create natively soulbound tokens.
- Other interesting token standards include Solana’s SPL Token Program and MultiversX’s Elrond Standard Digital Token (ESDA). Like the standards on Aptos, they don’t require a separate contract for each token or collection.
What is a token standard?
A token standard is a set of rules that govern the design, issuance, transfer, and behavior of blockchain tokens. A standard outlines the features of token smart contracts and defines what users and other smart contracts can interact with it.
By adhering to a widely adopted token standard, developers ensure that their token will be supported by wallets and dApps. For example, if you issue a new ERC-20 token, it will automatically work with the existing Ethereum ecosystem. Users will be able to add it to wallets, swap it on exchanges, etc.
Within the same token standard, issuers can set token parameters like the name, maximum supply,emission schedule, transaction residuals, and so forth.
Token standards on Aptos
In the Move language, used by Aptos, fungible tokens are called “coins”. Popular cryptocurrencies like APT, USDT, MOVE, stAPT, CAKE, etc. are all coins. Until recently, the default standard for fungible assets was the Aptos Coin Standard.
The term “token” is applied to NFTs and SFTs (semi-fungible tokens). Until mid-2023, the corresponding standard on Aptos was the Aptos Token standard.
In August 2023, Aptos Foundation launched two new standards, Fungible Asset and Digital Asset, to replace the Coin and Token standards, respectively.They are more flexible, and developers are advised to use them when creating new assets on Aptos. Assets issued on the old standards will still work, though the Aptos Foundation is considering some migration options.
Pontem Network doesn’t have a token, but we do have two NFT collections: Space Pirates and Dark Ages. Whenever we launch a new NFT collection, we’ll use the new Digital Asset standard and perhaps experiment with its cool new features, such as soulbound tokens. (More on that later.)
We’ll examine the old and the new Aptos token standards later in the article. But first let’s look at the more familiar ERC standards on Ethereum, since it will make it easier to understand what makes Aptos special.
ERC-20, ERC-721, and their issues
The best-known token standard is Ethereum’s ERC-20, introduced in 2015. It’s structured as a list of methods (functions) and events that a smart contract needs to implement: for example, that the function totalSupply ( ) should return the token’s overall supply, or that event Approval(address indexed _owner, address indexed _spender, unit256 _value) must trigger a request for the spender to approve spending the token.
The other common standard is ERC-721, Ethereum’s NFT standard since 2018. It has functions like tokenOfOwnerByIndex(address _owner, uint256 _index), which returns the list of NFTs from a specific collection owned by an address, and tokenURI(uint256 _tokenId), which gives you the URL link for an NFT’s metadata.
ERC-20 and ERC-721 are universal in the EVM space For example, BEP-20 tokens on BNB Chain use the same code as ERC-20. The power of the EVM ecosystem lies in its interoperability. As all these chains use Solidity smart contracts and the same token standard, you can easily migrate a dApp from Ethereum to Arbitrum or Avalanche, for example.
These standards are not perfect, however. There is no way for a recipient to be notified of an incoming token transfer, or to reject it. If a user mistakenly sends ERC-20 assets to the wrong token contract, it will “swallow” them, and they will get stuck there forever. As for ERC-721, it supports only transfers of single NFTs; if you want to transfer several ERC-721 JPEGs, you’ll have to do multiple transactions and pay several gas fees.
Subsequent Ethereum Requests for Comments (ERC) have introduced solutions: ERC-1155, an NFT standard developed by Enjin, allows for multiple NFTs to be transferred in a single transaction. ERC-1155 is used by a good number of projects, but most other proposed EVM token standards (ERC-223, 621, 827, etc.) have failed to achieve wide adoption. An exception is ERC-777 (TransferAndCall), a standard that allows transferring tokens into a contract and issuing a call to that contract at the same time. It is used by Chainlink’s LINK token.
Step outside the EVM ecosystem, though, and things change radically. Developers of next-generation chains like Aptos have implemented more secure and efficient token standards at launch. And while an ecosystem is still young, the core developers can introduce improved standards without a cumbersome migration. This is exactly what is happening with Aptos and its two new standards.
Aptos Coin (legacy)
The older standard for fungible assets in Aptos is called Aptos Coin. Developers don’t need to deploy a separate smart contract for each new asset as you would on Ethereum. Instead, there is a generic token contract, and all one has to do is run some commands.
Every coin is defined by its <CoinType> - the Aptos term for name. To create a fungible asset, a developer first needs to publish a new Move module with the coin type on the Aptos blockchain, setting the asset’s metadata: name, symbol, and the number of decimals.
The next step is to initialize the new asset as a valid coin on the blockchain by running the command initialize<CoinType>. The system checks that the account running the command is the same that published the module in the first place and that this coin type hasn’t been initialized by someone else already. If everything is ok, the creator receives the capabilities to mint the new coin, burn it, and even freeze the coin’s balance at a specific account.
You can try this yourself 100% for free using Aptos CLI (command line interface) and Pontem’s Move plugin for Intellij IDEs like PyCharm Community Edition.
- Move plugin tutorial: we explain how to install PyCharm, our plugin, and Aptos CLI, so even total beginners can get started.
- Follow Aptos’s instructions for creating new V1 tokens: fungible / non-fungible
Aptos Fungible Standard
This standard is more versatile than Aptos Coin. Beyond regular fungible tokens, it can be used for tokenized real estate, stocks, and other real-world assets (RWA), event tickets, in-game currency and characters, and more.
Fungibility should be understood rather widely here. For example, a game can have 1,000 copies of the same weapon that all share the properties. They can be coded as a fungible asset (and not as an NFT), as it doesn’t matter which copy you own.
The standard supports fractionalized ownership of commodities and securities and even allows developers to determine who can own an asset (ownership control).
Whereas Aptos Coin used the account resources data model, the Fungible Asset standard uses the object model. Without getting too technical (you can read about Move resources vs. objects here), an object can represent a complex asset with various sorts of data, all stored within a single address.
This approach saves gas and provides creators with better control over the asset’s features and ownership. Also, end users don’t need to register a fungible asset before they can transact with it. Right now, Alice can’t send Bob token X unless he has already registered it; but with the Fungible Asset standard, a primary FungibleStore object will be automatically created in Bob’s account if Alice has initiated a deposit to his address.
Other things can be coded as objects in Move, like a DEX liquidity pool or a game character. To create a new fungible asset, the developer publishes a module and then initializes it, creating a new metadata object and a metadata resource within that object.
The developer determiness the ability to mint and burn coins, freeze and unfreeze them, and even transfer them between accounts, including frozen ones.
Just like with legacy Aptos Coins, you can use Pontem’s Move Intellij plugin to create new Aptos assets, on both testnet and mainnet. With a free IDE like PyCharm Community Edition, it won’t cost you anything!
Aptos Token (legacy)
The Token standard on Aptos covers NFTs (, fungible tokens without decimals, and semi-fungible tokens (SFTs).
Creating a new asset in Aptos requires creating a resource account. In Aptos, there are two types of accounts:
- Standard: a regular account with a pair of keys (public & private), like your accounts in Pontem Wallet;
- Resource account: a special account used by a developer to hold resources (like coins and NFTs), manage smart contracts, and automatically sign transactions. In the Move language, a resource is something that is scarce and requires access control. A resource account doesn’t have a private key, and only one resource account can be created for each standard account.
To mint new NFTs under the legacy Aptos Token standard, a developer first creates a collection (with the command create_collection_script) and defines a few arguments: collection name, description, quantity limit (which can be 0 if the potential collection size is unlimited), and a few others.
Next, the developer needs to provide tokens with individual IDs by calling specific functions and providing arguments like collection name, token name, the maximum number of NFTs in the collection, a URL pointing to an image, the address where royalties should be paid, etc. It’s also possible to make many of the properties mutable.
In Aptos, the collection name, token name, and creator’s address together form the property TokenDataID. Each individual token has its TokenDataID attached to it, plus a unique TokenID and a special feature called property_version. You can issue multiple “editions” of the same token by copying its data and attaching different property versions: for example, this is useful when issuing semi-fungibles like event tickets.
Creators can give tokens all sorts of custom on-chain properties: up to 1,000 properties per asset! It’s possible to make tokens burnable by owners and even to mutate fungible tokens into NFTs.
Creating a fungible asset without decimals is even easier. Tokens are minted using the command token::create_token_script specifying the creator’s address, the token’s name and description, the collection it belongs to (created in the previous step), maximum supply, a URL (where the token’s log is stored, for example), and the number of tokens to be minted.
Once the token has been created, the owner of the creator address can mint additional tokens (within the maximum supply limit) with the command token::mint_script, providing the address, collection name, token name, and the number of tokens to be minted.
Aptos Digital Asset Standard
In August 2023, Aptos Foundation launched its new NFT standard, called Aptos Digital Asset Standard. Like the new Fungible Asset standard, Digital Assets make use of the object model. A collection is an object with its own address and various resources, and so is each token within a collection. That’s right: every NFT has its own address on the Aptos blockchain, so you manipulate it individually and add properties to it!
Creating a Digital Asset starts with a new collection that has either a fixed or an unlimited supply, a name, a description, a URI, and a royalty setting. You can create many collections under the same account, but they must have different names.
Within a collection, tokens can be named or unnamed. Named tokens (created with create_named_token and specifying a name) have deterministic addresses and are thus easy to query. However, they are impossible to delete completely: burning an NFT will remove the data but not the object itself. On the other hand, unnamed tokens (created with create_from_account) can be burned without a trace.
The creator can assign new properties as resources to an existing collection or NFT without changing the core code. This allows for maximum flexibility and creative freedom.
The flipside is that it’s really bare-bones, with very few ready functions. Luckily, Aptos Foundation already provides several basic libraries with ready code. The main library is Aptos Token, with lots of features:
- Mutability - changing royalties, URIs, NFT descriptions and properties;
- NFT burning and freezing by the creator;
- Minting a new NFT into an existing collection;
- Minting a soulbound token to a recipient account, etc.
Other exciting features enabled by Aptos Digital Assets:
- Users don’t need to allow token transfers before they can receive NFTs
- Adding a timestamp to limit the time window
- Several NFTs can be combined (composability)
- Soulbound tokens: NFTs that can’t be transferred out of an account.
Solana: Token Program & Solana Program Library (SPL)
Solana uses the term “program” instead of “smart contract” and “token program” instead of “token standard.” The standard is written in Rust and stored in Solana Program Library (SPL), a collection of modular on-chain programs provided by the core team. Tokens issued on Solana are commonly called SPL tokens.
SPL assets can be both fungible and non-fungible. The same Token Program lets you mint, transfer, and burn both regular assets and NFTs. You don’t have to deploy a new smart contract for each new asset, either. This original “mint authority” address will become the token’s mint identifier, like a smart contract address on Ethereum.
Once enough tokens have been minted, further issuance can be disabled using a “mint - -disable” function.
To create a new non-fungible asset, instead of using the command “create-token”, you’d instead use “create-token - -decimals 0” – as NFTs can’t have decimals, of course. As you can see, the system is logical and user-friendly. There are a total of 25 instructions in the Token Program.
In 2022, Solana introduced an update to the standard: Token-2022, which is still being audited and could go live in late 2023.
Token-2022 doesn’t change any of Token Program’s instructions: it only adds extensions (new properties that can be given to tokens and accounts). Available extensions include confidential transfers, non-transferability, tokens that pay interest, fees for transferring a token, etc.
TON: TEP-74 & TEP-62
The Open Network (TON) started out as Telegram Open Network, but Telegram had to abandon the project due to pressure from the SEC. Development was picked up by the community, and as of September 2023, TON is one of the top 10 biggest cryptocurrencies by market cap ($8.4 billion).
Where other blockchains do away with individual smart contracts for each asset, TON does the opposite. In the TEP-74 fungible token standard, not only does every asset (called Jetton) have a master contract, but there is an additional contract for every user who holds the asset in their wallet!
As for NFTs, the TEP-62 standard gives each non-fungible token in a collection its own smart contract. A collection of 10,000 NFTs thus requires deploying 10,001 contracts. This is because TON relies on sharding for scaling. With a separate contract for each NFT or jetton balance, transactions with them can be processed by any shard: you don’t have to attach a collection or asset to a specific shard. By the way, smart contracts in TON are written in a specially developed contract language called FunC.
MultiversX: Elrond Standard Digital Asset (ESDA)
MultiversX is a scalable sharded L1 blockchain optimized for NFTs and the metaverse. It used to be called Elrond, thus the token standard is called Elrond Standard Digital Asset.
You don’t need a smart contract to create an ESDA asset. This means that regular users can also mint and burn new tokens. ESDA tokens can be upgraded by adding or removing properties, as well as transfer asset ownership.
Like Solana’s SPL, ESDA is applied to both fungible, semi-fungible, and non-fungible tokens; an NFT is just an ESDA with added metadata. Issuing a new asset is as simple as running “issue”, “issueNonFungible”, or “issueSemiFungible”, and adding a token name, ticker, and – for fungibles – initial supply and the number of decimals.
You can include additional properties like the ability to freeze or wipe the token, upgrade it, add special roles, etc. It’s even possible to enable pausing all actions with an ESDA except for minting and burning.
ESDA also allows you to send a bunch of different fungible and non-fungible tokens in a single transaction. Another very interesting feature is that the manager (original issuer) of an ESDA asset can freeze the tokens held by any account – for compliance reasons, for example.
Also, any direct token transfer to a smart contract is automatically rejected, unless the contract has the “payable” property. Not being able to reject transactions is a problem in ERC-20, as we noted.
Perhaps one day all major ecosystems will converge on a single standard. For now, competition among token standards helps move the Web3 industry forward, and it’s worth knowing more about them.
Aptos’s new Fungible Asset and Digital Asset standards are a big step for the Move ecosystem and the non-EVM space as a whole. We’re looking forward to seeing the first Aptos Fungible Assets traded on Liquidswap and Digital Assets stored in Pontem Wallet. Follow us on X (Twitter), Discord, and Telegram so you don’t miss what happens next!
About Pontem Network
Pontem Network is a blockchain product studio building for Aptos, the L1 blockchain known for its sub-second finality and security. our products include:
- Pontem Wallet: the only triple-audited wallet for Aptos with 300,000 installs
- Liquidswap DEX: the most popular DEX on Aptos
- Move Code Playground: the first browser code editor for the Move language;
- ByteBabel: the first Solidity compiler for Move VM;
- The first Intellij IDE plugin for Move, and more.