Cardano Tokens

Overview

On Cardano, beyond the base coin ADA, you can create additional token assets directly at the protocol level — both fungible and non‑fungible — without requiring smart contracts. These "native assets" are first‑class citizens of the ledger, handled by the same mechanisms as ADA itself, rather than being implemented as smart contract tokens like on Ethereum.

A native asset is identified by a unique Policy ID + Asset Name. You can mint and burn assets per the rules defined in the policy. Tokens can be accompanied by metadata (name, ticker, description, logo, decimals) that wallets/explorers can use to render them human‑readably.

BitGo currently supports Fungible Tokens.

Key Terms & Concepts

TermMeaning
Asset NameName of the token under the policy. Can be ASCII encoded or plain text.
FingerprintUnique identifier of the token
Ledger-level supportTokens + ADA are handled natively within UTXOs.
MetadataHuman-readable details, logo, decimals, etc.
Mint/BurnIncrease/decrease supply.
Native AssetToken created on Cardano's multi‑asset ledger.
Policy IDThe unique on-chain identifier associated with a minting policy on the Cardano blockchain. It is derived from the policy script and enforced by the blockchain protocol.

Supported ADA Tokens

BitGo supported ADA fungible tokens can be accessed here

Native Asset Architecture

1. Asset Name Encoding

Asset names sent to the blockchain are byte strings. If the name is "NIGHT":

ASCII: 4e 49 47 48 54

Asset Name Hex = 4e49474854

2. Asset Fingerprint

Asset names can be reused under different policies, so they are not globally unique by themselves. To uniquely identify a Cardano native asset, you concatenate the policy ID with the ASCII-encoded asset name, then apply the hashing and encoding process defined in CIP-14. This produces a bech32-encoded asset fingerprint with the prefix asset. An example is the MINS token, which has the policy ID 29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6 and an asset name encoded as 4d494e. When these are combined and processed using the CIP-14 hashing and encoding scheme, they produce the token’s fingerprint. asset1d9v7aptfvpx7we2la8f25kwprkj2ma5rp6uwzv

3. Multi-Asset UTXO Model

Cardano's extended UTXO model allows a UTXO to hold:

{ ADA + any number of native tokens }

4. Token UTXO Structure

An UTXO output containing a token will have it's token details under the asset_list attribute.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 { "tx_hash": "FOO_TX_HASH", "tx_index": 1, "address": "FOO_ADDRESS", "value": "TRANSFER_VALUE", ...transaction_info "asset_list": [{ "decimals": DECIMAL, "quantity": "TRANSFER_QTY", "policy_id": "FOO_POLICY", "asset_name": "FOO_ASSET_NAME", "fingerprint": "FOO_FINGERPRINT" }], "is_spent": false },

5. UTXO Considerations — Minimum ADA Requirement

Every UTXO on Cardano must carry a minimum amount of ADA to prevent ledger bloat. The protocol computes this minimum using:

Minimum ADA = (output size in bytes + 160) × coins per byte

  • Output size is the serialized size of the UTXO. Token UTXOs include extra metadata (Policy IDs, Asset Names, quantities), so they are larger than ADA-only UTXOs.
  • 160 bytes is a fixed overhead added by the protocol.
  • Coins per byte is a network parameter (currently ~4,310 lovelace per byte).

Because token outputs are larger, the formula produces a higher minimum ADA.

For withdrawals and consolidations, BitGo uses a practical minimum of 1.5 ADA for token-bearing outputs, which includes a safety buffer above the on-chain minimum.

For protocol background, see Cardano Developers.

6. Transfers Creation (BitGo Internal Processing)

When BitGo constructs a transaction involving ADA native tokens, two independent transfers are recorded for accounting and tracking:

Token Transfer Represents the movement of the asset quantity between addresses.

Fee Transfer Represents the ADA used to satisfy the:

Minimum 1.5 ADA UTXO requirement

Network fee for transaction execution

Separating these ensures clear auditability and accurate internal bookkeeping.

7. Consolidations

BitGo currently supports multi-asset consolidation, wherein both native ADA and all associated tokens are consolidated from the specified receive addresses into the wallet’s root address.

Unlike many other UTXO-based blockchains, Cardano requires consolidating the funds to the base address in order to use the maximum spendable amount.

The below API will consolidate both the native coin and tokens to the root address

  • cURL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>" export COIN="tada" export WALLET_ID="<YOUR_WALLET_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export ADDRESS_1="<DESTINATION_ADDRESS_1>" export ADDRESS_2="<DESTINATION_ADDRESS_2>" export WALLET_PASSPHRASE="<YOUR_WALLET_PASSPHRASE>" curl -X POST \ http://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/$WALLET_ID/consolidateAccount \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "consolidateAddresses": [ { "address": "'"$ADDRESS_1"'" }, { "address": "'"$ADDRESS_2"'" } ], "walletPassphrase": "'"$WALLET_PASSPHRASE"'" }'

8. Spending from Receive Addresses

Funds held in receive addresses cannot be combined with the base address for withdrawals and must be consolidated first. If you wish to withdraw directly from a receive address, withdrawals can be performed per UTXO per address by navigating to the Unspents tab, selecting the desired UTXO from the receive address, and initiating a withdrawal.

9. Locking

Due to the UTXO-based nature of the protocol, each transaction consumes specific unspent outputs and produces new ones, which introduces constraints around concurrent spends. To prevent double-spending, race conditions, and UTXO selection conflicts, wallet-level locking is enforced. As a result, only one transaction can be constructed, signed, and submitted per wallet at any given time, and subsequent transaction requests must wait until the current transaction is completed and the transaction state is updated.

10. Reserved ADA

