I am trying to deploy a Solidity contract using a deployment script in Hardhat. However, I encountered an error during the deployment process.I'm using Hardhat as my development environment, and I have already compiled the contract successfully. However, it seems that there is an issue with the bytecode or data being provided during deployment. The error message I received is as follows:
Error: expected 0 constructor arguments, got 6
Deploy Script
const { network, ethers } = require("hardhat");
const {
developmentChains,
networkConfig,
VERIFICATION_BLOCK_CONFIRMATIONS
} = require("../helper-hardhat-config.js");
const { verify } = require("../utils/verify");
console.log("I've reached here");
// Rest of the script...
const entranceFee = networkConfig[chainId]["entranceFee"];
const gasLane = networkConfig[chainId]["gasLane"];
const callBackGasLimit = networkConfig[chainId]["callBackGasLimit"];
const interval = networkConfig[chainId]["interval"];
const args = [entranceFee, vrfCoordinatorV2Address, gasLane, subscriptionId, callBackGasLimit, interval];
//**Error starts here**!!
const lottery = await deploy("Lottery", {
from: deployer,
args: args,
log: true,
waitConfirmations: network.config.blockConfirmations || 1,
});
// Rest of the script...
Solidity Code
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
import "@chainlink/contracts/src/v0.8/interfaces/VRFCoordinatorV2Interface.sol";
import "@chainlink/contracts/src/v0.8/VRFConsumerBaseV2.sol";
import "@chainlink/contracts/src/v0.8/interfaces/AutomationCompatibleInterface.sol";
abstract contract Lottery is VRFConsumerBaseV2, AutomationCompatibleInterface {
// types/ enums
enum LotteryState {
open,
calculating
}
// state variables
uint256 private immutable i_entranceFee;
address payable[] private s_players;
VRFCoordinatorV2Interface private immutable i_vrfCoordinator;
bytes32 private immutable i_gasLane;
uint64 private immutable i_subscriptionId;
uint16 private constant REQUEST_CONFIRMATIONS = 3;
uint32 private immutable i_callBackGasLimit;
uint32 private constant NUM_WORDS = 1;
// lottery variables
address private s_recentWinnerAddress;
LotteryState private s_LotteryState;
uint256 private s_LastTimeStamp;
uint256 private immutable i_Interval;
// events
event LotteryEnter(address indexed player);
event RequestedLotteryWinner(uint256 indexed requestId);
event WinnerPicked(address indexed winner);
constructor(
uint256 entranceFee,
address vrfCoordinatorV2,
bytes32 gasLane,
uint64 subscriptionId,
uint32 callBackGasLimit,
uint256 interval
)
VRFConsumerBaseV2(vrfCoordinatorV2)
{
// (Constructor implementation...)
}
//Rest of the code
I suspect that the issue might be related to the bytecode not being provided correctly during deployment. I have verified that the contract is compiled successfully and the bytecode is available in the artifacts/ directory.
Could someone please assist me in resolving this error? What could be causing the error during deployment?