How to create an NFT on the Cardano blockchain using JavaScript

Overview

How to create an NFT on the Cardano blockchain using JavaScript

Youtube Video: https://www.youtube.com/watch?v=OeOliguGn7Y

Who is this guide for?

  • For people who want to make NFT's
  • For people who perhaps know Cardano

Benefits of NFT's on Cardano

  • Low transaction fees
  • Native on the blockchain (perhaps compare with Ethereum, eth is smart contract based)

Prerequisites

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
  1. Verify everything is set up properly

cardano-cli

cardano-cli version

output should be similar:

cardano-cli 1.26.1 - linux-aarch64 - ghc-8.10
git rev 0000000000000000000000000000000000000000

cardano-node

cardano-node version

output should be similar:

cardano-node 1.26.1 - linux-aarch64 - ghc-8.10
git rev 0000000000000000000000000000000000000000

node.js

node -v
v14.16.0

Overview of this tutorial

  1. verify env

  2. create project and initial setup

#make sure our db is in our $PATH
CARDANO_NODE_SOCKET_PATH="$NODE_HOME/db/socket"

mkdir cardano-minter
cd cardano-minter
npm init -y #creates package.json)
npm install cardanocli-js --save
  1. Copy the Cardano node genesis latest build number from IOHK hydra website

  2. Download Genesis config file needed for shelly-era

nano fetch-config.sh
NODE_BUILD_NUM=5822084
wget -N https://hydra.iohk.io/build/${NODE_BUILD_NUM}/download/1/mainnet-shelley-genesis.json
chmod +x fetch-config.sh
./fetch-config.sh
  1. make src folder/directory and then create Cardano client
mkdir src; cd src
nano cardano.js
const Cardano = require("cardanocli-js");

const cardano = new Cardano({
  network: "mainnet",
  dir: __dirname + "/../",
  shelleyGenesisPath: __dirname + "/../mainnet-shelley-genesis.json",
});

module.exports = cardano;
  1. create wallet
nano create-wallet.js
const cardano = require("./cardano");

const createWallet = (account) => {
  cardano.addressKeyGen(account);
  cardano.stakeAddressKeyGen(account);
  cardano.stakeAddressBuild(account);
  cardano.addressBuild(account);
  return cardano.wallet(account);
};

createWallet("ADAPI");
cd cardano-minter
node src/create-wallet.js
  1. Verify balance wallet balance is Zero, then we fund the wallet
    • First we need to create a get-balance.js script
# open text editor
cd cardano-minter/src; nano get-balance.js
// create get-balance.js
const cardano = require("./cardano");

const sender = cardano.wallet("ADAPI");

console.log(sender.balance());
  1. check the balance (utxo)
cd ..
node src/get-balance.js
  1. Download IPFS

  2. Upload your files to IPFS

  • image - ipfs://QmQqzMTavQgT4f4T5v6PWBp7XNKtoPmC9jvn12WPT3gkSE
  • src - ipfs://Qmaou5UzxPmPKVVTM9GzXPrDufP55EDZCtQmpy3T64ab9N
  1. Generate policy id

  2. Define your meta data

  3. create mint transaction

const fs = require("fs");
const cardano = require("./cardano");

// 1. Get the wallet
// 2. Define mint script
// 3. Create POLICY_ID
// 4. Define ASSET_NAME
// 5. Create ASSET_ID
// 6. Define metadata
// 7. Define transaction
// 8. Build transaction
// 9. Sign transaction
// 10. Submit transaction

const buildTransaction = (tx) => {
  const raw = cardano.transactionBuildRaw(tx);
  const fee = cardano.transactionCalculateMinFee({
    ...tx,
    txBody: raw,
  });
  tx.txOut[0].amount.lovelace -= fee;
  return cardano.transactionBuildRaw({ ...tx, fee });
};

const signTransaction = (wallet, tx, script) => {
  return cardano.transactionSign({
    signingKeys: [wallet.payment.skey, wallet.payment.skey],
    scriptFile: script,
    txBody: tx,
  });
};

const wallet = cardano.wallet("ADAPI");

const mintScript = {
  keyHash: cardano.addressKeyHash(wallet.name),
  type: "sig",
};

const POLICY_ID = cardano.transactionPolicyid(mintScript);
const ASSET_NAME = "BerrySpaceGreen";
const ASSET_ID = POLICY_ID + "." + ASSET_NAME;

