Creation of NFT

@link78 , Are you successful to add metadata to NFT? And How?

this is probably the best thread on metadata standards and including it on-chain in the forge transaction on token creation: CIP - NFT Metadata Standard

1 Like

this is still very hard work. you must do everything from scratch calculating fees and we have issues about metadata yet. I could mint one but now I can’t use the address that contains the Tokens. Still don’t know how to use images tough…

I think we can use
cardano-cli transaction build-raw
–metadata-json-file metada.json
–out-file tx.raw


How would we properly store a .mov video off-chain so that only the owner of the token has access and control over the associated art? Through my reading and tutorial watching I have been lead to believe the best way would be hashing the video and uploading the full video to IPFS. Then I would include the hash and the IPFS url in the NFT transaction metadata. @failfection (Thanks for the video, it is wonderful :D) I have followed along with your notes on fungibility policy and I grasp that aspect but my confusion is in this problem of coupling the full size .mov to the NFT with exclusive access or dynamic control over the asset by the token owner. Do you, or any other brilliant individual, know the proper way to couple the digital asset with the NFT?

I think it depends on what level of control you are having in mind. As you noticed most of what NFTs are doing are just receipts. Saying “yup you own a copy”.

If you’re looking at full “DRM” type construct, to me you’re going to have to manage the digital assets the same way companies currently manage except with more efficient blockchain / smartcontract schemes. Most likely groups will continue to focus on ‘apps’ to view or stream the content through (I bet that is what theta does), that way the content itself is obfuscated from direct access/downloading.

This is a timeless problem with digital assets, blockchain makes it easier in some ways; but ultimately the problem is still the same.

But I’m with you, if there’s someone who knows of some savvy ways outside of what I’m understanding I’d love to hear of it.

Hi There.
I am not a developer but i have an agency and work with multiple digital artist creating unique NFT.
Iam looking for someone who is able to incorporate our NFT ART with ADA chain.
Thank you for you help .

Thank you for your feedback. This DRM issue is the problem that has been bothering me for some time now.

Anyways… I am itching to develop a NFT on Cardano blockchain. For the time being, I was going to hash the video I created and will add that hash to the metadata of the NFT. Then future transactions of this token can include the location of the asset? Does this sound like the correct path to take for the time being until a marketplace integrates Cardano? Do you have any suggestions on how to currently host some artwork?

Additional question, how does the CLI work with Deadalus + hardware wallet?

Thank you for any advice you provide.

I have found this tutorial:

1 Like

I have tried with tutorial to build a NFT but I am failing.

Any thoughts of the below?

Command failed: transaction submit Error: Error while submitting tx: ShelleyTxValidationError ShelleyBasedEraMary (ApplyTxError [LedgerFailure (UtxowFailure (UtxoFailure (ValueNotConservedUTxO (Value 5000000 (fromList [(PolicyID {policyID = ScriptHash “1fd480c4428948381bd7fcfdf440b501974f31996b092c7191ebfd1f”},fromList [(“LGBTQpool”,1)])])) (Value 1699029 (fromList [(PolicyID {policyID = ScriptHash “1fd480c4428948381bd7fcfdf440b501974f31996b092c7191ebfd1f”},fromList [(“LGBTQpool”,1)])])))))])

How do I build the transaction?

cardano-cli transaction build-raw --mary-era --fee 199029 --tx-in d50417c6a244801dbfd47a0fb72dd8a7e033b074e3c62daeb573a7798b7044f9#0 --tx-out addr1v8z54vz3w7tkjrp49qsx6cx8x9cw4f5dj54zvvtexkjl9lqepjpnr+1500000+“1 1fd480c4428948381bd7fcfdf440b501974f31996b092c7191ebfd1f.LGBTQpool” --mint=“1 1fd480c4428948381bd7fcfdf440b501974f31996b092c7191ebfd1f.LGBTQpool” --metadata-json-file metadata.json --out-file tx.raw

Many thanks

It looks like the input UTxO has 5,000,000 lovelace, but the outgoing has 1,500,000 plus a fee of 199,029. The sum of the ADA inputs needs to equal the fee plus the sum of the outputs. You’ll need to either adjust the --tx-out so that the values balance, or add a second --tx-out to make it balance.

1 Like

Thank you so much. I knew it most probably had to do something with the balance not being equal, but was trying the wrong way!
I used the correct outgoing amount 5,000,000 - fee and it worked.

1 Like

Your construct can work; just keep in mind that once these digital assets are open to the public anyone can attempt to make use of them. So if you post your video someone else could hash it, post their own NFT and act like it’s theirs. The only proof is that you did it first on this particular blockchain. As long as your construct is ok with, handles or considers that reality, you should be good. For example, maybe embed signed metadata in the video as well.

The big artists / groups and first movers seem to be doing fine. But once the flood happens, the scammers can easily sell someone else’s assets as real and get away with it.

As for the CLI and wallets that’s a broad question. The cli (whether cardano-cli or cardano-wallet cli) is a backend, so if you want to do development that integrates with or creates your own wallet functionality for example you’d want to use cardano-wallet. cardano-cli is more for integrating with the node and doesn’t have the same wallet api capability.

Thank you for your response. My apologies for the delay, it seems I missed the notification.

The metadata is a wonderful idea, I will make use of this tip.

