我正在开发我的第一个 eth 智能合约,但无法部署它,错误显示:“TypeError: XXXXX.deployed 不是函数”

问题描述 投票:0回答:1

这是合约代码:

//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]
    }
  }
};

这是错误:(https://i.stack.imgur.com/pO9x6.png)

对不起大家,可能是一个愚蠢的合同,我自己尝试了 3 天,对 Solidity 几乎没有经验,我只是想学习!谢谢!

(我的无技能猜测是我丢失了一个软件包,但我搜索了整个互联网,只找到了一个关于它的软件包,安全帽以太坊,但仍然不起作用)

安全帽版本:2.17.2

ethereum solidity hardhat erc20
1个回答
0
投票

好像hardhat有重大更新,尝试用waitForDeployment()替换deployment

© www.soinside.com 2019 - 2024. All rights reserved.