我正在尝试使用安全帽将我的基本智能合约部署到 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 变量均已正确设置
您还应该添加
package.json
以进行版本说明。
假设您使用的是以太坊版本 5.0.0 或更高版本,并假设所有环境变量均已正确设置并且网络已正确配置,问题可能源于用于等待合约部署的方法。
await helloskale.deployed()
语句返回一个 BaseContract 实例,该实例在此上下文中可能不会按预期运行。相反,您应该考虑使用:
await helloskale.waitForDeployment()