Closed akashgreninja closed 1 year ago
I FIXEDDD IT LESSGOO so the thing is add these lines
if (developmentChains.includes(network.name)) {
const vrfCoordinatorV2Mock = await ethers.getContract("VRFCoordinatorV2Mock")
await vrfCoordinatorV2Mock.addConsumer(subscriptionId, raffle.address)
console.log("Consumer is added and this was the fix ig");
}
at the end of your 01-deploy-raffle
overall code is
const { ethers, network } = require("hardhat");
const {
developmentChains,
networkConfig,
} = require("../helper-hardhat-config");
const { verify } = require("../utils/verify");
const VRF_SUB_AMOUNT = ethers.utils.parseEther("30");
module.exports = async ({ getNamedAccounts, deployments }) => {
const { deploy, log } = deployments;
const { deployer } = await getNamedAccounts();
const chainId = network.config.chainId;
let vrfCoordinatorV2Address, subscriptionId;
if (developmentChains.includes(network.name)) {
const vrfCoorinatorV2Mock = await ethers.getContract(
"VRFCoordinatorV2Mock"
);
// await vrfCoorinatorV2Mock.addConsumer(subscriptionId, vrfCoorinatorV2Mock.address)
vrfCoordinatorV2Address = vrfCoorinatorV2Mock.address;
const tansactionResponse = await vrfCoorinatorV2Mock.createSubscription();
const trasactionreciept = await tansactionResponse.wait();
subscriptionId = trasactionreciept.events[0].args.subId;
log("subscriptionId", subscriptionId);
await vrfCoorinatorV2Mock.fundSubscription(subscriptionId, VRF_SUB_AMOUNT);
// await vrfCoorinatorV2Mock.addConsumer(subscriptionId, vrfCoordinatorV2Address)
// log('Consumer is added');
} else {
vrfCoordinatorV2Address = networkConfig[chainId]["vrfCoordinatorV2"];
subscriptionId = networkConfig[chainId]["subscriptionId"];
console.log(subscriptionId);
log("yeetus");
}
const entranceFee = networkConfig[chainId].entranceFee;
const gasLane = networkConfig[chainId]["gasLane"];
const callbackGasLimit = networkConfig[chainId]["callbackGasLimit"];
log("callbackGasLimit", callbackGasLimit);
log("gasLane", gasLane);
const interval = networkConfig[chainId]["interval"];
const args = [
vrfCoordinatorV2Address,
subscriptionId,
gasLane,
interval,
entranceFee,
callbackGasLimit,
];
const raffle = await deploy("Raffle", {
from: deployer,
args: args,
log: true,
waitconfirmations: network.config.blockconfirmations || 1,
});
// Ensure the Raffle contract is a valid consumer of the VRFCoordinatorV2Mock contract.
if (developmentChains.includes(network.name)) {
const vrfCoordinatorV2Mock = await ethers.getContract("VRFCoordinatorV2Mock")
await vrfCoordinatorV2Mock.addConsumer(subscriptionId, raffle.address)
console.log("Consumer is added and this was the fix ig");
}
if (
!developmentChains.includes(network.name) &&
process.env.ETHERSCAN_API_KEY
) {
log("veryfyinh on etherscan");
await verify(raffle.address, args);
log("-------------------------");
}
};
module.exports.tags = ["all", "raffle"];
You can close if you found the solution 😁
My Raffle.sol
` pragma solidity ^0.8.7;
import "@chainlink/contracts/src/v0.8/VRFConsumerBaseV2.sol"; import "@chainlink/contracts/src/v0.8/interfaces/VRFCoordinatorV2Interface.sol"; import "@chainlink/contracts/src/v0.8/AutomationCompatible.sol";
error Raffle_NotENoughETHEntered(); error Raffle_TransferFailed(); error Raffle_NotOpen(); error Raffle_UpKeepNotNeeded(uint256 currentBalance ,uint256 numpLAYERS, uint256 rafflestate);
/**
contract Raffle is VRFConsumerBaseV2, AutomationCompatibleInterface { enum RaffleState { OPEN, CALCULATING } 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 constant NUM_WORDS = 1; uint32 private immutable i_callbackGasLimit; uint256 private s_lastTimeStamp; uint256 private immutable i_interval; // lottery variables address private s_recentWinner; RaffleState private s_raffleState;
}`
My 01-deploy-raffle.js
`const { ethers, network } = require("hardhat");
const { developmentChains, networkConfig, } = require("../helper-hardhat-config"); const { verify } = require("../utils/verify");
const VRF_SUB_AMOUNT = ethers.utils.parseEther("30"); module.exports = async ({ getNamedAccounts, deployments }) => { const { deploy, log } = deployments; const { deployer } = await getNamedAccounts(); const chainId = network.config.chainId; let vrfCoordinatorV2Address, subscriptionId;
if (developmentChains.includes(network.name)) { const vrfCoorinatorV2Mock = await ethers.getContract( "VRFCoordinatorV2Mock" ); // await vrfCoorinatorV2Mock.addConsumer(subscriptionId, vrfCoorinatorV2Mock.address) vrfCoordinatorV2Address = vrfCoorinatorV2Mock.address; const tansactionResponse = await vrfCoorinatorV2Mock.createSubscription(); const trasactionreciept = await tansactionResponse.wait(1); subscriptionId = trasactionreciept.events[0].args.subId; await vrfCoorinatorV2Mock.fundSubscription(subscriptionId, VRF_SUB_AMOUNT); await vrfCoorinatorV2Mock.addConsumer(subscriptionId, vrfCoordinatorV2Address) log('Consumer is added'); } else { vrfCoordinatorV2Address = networkConfig[chainId]["vrfCoordinatorV2"]; subscriptionId = networkConfig[chainId]["subscriptionId"]; console.log(subscriptionId) log("yeetus") } const entranceFee = networkConfig[chainId].entranceFee; const gasLane = networkConfig[chainId]["gasLane"]; const callbackGasLimit = networkConfig[chainId]["callbackGasLimit"]; log("callbackGasLimit", callbackGasLimit) log("gasLane", gasLane) const interval = networkConfig[chainId]["interval"]; const args = [ vrfCoordinatorV2Address, entranceFee, gasLane, subscriptionId, callbackGasLimit, interval, ]; const raffle = await deploy("Raffle", { from: deployer, args: args, log: true, waitconfirmations: network.config.blockconfirmations || 1, }); if ( !developmentChains.includes(network.name) && process.env.ETHERSCAN_API_KEY ) { log("veryfyinh on etherscan"); await verify(raffle.address, args); log("-------------------------"); } };
module.exports.tags = ["all", "raffle"]; `
finally my Raffle.test `const { network, getNamedAccounts, deployments, ethers } = require("hardhat"); const { networkConfig, developmentChains, } = require("../../helper-hardhat-config"); const { assert, expect } = require("chai");
!developmentChains.includes(network.name) ? describe.skip : describe("Raffle", async function () { let raffle, vrfCoordinatorV2Mock, raffleEntranceFee, deployer,interval ; const chainId = network.config.chainId;
`