-
Hello guys, I keep on getting this error when I run the following command below after uploading my token URI and metadata URI on pinata hh deploy --tags randomipfs,mocks Here is my 02-deploy-random-ipfs.js const { network, getNamedAccounts, deployments } = require("hardhat")
const { developmentChains, networkConfig } = require("../helper-hardhat-config")
const { verify } = require("../utils/verify")
const { storageImages, storeTokenUriMetadata } = require("../utils/uploadToPinata")
const imagesLocation = "./images/randomNft/"
const metadataTemplate = {
name: "",
description: "",
image: "",
attributes: [
{
trait_type: "Cuteness",
value: 100,
},
],
}
module.exports = async function ({ getNamedAccounts, deployments }) {
const { deploy, log } = deployments
const { deployer } = await getNamedAccounts()
const chainId = network.config.chainId
let tokenUris, vrfCoordinatorV2Address, subscriptionId
// get the IPFS hashes to our images
if (process.env.UPLOAD_TO_PINATA == "true") {
tokenUris = await handleTokenUris()
}
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 = txReceipt.events[0].args.subId
} else {
vrfCoordinatorV2Address = networkConfig[chainId].vrfCoordinatorV2
subscriptionId = networkConfig[chainId].subscriptionId
}
log("------------------------------------------")
await storageImages(imagesLocation)
const args = [
vrfCoordinatorV2Address,
subscriptionId,
networkConfig[chainId]["gasLane"],
networkConfig[chainId]["mintFee"],
tokenUris,
networkConfig[chainId]["callbackGasLimit"],
]
console.log(
`subscriptionId: ${subscriptionId},
gasLane: ${networkConfig[chainId]["gasLane"]},
Call Gas Limit: ${networkConfig[chainId]["callbackGasLimit"]},
MintFee: ${networkConfig[chainId]["mintFee"]}, vrf Address: ${vrfCoordinatorV2Address}`
)
console.log(tokenUris)
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 = []
const { responses: imageUploadResponses, files } = await storageImages(imagesLocation)
for (imageUploadResponseIndex in imageUploadResponses) {
let tokenUriMetadata = { ...metadataTemplate }
tokenUriMetadata.name = files[imageUploadResponseIndex].replace(".png", "")
tokenUriMetadata.description = `An exlusive ${tokenUriMetadata.name} art!`
tokenUriMetadata.image = `ipfs://${imageUploadResponses[imageUploadResponseIndex].IpfsHash}`
console.log(`Uploading ${tokenUriMetadata.name}...`)
const metadataUploadResponse = await storeTokenUriMetadata(tokenUriMetadata)
tokenUris.push(`ipfs://${metadataUploadResponse.IpfsHash}`)
}
console.log("Token URIs Uploaded! They are:")
console.log(tokenUris)
return tokenUris
}
module.exports.tags = ["all", "randomIpfsNft", "main"] My uploadToPinata.js const pinataSDK = require("@pinata/sdk")
const path = require("path")
const fs = require("fs")
require("dotenv").config()
const pinataApiKey = process.env.PINATA_API_KEY
const pinataApiSecret = process.env.PINATA_API_SECRET
const pinata = pinataSDK(pinataApiKey, pinataApiSecret)
async function storageImages(imagesFilePath) {
const fullImagesPath = path.resolve(imagesFilePath)
const files = fs.readdirSync(fullImagesPath)
// console.log(files)
let responses = []
console.log("Uploading to Pinata!")
for (fileIndex in files) {
console.log(`Working on ${fileIndex}...`)
const readableStreamForFile = fs.createReadStream(`${fullImagesPath}/${files[fileIndex]}`)
try {
const response = await pinata.pinFileToIPFS(readableStreamForFile)
responses.push(response)
} catch (error) {
console.log(error)
}
}
return { responses, files }
}
async function storeTokenUriMetadata(metadata) {
try {
const response = await pinata.pinJSONToIPFS(metadata)
return response
} catch (error) {
console.log(error)
}
return null
}
module.exports = { storageImages, storeTokenUriMetadata } And my helper-hardhat-config.js const networkConfig = {
31337: {
name: "localhost",
subscriptionId: "8699",
ethUsdPriceFeed: "0x9326BFA02ADD2366b30bacB125260Af641031331",
gasLane: "0xd89b2bf150e3b9e13446986e571fb9cab24b13cea0a43ea20a6049a85cc807cc", // 30 gwei
mintFee: "10000000000000000", // 0.01 ETH
callbackGasLimit: "500000", // 500,000 gas
},
// Price Feed Address, values can be obtained at https://docs.chain.link/docs/reference-contracts
// Default one is ETH/USD contract on Kovan
4: {
name: "rinkeby",
ethUsdPriceFeed: "0x8A753747A1Fa494EC906cE90E9f37563A8AF630e",
vrfCoordinatorV2: "0x6168499c0cFfCaCD319c818142124B7A15E857ab",
gasLane: "0xd89b2bf150e3b9e13446986e571fb9cab24b13cea0a43ea20a6049a85cc807cc",
callbackGasLimit: "500000",
mintFee: "10000000000000000", // 0.01 ETH
subscriptionId: "8699", // add your ID here!
},
}
const DECIMALS = "18"
const INITIAL_PRICE = "200000000000000000000"
const developmentChains = ["hardhat", "localhost"]
module.exports = {
networkConfig,
developmentChains,
DECIMALS,
INITIAL_PRICE,
} |
Beta Was this translation helpful? Give feedback.
Answered by
M-Marcel
Jul 25, 2022
Replies: 1 comment
-
So I finally found the solution to the error deep in a few unrelated discussions: I reduced the mintFee from "10000000000000000" to "100000000" |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
M-Marcel
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
So I finally found the solution to the error deep in a few unrelated discussions:
I reduced the mintFee from "10000000000000000" to "100000000"