Overview
This doc provides an overview of the different types of fungible tokens on the Aptos blockchain. It’s meant for both non-technical and technical audiences - giving an overview and then linking to more code examples and resources for developers who want to learn more. To learn about non-fungible tokens (NFTs) on Aptos, see our guide. Terms: Often, the native currency of a chain is referred to as a coin (e.g. APT for the Aptos blockchain), and currencies that live on that chain are referred to as tokens (e.g. the CELL token we reference below). But you’ll also hear both referred to as a coin, token, or fungible asset at times. To pick a general term that applies to all cases, we’re calling them fungible tokens here.Types of tokens on APTOS
APT
The native currency of the Aptos blockchain. Used to pay the gas fees for transactions and often used to pay for other things like NFTs - including this interesting-looking creature listed for 3.68 APT:
Stablecoins
Stablecoins are tokens that are pegged to an underlying asset, often a fiat currency like the US dollar. They are an effort to put value on chain without the price fluctuations that tokens like APT experience. This provides safer ways to perform certain financial transactions, combining the speed and low fees of the Aptos blockchain with the relative stability of certain fiat currencies. For example, international remittance payments and a coffee shop taking payment for coffee both benefit from knowing that the value transmitted one day won’t be worth, for example, 5% less the next day. Stablecoins can be bridged from another chain (like USDC bridged from the Ethereum blockchain) or native to Aptos (like native USDC). Native stablecoins are generally safer because they don’t have the additional trust assumptions that a bridge has (you have to trust the code and the team behind the bridge, in addition to the team and the code behind the stable coin). Native stablecoins on Aptos include Circle’s USDC and Tether’s USDT.Other fungible tokens
This guide covers the current Fungible Asset Standard and not the legacy Aptos Coin Standard. The new standard provides a consistent way to represent currencies, real-world-assets (e.g. stock shares), and other fungible assets. This standardization means that all apps - explorers, wallets, marketplaces, DeFi apps, etc - can read use these assets in the same way. It’s fairly common for apps to have a token as a way to provide token holders with governance power to help shape the future of the app, as well as financial/reward incentives (for example Cellana’s CELL token, here on CoinGecko, which allows users some control over the protocol). In addition to tokens created by apps, there is also the realm of memecoins - e.g. Uptos. This is not a plug for any token or financial advice, just examples of the types of fungible tokens you’ll see. Apps like Move Pump have made it easy for non-developers to create tokens as well. You can see a list of all the coins on Aptos here.Creating and using fungible tokens
As described in the Fungible Asset Standard guide , this involves three steps:- Create a non-deletable Object to own the new fungible assets metadata. The creator of the asset-type owns this object, and it holds information like the name, symbol, and number of decimal places of the asset. It can’t be deleted because if accounts own the asset then losing this general information about the asset type would be catastrophic.
- Generate
Ref
s to enable any desired permissions (e.g.MintRef
for the capability to mint the asset,TransferRef
for the capability to freeze and unfreeze the transfer rights of a given account - important for meeting certain regulations - andBurnRef
for the capability to burn the asset). - Mint the assets and transfer them to accounts.
Creating and using Stablecoins
Aptos Labs has good sample code for creating a stablecoin so check that out if you want to make one. If you want some Testnet USDC for testing a stablecoin in your transactions and Move code, see Circle’s Testnet faucet.Reading token data to use in your app
Example account For the following examples, we’re going to fetch data for this Testnet account that has three fungible token types0x1::aptos_coin::AptosCoin
0xe0e5ad285cbcdb873b2ee15bb6bcac73d9d763bcb58395e894255eeecf3992cf::pancake::Cake
0x69091fbab5f7d635ee7ac5098cf0c1efbe31d68fec0f2cd565e8d168daf52832
(Testnet USDC)
REST API
Coin balances for an account You can make a `GET / accounts/{address}/balance/{asset_type} request for the balance of a specific asset type. A request for0x1::aptos_coin::AptosCoin
is shown - using both cURL and our TypeScript SDK but you can make one for the other two fungible asset types of the account (shown above) as well.
Request
GraphQL Indexer API
Coin balances for an account along with coin and metadata You can use thegetAccountCoinsData
from our TypeScript SDK or construct a current_fungible_asset_balances
query directly as shown below.
Request
getFungibleAssetMetadata
from our TypeScript SDK or construct a fungible_asset_metadata
query directly as shown below.
Request
Resources
Here, we list many of the resources we listed above in a compact form:General
- Fungible tokens on Aptos by marketcap (including APT and stablecoins)
APT
- Transaction fee calculation (gas and storage fees).
- Delegated staking
Other fungible tokens
Stablecoins
- How to build a stablecoin on Aptos sample code.
- Stablecoins on Aptos by market cap.