A total of 1.5 ADA per asset is reserved and deducted from the spendable balance and can be seen under Reserved Balance which includes the ADA associated with token UTXOs.

11. Merging and splitting of UTXOS

Efficient UTXO management through merging and splitting is important for optimizing transaction fees, improving spendability, and enabling parallel transaction processing where possible.

UTXO Splitting occurs when a transaction consumes a single UTXO and creates multiple output UTXOs. For example, spending one large UTXO and producing several smaller outputs effectively splits the original UTXO into multiple UTXOs. For details on how BitGo automatically splits and manages UTXOs, see Automatic UTXO Splitting.

UTXO Merging occurs when a transaction consumes multiple UTXOs as inputs and produces fewer outputs, often a single consolidated output. This is commonly used to combine several smaller UTXOs into one larger UTXO for more efficient future spending. Support for UTXO merging is under active development.

12. Send Many

Send Many is supported for tokens and is recommended when sending to multiple recipients from the base address in a single transaction, helping reduce transaction fees. It is also advised when you have only one UTXO and need to initiate multiple transfers simultaneously.

Gas Tank (Fee Sponsorship) for Token Transfers

When your enterprise has Gas Tank (Fee Sponsorship) enabled, the gas tank covers both the transaction fee and the minimum ADA requirement for token recipients. For general gas tank information — including how to enable it, fund it, and manage it — see the Cardano Gas Tank documentation.

This section covers token-specific sponsorship behavior.

Token Transfer Sponsorship Model

When sending tokens with fee sponsorship enabled:

ComponentPaid By
Transaction FeeGas Tank
Recipient minimum ADA (1.5 ADA)Gas Tank
Token AmountSender Wallet
Sender Token Change minimum ADASender Wallet
Gas Tank ChangeReturned to Gas Tank

Note: For token transfers, the sender wallet must have at least 1.5 ADA per asset to cover the minimum ADA requirement for any token change output.

Important: The 1.5 ADA sent by the gas tank to the recipient is a permanent cost to the gas tank, not a refundable fee. This ADA accompanies the tokens to the recipient's address and is not returned to the enterprise. Factor this into your gas tank funding strategy.

Minimum Gas Tank Balance for Token Transfers

Token transfers require a minimum of 3.5 ADA in the gas tank: 1.5 minimum ADA to the recipient + ~0.2 ADA transaction fee + change buffer to meet the minimum UTXO requirement.

Example: You want to send 500 NIGHT tokens from a user wallet to an external address.

ComponentAmountPaid By
Recipient receives500 NIGHT tokens + 1.5 ADATokens from sender wallet, 1.5 ADA from gas tank
Transaction fee~0.2 ADAGas tank
Gas tank change~1.8 ADAReturned to gas tank
Minimum gas tank balance3.5 ADA

In this example, the gas tank starts with 3.5 ADA. It sends 1.5 ADA to the recipient (required to accompany the tokens), pays ~0.2 ADA as the transaction fee, and receives ~1.8 ADA back as change.

Note: The sender wallet must also hold at least 1.5 ADA per asset to cover the minimum ADA requirement for any token change output returned to the sender.

Send-Many with Tokens (Multiple Recipients)

When using sendMany to send tokens to multiple recipients in a single transaction, the gas tank must provide 1.5 ADA for each recipient individually, because each recipient receives a separate UTXO.

Example: Sending tokens to 5 recipients in one transaction:

ComponentAmountPaid By
1.5 ADA per recipient (× 5)7.5 ADA totalGas tank
Transaction fee~0.3 ADA (larger tx)Gas tank
Gas tank changeRemaining balanceReturned to gas tank
Minimum gas tank balance~9.5 ADA

Formula for send-many token transfers: Minimum gas tank balance = (1.5 ADA × number of recipients) + transaction fee + change buffer

For native ADA send-many (no tokens), the gas tank only covers the transaction fee regardless of the number of recipients.

How Token Withdrawals Free Up Reserved ADA

On Cardano, every UTXO that holds tokens must also hold a minimum of 1.5 ADA. This ADA is "reserved" — it cannot be spent independently while it is tied to the tokens. However, when you withdraw all tokens from a UTXO using fee sponsorship, that reserved ADA becomes spendable again because the gas tank covers the 1.5 ADA minimum for the recipient.

Example: A sender wallet has a UTXO containing 1.5 ADA + 10 NIGHT tokens. The user wants to send all 10 NIGHT tokens to an external address.

Before the transaction:

UTXOContentsSpendable ADA
Sender UTXO1.5 ADA + 10 NIGHT0 ADA (1.5 ADA reserved for tokens)

After the transaction:

OutputContentsExplanation
Recipient10 NIGHT + 1.5 ADA1.5 ADA paid by the gas tank (not the sender)
Sender1.5 ADAPreviously reserved ADA is now fully spendable

Because the gas tank provides a fresh 1.5 ADA to accompany the tokens to the recipient, the sender's original 1.5 ADA is no longer tied to any tokens and becomes available for future transactions.

Partial Token Withdrawals

If you withdraw only some of the tokens from a UTXO (not all), the sender's UTXO still contains tokens after the transaction. In this case, the minimum 1.5 ADA remains reserved on the sender side because the change UTXO still holds tokens.

Example: A sender has a UTXO with 3 ADA + 10 NIGHT tokens and sends only 5 NIGHT tokens.

OutputContentsExplanation
Recipient5 NIGHT + 1.5 ADA1.5 ADA paid by gas tank
Sender change5 NIGHT + 1.5 ADA1.5 ADA remains reserved (tokens still present)
Sender ADA change1.5 ADAExcess ADA returned as a separate spendable UTXO

The reserved ADA is only fully freed when all tokens are removed from a UTXO.

Additional Resources