如何在Hardhat运行部署脚本时传递合约构造函数参数
问题原因
- 第一个报错是因为你的
Test01合约构造函数定义了7个入参,但你在部署脚本的Token.deploy()调用时没有传入任何参数,参数数量不匹配 - 第二个报错是因为
--constructor-args是hardhat verify验证合约命令的专属参数,hardhat run命令本身不支持该参数,不需要在执行部署命令时添加
解决方法
直接在部署脚本的deploy方法里按顺序传入你的合约构造函数需要的7个参数即可,参数顺序、类型必须和合约constructor定义的完全一致。
修改后的部署脚本核心代码示例:
// 你只需要修改deploy()的入参部分,替换为你实际需要的7个参数即可 const Token = await ethers.getContractFactory("Test01"); // 示例:假设你的合约构造函数依次需要 代币名称、代币符号、精度、总发行量、所有者地址、费率、手续费接收地址 7个参数,按顺序传入 const token = await Token.deploy( "测试代币", "TEST", 18, ethers.utils.parseEther("1000000"), // 总发行量100万枚,注意用ethers工具类处理精度避免溢出 deployer.address, 100, // 费率示例,按你合约实际要求传值 "0xYourFeeReceiverAddress" // 替换为实际地址 );
修改完后直接执行原来的部署命令即可:
npx hardhat run scripts\deploy.js --network rinkeby
补充:后续如果你需要在区块链浏览器验证该合约,那时候才需要用到
--constructor-args参数,要么直接在命令行按顺序传参,要么写一个单独的参数配置文件导出参数列表,验证时指定该文件路径即可。
内容的提问来源于stack exchange,提问作者Frank Furter
相关产品推荐
相关产品推荐

