-
02-deploy-random-ipfs-nft const { network, ethers } = require("hardhat")
const { developmentChains, networkConfig } = require("../helper-hardhat-config")
const { verify } = require("../utils/verify")
const { storeImages, storeTokenUrisMetadata } = require("../utils/uploadToPinata")
const imagesLocation = "./images/randomNft"
const metadataTemplate = {
name: "",
description: "",
image: "",
attributes: [
{
trait_type: "Cuteness",
value: 100,
},
],
}
let tokenUris = [
"ipfs://QmaVkBn2tKmjbhphU7eyztbvSQU5EXDdqRyXZtRhSGgJGo",
"ipfs://QmYQC5aGZu2PTH8XzbJrbDnvhj3gVs7ya33H9mqUNvST3d",
"ipfs://QmZYmH5iDbD6v3U2ixoVAjioSzvWJszDzYdbeCLquGSpVm",
]
const FUND_AMOUNT = "1000000000000000000000"
module.exports = async function({getNamedAccounts, deployments}){
const {deploy, log} = deployments
const {deployer} = await getNamedAccounts()
const chainId = network.config.chainId
// get the IPFS hashes of our images
if (process.env.UPLOAD_TO_PINATA == "true"){
tokenUris = await handleTokenUris()
}
// 1. With our own IPFS node https://docs.ipfs.io/
// 2. Pinata https://www.pinata.cloud/
// 3. nft.storage https://nft.storage/
let vrfCoordinatorV2Address, subscriptionId
if (developmentChains.includes(network.name)){
const vrfCoordinatorV2Mock = await ethers.getContract("VRFCoordinatorV2Mock")
vrfCoordinatorV2Address = vrfCoordinatorV2Mock.address
// const tx = await vrfCoordinatorV2Mock.createSubscription()
// const txReceipt = await tx.wait(1)
subscriptionId = 1
await vrfCoordinatorV2Mock.fundSubscription[subscriptionId, FUND_AMOUNT]
}else {
vrfCoordinatorV2Address = networkConfig[chainId].vrfCoordinatorV2
subscriptionId = networkConfig[chainId].subscriptionId
}
log("------------------------------")
const args = [
vrfCoordinatorV2Address,
subscriptionId,
networkConfig[chainId]["gasLane"],
networkConfig[chainId]["callbackGasLimit"],
tokenUris,
networkConfig[chainId]["mintFee"],
]
const randomIpfsNft = await deploy("RandomIpfsNft", {
from: deployer,
args: args,
log: true,
waitConfirmations: network.config.blockConfirmations || 1,
})
log("--------------------------------------------")
if(!developmentChains.includes(network.name) && process.env.ETHERSCAN_API_KEY){
log("Verifying...")
await verify(randomIpfsNft.address, args,
)
}
}
async function handleTokenUris() {
tokenUris = []
// store the Image in IPFS
// store the metadata in IPFS
const { responses: imageUploadResponses, files } = await storeImages(imagesLocation)
for (imageUploadResponsesIndex in imageUploadResponses){
// create metadata
// upload the metadata
// pug.png, st-bernard.png
let tokenUriMetadata = { ...metadataTemplate }
tokenUriMetadata.name = files[imageUploadResponsesIndex].replace(".png", "")
tokenUriMetadata.description = `An adorable ${tokenUriMetadata.name} pup!`
tokenUriMetadata.image = `ipfs://${imageUploadResponses[imageUploadResponsesIndex].IpfsHash}`
console.log(`Uploading ${tokenUriMetadata.name}...`)
// store the JSON to pinata / IPFS
const metadataUploadResponse = await storeTokenUrisMetadata(tokenUriMetadata)
tokenUris.push(`ipfs://${metadataUploadResponse.IpfsHash}`)
}
console.log("Token URIs Uploaded! They are:")
console.log(tokenUris)
return tokenUris
}
module.exports.tags = ["all","randomipfs" ,"main"] anyone can help me? |
Beta Was this translation helpful? Give feedback.
Answered by
Nlferu
Nov 4, 2023
Replies: 1 comment 3 replies
-
Hello @Siaeua Please show me your |
Beta Was this translation helpful? Give feedback.
3 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi @Siaeua
So the issue is coming from ethers version as you are using ethers v6, which has different syntax than ethers v5. Whole course is built on ethers v5, so please either downgrade your ethers as below to stick to v5 or edit your code to match ethers v6 -> check their documentation but for getting address for example instead of
.address
property you should be usinggetAddress()
function.To downgrade your ethers to match course:
yarn.lock
andnode_modules
package.json
from course -> ensure it has"@nomiclabs/hardhat-ethers": "npm:hardhat-deploy-ethers@^0.3.0-beta.13"
in it.yarn
command.