create-collectibles.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import "@nomiclabs/hardhat-ethers";
  2. import { task } from "hardhat/config";
  3. task("create-collectibles", "Creates a new collectible item")
  4. .addParam("supply", "Number of Tokens To Generate")
  5. .addOptionalParam("contract", "The address of the ERC721 contract")
  6. .setAction(async (taskArgs, hre) => {
  7. const contractAddr =
  8. taskArgs.contract || process.env.NFT_CONTRACT_ADDRESS;
  9. const supply = taskArgs.supply;
  10. const ipfsFolderCID = process.env.IPFS_FOLDER_CID;
  11. console.log(
  12. `Creating ${supply} Collectibles via contract: ${contractAddr} on network ${hre.network.name}`
  13. );
  14. const nftFactory = await hre.ethers.getContractFactory("NFTToken");
  15. // Get signer information
  16. const accounts = await hre.ethers.getSigners();
  17. const signer = accounts[0];
  18. const nftTokenContract = new hre.ethers.Contract(
  19. contractAddr,
  20. nftFactory.interface,
  21. signer
  22. );
  23. for (let i = 0; i < supply; i++) {
  24. const tokenURI = `https://ipfs.io/ipfs/${ipfsFolderCID}/${i}.json`;
  25. const createCollectibleTx = await nftTokenContract.safeMint(
  26. signer.address,
  27. tokenURI
  28. );
  29. console.log(
  30. `Contract ${contractAddr} created new item with tokenURI ${tokenURI}. Transaction Hash: ${createCollectibleTx.hash}`
  31. );
  32. // const transactionReceip = await createCollectibleTx.wait(2)
  33. // console.log(transactionReceip)
  34. }
  35. });
  36. export default {
  37. solidity: "0.8.4",
  38. };