const metadata = {
  721: {
    [POLICY_ID]: {
      [ASSET_NAME]: {
        name: "token name",
        image: "ipfs://QmQqzMTavQgT4f4T5v6PWBp7XNKtoPmC9jvn12WPT3gkSE",
        description: "Super Fancy Berry Space Green NFT",
        type: "image/png",
        src: "ipfs://Qmaou5UzxPmPKVVTM9GzXPrDufP55EDZCtQmpy3T64ab9N",
        authors: ["PIADA", "SBLYR"],
      },
    },
  },
};

const tx = {
  txIn: wallet.balance().utxo,
  txOut: [
    {
      address: wallet.paymentAddr,
      amount: { ...wallet.balance().amount, [ASSET_ID]: 1 },
    },
  ],
  mint: [{ action: "mint", amount: 1, token: ASSET_ID }],
  metadata,
  witnessCount: 2,
};

const raw = buildTransaction(tx);
const signed = signTransaction(wallet, raw, mintScript);
const txHash = cardano.transactionSubmit(signed);
console.log(txHash);
  1. Run the minting script, then wait a few moments to check the balance (utxo)
cd ..
node src/mint-asset.js
node src/get-balance.js
  1. send your nft back to your wallet
    • Create anew script to send nft to wallet
const cardano = require("./cardano");

// 1. get the wallet
// 2. define the transaction
// 3. build the transaction
// 4. calculate the fee
// 5. pay the fee by subtracting it from the sender utxo
// 6. build the final transaction
// 7. sign the transaction
// 8. submit the transaction

const sender = cardano.wallet("ADAPI");

console.log(
  "Balance of Sender wallet: " +
    cardano.toAda(sender.balance().amount.lovelace) +
    " ADA"
);

const receiver =
  "addr1qym6pxg9q4ussr96c9e6xjdf2ajjdmwyjknwculadjya488pqap23lgmrz38glvuz8qlzdxyarygwgu3knznwhnrq92q0t2dv0";

const txInfo = {
  txIn: cardano.queryUtxo(sender.paymentAddr),
  txOut: [
    {
      address: sender.paymentAddr,
      amount: {
        lovelace: sender.balance().amount.lovelace - cardano.toLovelace(1.5),
      },
    },
    {
      address: receiver,
      amount: {
        lovelace: cardano.toLovelace(1.5),
        "ad9c09fa0a62ee42fb9555ef7d7d58e782fa74687a23b62caf3a8025.BerrySpaceGreen": 1,
      },
    },
  ],
};

const raw = cardano.transactionBuildRaw(txInfo);

const fee = cardano.transactionCalculateMinFee({
  ...txInfo,
  txBody: raw,
  witnessCount: 1,
});

//pay the fee by subtracting it from the sender utxo
txInfo.txOut[0].amount.lovelace -= fee;

//create final transaction
const tx = cardano.transactionBuildRaw({ ...txInfo, fee });

//sign the transaction
const txSigned = cardano.transactionSign({
  txBody: tx,
  signingKeys: [sender.payment.skey],
});

//subm transaction
const txHash = cardano.transactionSubmit(txSigned);
console.log("TxHash: " + txHash);
  1. view your nft in your wallet

  2. View your asset on cardanoassets.com

  3. View your asset on pool.pm (see the actual picture)

  4. Show the original minting metadata

  5. open the src ipfs to prove that it work

