Create NFTs on CARDANO #CNFT

Twitter @NftPigeons

Join our discord server :
https://t.co/RVc8ZlUcOf?amp=1

Stake your ADA with NOOPS

1 Create a NFT payment addr (air-gapped offline machine)

  • Create a new payment key pair
cardano-cli address key-gen \
--verification-key-file nft-payment.vkey \
--signing-key-file nft-payment.skey
  • Build a payment address for the payment key
cardano-cli address build \
--payment-verification-key-file nft-payment.vkey \
--out-file nft-payment.addr \
--mainnet

2 Fund your NFT payment addr

Yoroi, binance, Daedalus, etc…

3 Create policy

  • Generate policy key (air-gapped offline machine)
cardano-cli address key-gen \
--verification-key-file nft-policy.vkey \
--signing-key-file nft-policy.skey
  • Hash your policy.vkey
cardano-cli address key-hash --payment-verification-key-file nft-policy.vkey
  • Add the policy.vkey hash to the policy.script
{
“type” : “all”,
“scripts” : [
{
“keyHash”: “
<policy.vkey-hash>”,
“type”: “sig”
},
{
“type” : “before”,
“slot” :
<slotplus1h>
}
]
}
  • Retrieve the policyid
cardano-cli transaction policyid --script-file policy.script

4 Add your NFT to IPFS

  • Register on blockfrost.io
  • Add your nft
curl "https://ipfs.blockfrost.io/api/v0/ipfs/add" \
-X POST \
-H "project_id: <PROJECT_ID>" \
-F "file=@<NFTFILE>"
  • Store the ipfs_hash

5 Create Metadata

  • metadata.json
{
"721": {
"<policy-id>": {
"Noops1": {
"id": 0,
"name": "<NFT_NAME> 0",
"image": "ipfs://ipfs/<IPFS_HASH>",
"tags": [
"<TAG1>"
]
},
"Noops2": {
"id": 1,
"name": "<NFT_NAME> 1",
"image": "ipfs://ipfs/<IPFS_HASH>",
"tags": [
"<TAG1>"
]
}
},
"description": "<DESCRIPTION>",
"creator": "<CREATOR>",
"publisher": [
"<PUBLISHER>"
],
"version": 1
}
}

4 Create the transaction

  • Check the utxo
cardano-cli query utxo --address $(cat nft-payment.addr) \
--mainnet
  • Build the transaction
tx_in="${tx_in} --tx-in ${in_addr}#${idx}"cardano-cli transaction build-raw \
$tx_in \
--tx-out $ADDR+0+"1 $POLICYID.Noops1 + 1 $POLICYID.Noops2" \
--mint="1 $POLICYID.Noops1 + 1 $POLICYID.Noops2" \
--metadata-json-file metadata.json \
--fee 0 \
--invalid-hereafter $slot1000 \
--out-file tx.raw
fee=$(cardano-cli transaction calculate-min-fee \
--tx-body-file tx.raw \
--tx-in-count 1 \
--tx-out-count 1 \
--witness-count 2 \
--mainnet \
--protocol-params-file protocol.json | awk '{ print $1 }')

afterfee=$(($total_balance-$fee))
cardano-cli transaction build-raw \
--fee $fee \
$tx_in \
--tx-out $ADDR+$afterfee+"1 $POLICYID.Noops1 + 1 $POLICYID.Noops2" \
--mint="1 $POLICYID.Noops1 + 1 $POLICYID.Noops2" \
--invalid-hereafter $slot1000 \
--metadata-json-file metadata.json \
--out-file tx.raw

5 Sign the transaction (air-gapped offline machine)

  • Retrieve the tx.raw from your node
cardano-cli transaction sign \
--signing-key-file nft-payment.skey \
--signing-key-file nft-policy.skey \
--script-file policy.script \
--mainnet \
--tx-body-file tx.raw \
--out-file tx.signed

6 Submit the transaction

  • Retrieve the tx.signed from your offline machine
cardano-cli transaction submit --tx-file tx.signed --mainnet

--

--

--

Let me introduce our ADA pool NOOPS. We are here to support the Cardano network’s decentralization.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

The Pichasso image service

Serverless “Hello World” in AWS

Calculate how long your SSD lasts Chia plotting

What drives the tests in TDD?

CS373 Fall 2021 Week of 25 Oct — 31 Oct: Victor Xia

Take your notebooks to Jupyter with Docker!

Cover photo

Why Database Logging Is Superior To File Logging

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
NOOPS

NOOPS

Let me introduce our ADA pool NOOPS. We are here to support the Cardano network’s decentralization.

More from Medium

Matrixswap Development Updates #6 (Week Ending Friday, Dec 9)

Major New Achievement: The Success of Flickto’s Public Sale on ADAX

Dev update Dec 17

Genius Yield x Satoshi Club: AMA recap