How Do You Mint a Native Asset on Cardano Without a Smart Contract?
Native assets on Cardano - tokens that represent anything from loyalty points to in-game items or simple NFTs - are created directly on the ledger using the core transaction protocol. You do not need a smart contract (Plutus script) to mint them. The process relies on Cardano's multi-asset ledger feature, which was introduced in the Mary upgrade in 2021. Minting is done by constructing a transaction that includes a minting policy script and the new asset’s details. The policy can be as simple as a signature from a single key, or as complex as a time lock or multi-signature rule. Below is how it works and how you can do it using command-line tools or a wallet that supports native asset minting.
What exactly is a native asset?
A native asset on Cardano is any token that exists alongside ADA in the same UTXO outputs. Unlike Ethereum-based tokens, they do not require a separate smart contract to manage transfers. The token’s identity is defined by a policy ID (a hash of the minting policy script) and a token name. Minting creates new units of that token; burning destroys them. The policy script determines who can mint or burn and under what conditions, such as requiring a specific key signature or a time window.
Prerequisites for Minting
Before you mint, you need: - A Cardano node synced to the current chain (or use a remote API like Blockfrost or Koios, which you already have coverage for on this site). - A wallet address with enough ADA to pay transaction fees and the minting deposit for the token’s asset ID (currently around 0.17 ADA per asset ID, but check the latest protocol parameters). - The minting policy script, expressed as a simple script (not a Plutus script) in JSON format, signed by your private key.
Step 1: choose your minting policy
The simplest policy is a single-signature policy, where only the owner of a specific signing key can mint. This is fine for personal tokens or test assets. For more control, you can use a time-locked policy (only mintable before or after a certain slot number) or a multi-signature policy (requires multiple keys). Each is defined as a script in the native token standard.
Example of a simple single-signature policy script in JSON:
{
"type": "all",
"scripts": [
{
"type": "sig",
"keyHash": "your-key-hash-here"
}
]
}
You get your key hash by extracting it from your payment signing key file using the cardano-cli tool.
Step 2: Build the Minting Transaction
The transaction for minting has three essential parts: 1. Inputs: Provide ADA to cover fees and the minting deposit. 2. Mint field: Specifies the policy ID, token name, and quantity (positive to mint, negative to burn). 3. Outputs: The minted tokens must be sent to an address. If you keep them, send them to your own address.
You also need to include the minting policy script in the transaction’s witness set, so the network can verify the signature. Use cardano-cli transaction build with the --mint flag. For example:
cardano-cli transaction build \
--testnet-magic 1 \
--tx-in <input-utxo> \
--tx-out <your-address>+"<minted-token-amount> <policy-id>.<token-name>" \
--mint "<minted-token-amount> <policy-id>.<token-name>" \
--mint-script-file policy.script \
--change-address <your-change-address> \
--out-file mint.raw
The <token-name> can be up to 32 bytes. If blank, it represents the policy ID as a whole.
Step 3: Sign and Submit
Sign the raw transaction with your payment signing key:
cardano-cli transaction sign \
--tx-body-file mint.raw \
--signing-key-file payment.skey \
--testnet-magic 1 \
--out-file mint.signed
Then submit:
cardano-cli transaction submit \
--tx-file mint.signed \
--testnet-magic 1
Once confirmed, the tokens exist in the output address you specified.
Step 4: Verify the Minted Asset
Check your wallet balance or query the address using a block explorer or an API. The token will appear under a new policy ID and name. You can send it, burn it, or use it as a payment token in any transaction that accepts it.
Important Notes
- Policy IDs are permanent: Once you mint with a given policy script, that policy ID is fixed. Changing the script creates a different policy ID, even if the new script is nearly identical.
- Minting deposit is per asset ID: Each unique combination of policy ID and token name requires a deposit (currently about 0.17 ADA per asset ID). This deposit is returned when the token is burned. For NFTs with many unique IDs, this adds up.
- No smart contract required: The minting logic is enforced by the core protocol, not by a Plutus script. This means lower fees and simpler construction compared to minting via a smart contract.
- Burning works similarly: Use a negative quantity in the
--mintfield to destroy tokens. The deposit becomes available again in the transaction outputs.
When would you use this over a smart contract
Minting native assets without a smart contract is the standard path for simple tokens - whether fungible or non-fungible. Smart contracts are only needed if the minting logic requires complex conditions, like a lottery, an auction, or a multi-step claim process. For a one-time mint of a static collection or a personal token, the transaction-based method is faster and cheaper.
If you want to automate minting for many users (e.g., a rewards drop), a single transaction can mint up to the standard transaction size limits. For larger volumes, batch minting in multiple transactions is straightforward because each transaction is independent.
Tools to Help
Most modern Cardano wallets (Lace, Eternl) have built-in native asset minting interfaces that automate the script creation and transaction building. The steps above describe the command-line method for transparency, but you do not need to write a script from scratch if you use a wallet. The underlying principle remains the same: a policy script, one transaction, no smart contract.
For accurate current fees, deposit amounts, and protocol parameters, always check the latest network parameters via an API or block explorer before minting.
Not financial advice. joelube.xyz publishes market data and general information about digital assets. Crypto assets are volatile and you can lose everything you put in. Nothing here is a recommendation to buy, sell or hold, and we make no price predictions.
Prices are sourced from third parties and may be delayed or wrong. Verify anything you intend to act on against a primary source.