使用 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");