Comments
  • TypeError: Cannot read property 'forEach' of undefined

    TypeError: Cannot read property 'forEach' of undefined

    Hey all,

    Currently trying to mint a one-off CNFT using this amazing repo, but seem to run into an issue when attempting the minting process. More specifically, here is the error message I get when running my minting script:

    /<MY-PATH>/node_modules/cardanocli-js/helper.js:145
      minting.action.forEach((mint, index, arr) => {
                     ^
    
    TypeError: Cannot read property 'forEach' of undefined
        at exports.mintToString (/<MY-PATH>/node_modules/cardanocli-js/helper.js:145:18)
        at CardanocliJs.transactionBuildRaw (/<MY-PATH>/node_modules/cardanocli-js/index.js:854:39)
        at buildTransaction (/<MY-PATH>/src/mint-asset.js:99:25)
        at Object.<anonymous> (/<MY-PATH>/src/mint-asset.js:110:13)
    

    See actual minting script below:

    const cardano = require("./cardano")
    
    // 1. Get the wallet
    
    const wallet = cardano.wallet("<MY-WALLET-NAME>");
    
    // 2. Define mint script
    
    const mintScript = {
        type: "all",
        scripts: [
            {
                slot: 49483967,
                type: "before"
            },
            {
                keyHash: cardano.addressKeyHash(wallet.name),
                type: "sig"
            }
        ]
    }
    
    // 3. Create POLICY_ID
    
    const POLICY_ID = cardano.transactionPolicyid(mintScript)
    
    // 4. Define ASSET_NAME
    
    const ASSET_NAME = "TestCNFT001"
    
    // 5. Create ASSET_ID
    
    const ASSET_ID = POLICY_ID + "." + ASSET_NAME
    
    // 6. Define metadata
    
    const metadata = {
        721: {
            [POLICY_ID]: {
                [ASSET_NAME]: {
                    name: ASSET_NAME,
                    image: "ipfs://<IPFS-HASH>",
                    description: "Test CNFT 001",
                    type: "image/png",
                }
            }
        }
    }
    
    // 7. Define transaction
    
    const tx = {
        txIn: wallet.balance().utxo,
        txOut: [
            {
                address: wallet.paymentAddr,
                value: { ...wallet.balance().value, [ASSET_ID]: 1 }
            }
        ],
        mint: {
            actions: [{ type: "mint", quantity: 1, asset: ASSET_ID }],
            script: [mintScript]
        },
        metadata,
        witnessCount: 2
    }
    
    // 8. Build transaction
    
    const buildTransaction = (tx) => {
    
        const raw = cardano.transactionBuildRaw(tx)
        const fee = cardano.transactionCalculateMinFee({
            ...tx,
            txBody: raw
        })
    
        tx.txOut[0].value.lovelace -= fee
    
        return cardano.transactionBuildRaw({ ...tx, fee })
    }
    
    const raw = buildTransaction(tx)
    
    // 9. Sign transaction
    
    const signTransaction = (wallet, tx) => {
    
        return cardano.transactionSign({
            signingKeys: [wallet.payment.skey, wallet.payment.skey],
            txBody: tx
        })
    }
    
    const signed = signTransaction(wallet, raw)
    
    // 10. Submit transaction
    
    const txHash = cardano.transactionSubmit(signed)
    
    console.log(txHash)
    

    Any clues as to why this error is being triggered?

    opened by dlm001 15
  • cardano-cli: not found

    cardano-cli: not found

    Hi guys,

    I'm sorry for opening an issue but I haven't found any other way to contact you. I have been doing the tutorial but I'm having an issue when running the create-wallet file. Like it doesn't found cardano-cli... I have installed both (cardano-cli & cardano node). I have even consoled out the object coming from your librarycardanocli-js` so I'm not sure what's happening.

    please see below the error I'm getting

    Screen Shot 2021-07-07 at 6 57 45 PM

    Can you please help me out?

    opened by roman-HS 10
  • Error:

    Error: "CARDANO_NODE_SOCKET_PATH"

    Hello, Sorry i have no other way to contact you. I ran into an issue. I think I am having trouble setting up the PATH. When i run node src/get-balance.js I am getting this error. Screen Shot 2021-04-14 at 2 04 20 PM Can you plz guide me. Thank you.

    opened by lucifer911 2
  • ValueNotConserved Error when sending assets from wallet

    ValueNotConserved Error when sending assets from wallet

    It seems we have some sort of bug or something in our send-asset-back-to-wallet.js and the send-multiple-assets-back-to-wallet.js

    Balance of Sender wallet: 500 ADA
    {
      '32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST0': 1,
      '32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST1': 1,
      '32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST2': 1,
      '32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST3': 1,
      '32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST4': 1,
      '32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST5': 1,
      '32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST6': 1,
      '32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST7': 1,
      '32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST8': 1,
      '32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST9': 1
    }
    {
      "txIn": [
        {
          "txHash": "8c2db8c5f240ba1b41d4bd0215b4a3143fa3fda6e3a0e9c7f5ec3844e390a551",
          "txId": 1,
          "amount": {
            "lovelace": 500000000,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST0": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST1": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST2": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST3": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST4": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST5": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST6": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST7": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST8": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST9": 1
          }
        }
      ],
      "txOut": [
        {
          "address": "addr_test1qpv6k9he0lztpr6y8v9q70p8vl8d84prla8zwwkx36fgwya978vjj5hll2a3dk2exnmptgnumzcd09a2favwrwukmhys5fqaqx",
          "amount": {
            "lovelace": 498400000,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST0": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST1": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST2": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST3": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST4": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST5": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST6": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST7": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST8": 1,
            "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65.TEST9": 1
          }
        },
        {
          "address": "addr_test1qp3at2awwrr8sgz9gy0qdznvpl0pk6fpyl2zp7jxc9qhard9j5wfrz38hgau7mdx0klffmt8lt33dsnnjg3zg7rxh0ssydvx3j",
          "amount": {
            "lovelace": 1600000,
            "32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST0": 1,
            "32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST1": 1,
            "32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST2": 1,
            "32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST3": 1,
            "32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST4": 1,
            "32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST5": 1,
            "32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST6": 1,
            "32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST7": 1,
            "32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST8": 1,
            "32cb877b90a41662f79967c4ab99b71254181e5a1498d58318299841.TEST9": 1
          }
        }
      ]
    }
    Command failed: transaction submit  Error: Error while submitting tx: ShelleyTxValidationError ShelleyBasedEraMary (ApplyTxError [LedgerFailure (UtxowFailure (UtxoFailure (ValueNotConservedUTxO (Value 500000000 (fromList [(PolicyID {policyID = ScriptHash "993e1792070088490e14b65e3f5a8b807f3c7a22bf92415574b2ed65"},fromList [("TEST0",1),("TEST1",1),("TEST2",1),("TEST3",1),("TEST4",1),("TEST5",1),("TEST6",1),("TEST7",1),("TEST8",1),("TEST9",1)])]))
    
    opened by AstroWa3l 1
  • ValueNotConservedUTxO

    ValueNotConservedUTxO

    Error: Command failed: cardano-cli transaction submit --testnet-magic 1097911063 --tx-file ../cnode/tmp/tx_iyc13iwv6.signed Command failed: transaction submit Error: Error while submitting tx: ShelleyTxValidationError ShelleyBasedEraAlonzo (ApplyTxError [UtxowFailure (WrappedShelleyEraFailure (UtxoFailure (ValueNotConservedUTxO (Value 156502547 (fromList [(PolicyID {policyID = ScriptHash "XXXXXX"},fromList [("Blokaria_Pink",1),("Blokaria_Pink_1",1),("Blokaria_Pink_11",1),("Blokaria_Pink_12",1),("Blokaria_Pink_13",1),("Blokaria_Pink_15",1),("Blokaria_Pink_18",1),("Blokaria_Pink_19",1),("NemanjaNFT",1),("NemanjaNFT_1",1),("NemanjaNFT_2",1),("NemanjaNFT_3",1),("NemanjaNFT_4",1),("NemanjaNFT_5",1),("NemanjaNFT_6",1),("NemanjaNFT_7",1),("NemanjaNFT_8",1)])])) (Value 156502547 (fromList [(PolicyID {policyID = ScriptHash "53d92437974def198c38e9d9481fafdc70366ff91dadc1bddf7e7ecf"},fromList [("NemanjaNFT_8",1)])])))))])

    https://github.com/armada-alliance/cardano-minter/blob/master/src/send-asset-back-to-wallet.js After trying and analyzing the cause of the error, still can't find the root cause problem. Also tried with https://github.com/shareslake/cardanocli-js/blob/main/examples/simpleTransaction.js but the same error got.

    The calculation is correct.

    Fee: 182617

    {
        "txIn": [
            {
                "txHash": "0f7b2ca8738221e79c36045fdf55a58a4b7e8edcffc72ea0d1bdeccf44edc0d1",
                "txId": 0,
                "value": {
                    "lovelace": 56502547,
                    "53d92437974def198c38e9d9481fafdc70366ff91dadc1bddf7e7ecf.426c6f6b617269615f50696e6b": 1,
                    "... ... ..."
                    "53d92437974def198c38e9d9481fafdc70366ff91dadc1bddf7e7ecf.4e656d616e6a614e46545f37": 1,
                    "53d92437974def198c38e9d9481fafdc70366ff91dadc1bddf7e7ecf.4e656d616e6a614e46545f38": 1,
                    "undefined": null
                }
            },
            {
                "txHash": "fec8662e1d9d9fdeb61804afcc14eaf6c1495e1f7e3104e137f58c0215cd9419",
                "txId": 0,
                "value": {
                    "lovelace": 100000000,
                    "undefined": null
                }
            }
        ],
        "txOut": [
            {
                "address": "addr_test1qqgyuatyqd35qv8s6jqufg65h0apv6qztdzmzc0thj4gpshgaxr09l20qws02zs889qcwqsnp0z7at6dq245kylayzssfernhl",
                "value": {
                    "lovelace": 154319930
                }
            },
            {
                "address": "addr_test1qqpwywyhja7pts2404j8arxr5uhvmku7d8k53hrfypqsss05nrlujs9z7afw0cguvjuzzxq6dtmhjhcz8auach6p7s7qr957hv",
                "value": {
                    "lovelace": 2000000,
                    "53d92437974def198c38e9d9481fafdc70366ff91dadc1bddf7e7ecf.4e656d616e6a614e46545f38": 1
                }
            }
        ]
    }
    

    Appreciate support Thx Nemanja


    PS. This is my code

    const cardano = require("./cardano")
    const sender = cardano.wallet("BLOKARIA")
    
    const receiver = "addr_test1qqpwywyhja7pts2404j8arxr5uhvmku7d8k53hrfypqsss05nrlujs9z7afw0cguvjuzzxq6dtmhjhcz8auach6p7s7qr957hv"
    
    let amountValue = 2
    
    const txInfo = {
        txIn: cardano.queryUtxo(sender.paymentAddr),
        txOut: [
            {
                address: sender.paymentAddr,
                value: {
                    lovelace: sender.balance().value.lovelace - cardano.toLovelace(amountValue)
                }
            },
            {
                address: receiver,
                value: {
                    lovelace: cardano.toLovelace(amountValue),
                    "53d92437974def198c38e9d9481fafdc70366ff91dadc1bddf7e7ecf.4e656d616e6a614e46545f38": 1
                }
            }
        ]
    }
    
    const raw = cardano.transactionBuildRaw(txInfo)
    
    const fee = cardano.transactionCalculateMinFee({
        ...txInfo,
        txBody: raw,
        witnessCount: 1
    })
    
    
    txInfo.txOut[0].value.lovelace -= fee
    
    const tx = cardano.transactionBuildRaw({ ...txInfo, fee })
    
    const txSigned = cardano.transactionSign({
        txBody: tx,
        signingKeys: [sender.payment.skey]
    })
    
    const txHash = cardano.transactionSubmit(txSigned)
    
    console.log(txHash)
    
    opened by nemanjamil 1
Owner
Armada Alliance
We are a Alliance of RPi and ARM based Stake Pool Operators on Cardano.
Armada Alliance
Yet another library for generating NFT artwork, uploading NFT assets and metadata to IPFS, deploying NFT smart contracts, and minting NFT collections

eznft Yet another library for generating NFT artwork, uploading NFT assets and metadata to IPFS, deploying NFT smart contracts, and minting NFT collec

null 3 Sep 21, 2022
Nami Wallet is a browser based wallet extension to interact with the Cardano blockchain.

Nami Wallet Nami Wallet is a browser based wallet extension to interact with the Cardano blockchain. It's an open-source project and built by Berry Po

Berry 335 Dec 29, 2022
Fullstack Dynamic NFT Mini Game built using 💎 Diamond Standard [EIP 2535] 🏃‍♀️Players can use Hero NFT to battle against Thanos ⚔ Heroes can be Healed by staking their NFT 🛡

?? Fullstack Dynamic NFT Mini Game ?? ?? Using Diamond Standard Play On ?? ?? ⏩ http://diamond-dapp.vercel.app/ Project Description ?? Fullstack Dynam

Shiva Shanmuganathan 21 Dec 23, 2022
Lucid is a library, which allows you to create Cardano transactions and off-chain code for your Plutus contracts in JavaScript and Node.js.

Lucid is a library, which allows you to create Cardano transactions and off-chain code for your Plutus contracts in JavaScript and Node.js.

Berry 243 Jan 8, 2023
🐲 Epic NFTs [UI] - Proyecto que te permitirá conectar tu billetera y acuñar un NFT, podrás revender el NFT en OpenSea. El NFT en sí se puede personalizar

?? Epic NFTs [UI] El proyecto se encuentra deployado en Vercel para que puedan verlo e interactuar con él, toda crítica o comentario se agradece, pued

Braian D. Vaylet 17 Oct 22, 2022
NFT Marketplace framework to build standalone NFT marketplace or inApp/inGame NFT marketplace

NFT Marketplace This project is a decentalized NFT Marketplace framework which is to be the baseline for you to build standalone NFT marketplace or in

Reddio, inc. 14 Dec 19, 2022
Create your own custom NFT minting page using thirdweb's NFT Drop contract

Customizable NFT Drop Minting Page In this example, you can create your own NFT Drop minting page just by customising the template with your branding,

thirdweb examples 59 Dec 24, 2022
Candy Shop is a JavaScript library that allows DAOs, NFT projects and anyone to create an NFT marketplace on Solana in minutes!

Candy Shop (IN BETA) Intro Candy Shop is a JavaScript library that allows DAOs, NFT projects and anyone to create an NFT marketplace on Solana in minu

LIQNFT 111 Dec 15, 2022
Cardano DApp Wallet Connector

Cardano DApp Wallet Connector This project was bootstrapped with Create React App. React JS demo In the project directory, you can run: npm start run

null 105 Dec 18, 2022
A typescript wrapper package to use the cardano-cli

Coti cardano-cli A package to run cardano-cli commands from nodejs, if you hold a blockfrost API-KEY you could add while creating a cardano-cli instan

Coti 6 Aug 10, 2022
✨ An IRL tokenization platform to turn your hopes, dreams, and desires into fundable NFTs on the Polygon blockchain using Chainlink, IPFS, Moralis, and NFT.Storage.

GoFundYourself Getting funding for your passion project, needs or dream doesn't have to be a nightmare! check out our live demo on Netlify Let's Fundi

Brian H. Hough | brianhuff.eth 7 Dec 6, 2022
Script to fetch all NFT owners using moralis API. This script output is a data.txt file containing all owner addresses of a given NFT and their balances.

?? Moralis NFT Snapshot Moralis NFT API will only return 500 itens at a time when its is called. For that reason, a simple logic is needed to fetch al

Phill Menezes 6 Jun 23, 2022
It is a very basic implementation of how blockchain works, mainly how the bitcoin blockchain.

How to run this program npm install node core/blockchain.js What is this It is a very basic implementation of how blockchain works, mainly how the bit

Anish Jain 12 May 9, 2022
HackMIT 2022. 2nd Place in Blockchain for Society sponsored by Jump Crypto. A revolutionary web application that leverages machine learning and blockchain technology to improve the crowdsourcing experience!

?? Wikisafe ?? Wikisafe is a revolutionary new crowdsourcing web application that innovates the process of crowdsourcing information. This application

Benson Liu 5 Dec 8, 2022
An indexer that aggregates and normalizes NFT related data on the Tezos Blockchain and provides a GraphQL API for developers.

TezTok Token Indexer An indexer that aggregates and normalizes NFT related data on the Tezos Blockchain and provides a GraphQL API for developers. Not

null 29 Dec 23, 2022
Dfunds is a decentralized fundraiser and NFT minter application built on Conflux blockchain with ChainIDE

Dfunds is a decentralized fundraiser and NFT minter application built on Conflux blockchain with ChainIDE. Dfunds was inspired by Conflux Labs & ChainIDE Hydra Developer Bootcamp. It was built to solve the problem of individuals and foundations in need of funds.

Paschal 3 May 16, 2022
NFT sales monitoring bot for the Ethereum blockchain. (ERC721, ERC1155)

Ethereum-NFT-Sales-Bot NFT sales monitoring bot for the Ethereum blockchain. (erc721, erc1155) Table of Contents Click to expand Market Coverage GIF G

null 33 Dec 13, 2022
Using decentralized identities with Web 2 to create a no login required website. Built using the Handshake blockchain.

Blending Web 2/3, is this Web .666? ( •̀ᴗ•́ )و ̑̑ Learn more by joining the Handshake Discord Community applause is a platform I built using centraliz

Publius Federalist 13 Mar 3, 2022
NFT Game Starter Project: https://github.com/buildspace/buildspace-nft-game-starter

Running React on Repl.it React is a popular JavaScript library for building user interfaces. Vite is a blazing fast frontend build tool that includes

Zahuis 2 Feb 11, 2022