As for the CLI, I understand there is a way to use the CLI with the hw wallet using caradno-hw-cli from vaccumlabs github. Do you know anything about Vaccum Labs? I had never heard of them until a suggestion through Reddit. Anyways, I think I will simply make an additional Deadalus wallet apart from the hardware wallet to make interacting with the CLI more simple.

Hi guys, I’m following this tutorial:
Getting Started With Native Tokens — Cardano Documentation 1.0.0 documentation

I was able to start node and create policy

When I execute following steps:
cardano-cli transaction build-raw
–fee 0
–tx-in a1ddb0347fed2aecc7f00caabaaf2634f8e2d17541f6237bbed78e2092e1c414#0
–tx-out addr_test1vz0v7zs8c8tkyzda3kzp9fzumhen7em9vek2yfxqgckm2hga0qh6w+1000000000+“1000000000 4faf76cb673fd04f37ec1efbdbb53b27be108a8dbc4ab9b8230c3d60.melcoin”
–mint=“1000000000 4faf76cb673fd04f37ec1efbdbb53b27be108a8dbc4ab9b8230c3d60.melcoin”
–out-file matx.raw

cardano-cli transaction calculate-min-fee
–tx-body-file matx.raw
–tx-in-count 1
–tx-out-count 1
–witness-count 2
–testnet-magic 3
–protocol-params-file protocol.json

from 1000000000 substract transaction fee

cardano-cli transaction build-raw
–fee 180109
–tx-in a1ddb0347fed2aecc7f00caabaaf2634f8e2d17541f6237bbed78e2092e1c414#0
–tx-out addr_test1vz0v7zs8c8tkyzda3kzp9fzumhen7em9vek2yfxqgckm2hga0qh6w+999819891+“1000000000 4faf76cb673fd04f37ec1efbdbb53b27be108a8dbc4ab9b8230c3d60.melcoin”
–mint=“1000000000 4faf76cb673fd04f37ec1efbdbb53b27be108a8dbc4ab9b8230c3d60.melcoin”
–out-file matx.raw

cardano-cli transaction sign
–signing-key-file pay.skey
–signing-key-file policy/policy.skey
–script-file policy/policy.script
–testnet-magic 1097911063
–tx-body-file matx.raw
–out-file matx.signed
cat matx.signed

cardano-cli transaction submit --tx-file matx.signed --testnet-magic 1097911063
the last command throws:

Command failed: transaction submit Error: Error while submitting tx: ShelleyTxValidationError ShelleyBasedEraMary (ApplyTxError [LedgerFailure (UtxowFailure (UtxoFailure (BadInputsUTxO (fromList [TxInCompact (TxId {_unTxId = SafeHash “a1ddb0347fed2aecc7f00caabaaf2634f8e2d17541f6237bbed78e2092e1c414”}) 0])))),LedgerFailure (UtxowFailure (UtxoFailure (ValueNotConservedUTxO (Value 0 (fromList [(PolicyID {policyID = ScriptHash “4faf76cb673fd04f37ec1efbdbb53b27be108a8dbc4ab9b8230c3d60”},fromList [(“melcoin”,1000000000)])])) (Value 1000000000 (fromList [(PolicyID {policyID = ScriptHash “4faf76cb673fd04f37ec1efbdbb53b27be108a8dbc4ab9b8230c3d60”},fromList [(“melcoin”,1000000000)])])))))])

Any idea what I’m doing wrong and why documentation point to testnet-magic 3 when test json are pointing to 1097911063?

There doesn’t seem to be the --tx-in transaction a1ddb0347fed2aecc7f00caabaaf2634f8e2d17541f6237bbed78e2092e1c414 on the testnet (--testnet-magic 1097911063). I think --testnet-magic 3 was just for purposes of the example, and not meant to point to the current testnet.

Thanks that was helpful.
I was able to mint token by using right txid and using 1097911063 testnet-magic.

I found article how to create NFTs
Create NFTs on CARDANO #CNFT. 1 Create a NFT payment addr (air-gapped… | by NOOPS | Apr, 2021 | Medium

So let’s say I want to create digital collection of 500 items.
I saw that cryptobits were minting in 50 NFTs batches.
My questions:

  1. Is whether I should consider minting them in same batches is there some restriction on transation metadata.json size?
  2. Should minting and sending NFT to presales participants happen in same transaction (or can I mint them and afterward sent NFT tokens to recipients)?
  3. Is there an online test version of so I can check if I minted them with right ipfs link?


  1. The limit for the metadata is 16 kB (in CBOR format, not in the less compact JSON).
  2. You can save a little on the fee if you mint and send at the same time, plus you won’t have ADA tied to the undistributed tokens because of min-ADA, but it may be simpler to mint them all at once.
  3. I don’t know of one, and wish there were. To test the metadata for the NFTs I created recently, I minted a test token, checked to see it appeared correctly on, and then burned the test token; I then used that same metadata template for the subsequent “real” NFTs.

Thanks for answers.
Last question regarding IPFS in medium article they are mentioning this nice API that allows file upload using this rest method

There is free and premium monthly tiers.
What happens if creator stops paying for premium tiers?

I imagine that they’d stop pinning the file on IPFS if you stop paying for the premium tier, but they could say for sure. The file would likely persist on the IPFS network for a while, but you’d probably want to pin it somewhere. It’s pretty easy to set up an IPFS node and pin files; then the files can be accessed from any IPFS gateway, independent on which server is pinning them.

BTW, has a 1 GB free tier and REST API, with a pay-by-GB for beyond 1 GB.

1 Like