这是合约代码:
//contracts/TestToken.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Capped.sol";
contract TestToken is ERC20Capped {
address payable public owner;
constructor(uint256 cap) ERC20("TestToken", "TST") ERC20Capped(cap * (10 ** decimals()))
{
owner = payable(msg.sender);
_mint(owner, 333666999000 * (10 ** decimals()));
}
function _mint(address account, uint256 amount) internal virtual override {
require(ERC20.totalSupply() + amount <= cap(), "ERC20Capped: cap exceeded");
super._mint(account, amount);
}
function destroy() public onlyOwner {
selfdestruct(owner);
}
modifier onlyOwner {
require(msg.sender == owner, "Only the owner can call this function");
_;
}
}`
这是给出错误的deploy.js:
const hre = require("hardhat");
async function main() {
const TestToken = await hre.ethers.getContractFactory("TestToken");
const testToken = await TestToken.deploy(333666999000);
await testToken.deployed();
console.log("Test Token deployed: ", testToken.address);
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
终端错误:TypeError:testToken.deployed 不是函数 在 main (C:\Users\XXXX\OneDrive\Desktop\ERC 20 est-token\scripts\deploy.js:7:19) 在 processTicksAndRejections (节点:内部/进程/task_queues:95:5)
Hardhat.config.js:
require("@nomicfoundation/hardhat-toolbox");
require("dotenv").config();
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.17",
networks: {
goerli: {
url: process.env.INFURA_GOERLI_ENDPOINT,
accounts: [process.env.PRIVATE_KEY]
}
}
};
对不起大家,可能是一个愚蠢的合同,我自己尝试了 3 天,对 Solidity 几乎没有经验,我只是想学习!谢谢!
(我的无技能猜测是我丢失了一个软件包,但我搜索了整个互联网,只找到了一个关于它的软件包,安全帽以太坊,但仍然不起作用)
安全帽版本:2.17.2
好像hardhat有重大更新,尝试用waitForDeployment()替换deployment