使用 Opensea 指南中的代码铸造时出错
Error during minting with code from Opensea guide
我正尝试在 Opensea guide 之后部署我的第一个 SmartContract。一切正常,直到我为我的代币设置价格并添加 payable
关键字。现在,当我尝试铸造时,出现错误 Transaction value did not equal the mint price
。查看代码,我想我需要以某种方式在 msg.value
的 mint 请求中发送 ETH,但我不确定它的语法是什么?
以下是我在 shell 中的铸造方式:
npx hardhat mint --address {wallet_address}
这是 JS 中的 mint 函数:
task("mint", "Mints from the NFT contract")
.addParam("address", "The address to receive a token")
.setAction(async function (taskArguments, hre) {
const contract = await getContract("NFT", hre);
const transactionResponse = await contract.mintTo(taskArguments.address, {
gasLimit: 500_000,
});
console.log(`Transaction Hash: ${transactionResponse.hash}`);
});
.sol 合约中的 mintTo 函数:
// Main minting function
function mintTo(address recipient) public payable returns (uint256) {
uint256 tokenId = currentTokenId.current();
require(tokenId < TOTAL_SUPPLY, "Max supply reached");
require(msg.value == MINT_PRICE, "Transaction value did not equal the mint price");
currentTokenId.increment();
uint256 newItemId = currentTokenId.current();
_safeMint(recipient, newItemId);
return newItemId;
}
我找到了解决这个问题的方法。您需要在 mint.js 中的 mint 任务中设置价格,如下所示:
task("mint", "Mints from the NFT contract")
.addParam("address", "The address to receive a token")
.setAction(async function (taskArguments, hre) {
const contract = await getContract("NFT", hre);
const transactionResponse = await contract.mintTo(taskArguments.address, {
gasLimit: 500_000,
value: ethers.utils.parseEther("0.01")
});
console.log(`Transaction Hash: ${transactionResponse.hash}`);
});
我还没有想出办法从合同中导入 MINT_PRICE 变量。注意:您可能需要在文件顶部添加 const { ethers } = require("ethers");
。
我正尝试在 Opensea guide 之后部署我的第一个 SmartContract。一切正常,直到我为我的代币设置价格并添加 payable
关键字。现在,当我尝试铸造时,出现错误 Transaction value did not equal the mint price
。查看代码,我想我需要以某种方式在 msg.value
的 mint 请求中发送 ETH,但我不确定它的语法是什么?
以下是我在 shell 中的铸造方式:
npx hardhat mint --address {wallet_address}
这是 JS 中的 mint 函数:
task("mint", "Mints from the NFT contract")
.addParam("address", "The address to receive a token")
.setAction(async function (taskArguments, hre) {
const contract = await getContract("NFT", hre);
const transactionResponse = await contract.mintTo(taskArguments.address, {
gasLimit: 500_000,
});
console.log(`Transaction Hash: ${transactionResponse.hash}`);
});
.sol 合约中的 mintTo 函数:
// Main minting function
function mintTo(address recipient) public payable returns (uint256) {
uint256 tokenId = currentTokenId.current();
require(tokenId < TOTAL_SUPPLY, "Max supply reached");
require(msg.value == MINT_PRICE, "Transaction value did not equal the mint price");
currentTokenId.increment();
uint256 newItemId = currentTokenId.current();
_safeMint(recipient, newItemId);
return newItemId;
}
我找到了解决这个问题的方法。您需要在 mint.js 中的 mint 任务中设置价格,如下所示:
task("mint", "Mints from the NFT contract")
.addParam("address", "The address to receive a token")
.setAction(async function (taskArguments, hre) {
const contract = await getContract("NFT", hre);
const transactionResponse = await contract.mintTo(taskArguments.address, {
gasLimit: 500_000,
value: ethers.utils.parseEther("0.01")
});
console.log(`Transaction Hash: ${transactionResponse.hash}`);
});
我还没有想出办法从合同中导入 MINT_PRICE 变量。注意:您可能需要在文件顶部添加 const { ethers } = require("ethers");
。