无法理解 HardHat 部署

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

我正在尝试使用安全帽将我的基本智能合约部署到 SKALE Chaos Testnet 网络。以下是我的代码:

MESSAGE.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract messageNFT is ERC721URIStorage, Ownable {
    using Counters for Counters.Counter;
    Counters.Counter private _tokenIds;

    constructor() ERC721("Moralis Mage", "MM") {}

    function mintNFT(address recipient, string memory tokenURI)
        public
        onlyOwner
        returns (uint256)
    {
        _tokenIds.increment();

        uint256 newItemId = _tokenIds.current();
        _mint(recipient, newItemId);
        _setTokenURI(newItemId, tokenURI);

        return newItemId;
    }
}

hardhat.config.js

require('@nomicfoundation/hardhat-toolbox')
// require("@nomiclabs/hardhat-etherscan");
const dotenv = require('dotenv')

dotenv.config()

/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
  solidity: {
    compilers: [
      {
        version: '0.8.9'
      },
      {
        version: '0.8.0',
        settings: {}
      }
    ]
  },
  networks: {
    skale: {
      url: process.env.SKALE_ENDPOINT,

      accounts: [process.env.PRIVATE_KEY]
    },
    sepolia: {
      url: 'https://eth-sepolia.g.alchemy.com/v2/2Uu34p8Xg2cuQqNvnzk6Swu0EsXJ7DWF',
      accounts: [
        `0xdf57089febbacf7ba0bc227dafbffa9fc08a93fdc68e1e42411a14efcf23656e`
      ]
    }
  },

  etherscan: {
    apiKey: {
      skale: process.env.ETHERSCAN_API_KEY
    },
    customChains: [
      {
        network: 'skale',
        chainId: parseInt(process.env.CHAIN_ID),
        urls: {
          apiURL: process.env.API_URL,
          browserURL: process.env.BLOCKEXPLORER_URL
        }
      }
    ]
  }
}

部署.js

const hre = require('hardhat')

async function main () {
  const HelloSkale = await hre.ethers.getContractFactory('messageNFT')
  const helloskale = await HelloSkale.deploy()

  await helloskale.deployed()

  console.log('Album.sol deployed to:', helloskale.address)
}

main()
  .then(() => process.exit(0))
  .catch(error => {
    console.error(error)
    process.exit(1)
  })

当我最终尝试使用以下命令进行部署时:

npx hardhat run --network skale ./scripts/deploy.js

我收到以下错误:

识别出无效的方法参数(无效的名称和/或类型)

我对此完全陌生,所以请帮助我理解我做错了什么。

注意:所有 .env 变量均已正确设置

solidity hardhat
1个回答
0
投票

您还应该添加

package.json
以进行版本说明。

假设您使用的是以太坊版本 5.0.0 或更高版本,并假设所有环境变量均已正确设置并且网络已正确配置,问题可能源于用于等待合约部署的方法。

await helloskale.deployed()
语句返回一个 BaseContract 实例,该实例在此上下文中可能不会按预期运行。相反,您应该考虑使用:

await helloskale.waitForDeployment()

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