我试图用Hardhat运行脚本来部署具有构造函数参数的合约。当我运行npx hardhat run scriptsdeploy.js --network rinkeby
时,我得到错误:
Error: missing argument: in Contract constructor (count=0, expectedCount=7, code=MISSING_ARGUMENT, version=contracts/5.5.0)
我尝试使用——constructor-args参数,但得到另一个错误:
Error HH305: Unrecognized param --constructor-args
我找到的所有关于constructor-args的参考都表明它只能作为hardhat verify的一部分可用,而不是hardhat run,但如果是这种情况,我如何在部署时传递参数?
已更新,包括部署脚本
// deploy.js
async function main() {
const [deployer] = await ethers.getSigners();
console.log('%c n Deploying contracts with the account:', 'color:', deployer.address );
console.log('%c n Account balance:', 'color:', (await deployer.getBalance()).toString() );
const Token = await ethers.getContractFactory("Test01");
const token = await Token.deploy();
console.log('%c n Token address:', 'color:', token.address );
}
main()
.then( () => process.exit(0) )
.catch( (error) => {
console.error(error);
process.exit(1);
});
```
const Token = await ethers.getContractFactory("Test01");
const token = await Token.deploy();
Token
(大写T)是ContractFactory
的一个实例。根据文档,您可以将构造函数参数传递给deploy()
方法。
例如,如果你的Solidity构造函数接受一个bool
和一个string
constructor(bool _foo, string memory _hello) {
}
这将是JS代码片段:
const token = await Token.deploy(true, "hello");
当构造函数中有参数而没有参数时,会发生这种情况将它们包含在deploy函数中。
const token = await deploy("Token", {
from: deployer,
args: [],
log: true,
*//list all the arguments here ie. adresses*
});