Estoy tratando de ejecutar un script con Hardhat para implementar un contrato que tiene argumentos de constructor. Cuando ejecuto npx hardhat run scripts\deploy.js --network rinkeby me sale el error:
Error: missing argument: in Contract constructor (count=0, expectedCount=7, code=MISSING_ARGUMENT, version=contracts/5.5.0)
Intenté usar el parámetro --constructor-args pero obtuve otro error:
Error HH305: Unrecognized param --constructor-args
Todas las referencias que encontré a constructor-args sugieren que solo está disponible como parte de la verificación de casco duro , no de la ejecución de casco duro, pero si ese es el caso, ¿cómo puedo pasar argumentos al implementar?
Actualizado para incluir secuencia de comandos de implementación
// 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 mayúscula) es una instancia de ContractFactory . Según los documentos , puede pasar los argumentos del constructor al método deploy() .
Por ejemplo, si su constructor de Solidity toma un bool y una string
constructor(bool _foo, string memory _hello) { }este sería el fragmento JS:
const token = await Token.deploy(true, "hello");