使用 Hardhat 在 sepolia 测试网上部署智能合约时遇到错误

问题描述 投票:0回答:2

在使用安全帽点火部署合约时,我遇到了这个奇怪的错误。我正在 sepolia testNet 上部署。

这是我的投票智能合约:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Voting {
    struct Candidate {
        string name;
        uint256 voteCount;
    }

    Candidate[] public candidates;
    address owner;
    mapping(address => bool) public voters;

    uint256 public votingStart;
    uint256 public votingEnd;

    constructor(string[] memory _candidateName, uint256 _durationInMinutes) {
        for (uint256 i = 0; i < _candidateName.length; i++) {
            candidates.push(Candidate({name: _candidateName[i], voteCount: 0}));
        }
        owner = msg.sender;
        votingStart = block.timestamp;
        votingEnd = block.timestamp + (_durationInMinutes * 1 minutes);
    }

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    function addCandidate(string memory _name) public onlyOwner {
        candidates.push(Candidate({name: _name, voteCount: 0}));
    }

    function vote(uint256 _candidateIndex) public {
        require(!voters[msg.sender], "You have already voted.");
        require(
            _candidateIndex < candidates.length,
            "Invalid candidate index."
        );

        candidates[_candidateIndex].voteCount++;
        voters[msg.sender] = true;
    }

    function getAllVotesOfCandiates() public view returns (Candidate[] memory) {
        return candidates;
    }

    function getVotingStatus() public view returns (bool) {
        return (block.timestamp >= votingStart && block.timestamp < votingEnd);
    }

    function getRemainingTime() public view returns (uint256) {
        require(block.timestamp >= votingStart, "Voting has not started yet.");
        if (block.timestamp >= votingEnd) {
            return 0;
        }
        return votingEnd - block.timestamp;
    }
}

部署脚本

const { buildModule } = require("@nomicfoundation/hardhat-ignition/modules");

module.exports = buildModule("VoteModule", (m) => {
  const Candidates = ["Atharva", "Pratham"];
  const Time = 120;

  const vote = m.contract("Voting", [Candidates, Time]);

  return { vote };
});

错误:

Batch #1
  Executing VoteModule#Voting...

An unexpected error occurred:

IgnitionError: IGN1: Internal Hardhat Ignition invariant was violated: Expected failed simulation after having failed to estimate gas
    at assertIgnitionInvariant (C:\Users\HP\OneDrive\Desktop\sample\node_modules\@nomicfoundation\ignition-core\src\internal\utils\assertions.ts:9:11)
    at sendTransactionForOnchainInteraction (C:\Users\HP\OneDrive\Desktop\sample\node_modules\@nomicfoundation\ignition-core\src\internal\execution\future-processor\helpers\network-interaction-execution.ts:156:28)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)        
    at sendTransaction (C:\Users\HP\OneDrive\Desktop\sample\node_modules\@nomicfoundation\ignition-core\src\internal\execution\future-processor\handlers\send-transaction.ts:86:18)
    at FutureProcessor.processFuture (C:\Users\HP\OneDrive\Desktop\sample\node_modules\@nomidules\@nomicfoundation\ignition-core\src\internal\execution\execution-engine.ts:153:30)     
    at ExecutionEngine.executeModule (C:\Users\HP\OneDrive\Desktop\sample\node_modules\@nomicfoundation\ignition-core\src\internal\execution\execution-engine.ts:114:25)
    at Deployer.deploy (C:\Users\HP\OneDrive\Desktop\sample\node_modules\@nomicfoundation\ignition-core\src\internal\deployer.ts:194:25)
    at SimpleTaskDefinition.action (C:\Users\HP\OneDrive\Desktop\sample\node_modules\@nomicfoundation\hardhat-ignition\src\index.ts:302:24)
    at Environment._runTaskDefinition (C:\Users\HP\OneDrive\Desktop\sample\node_modules\hardhat\src\internal\core\runtime-environment.ts:359:14)

我可以使用sepolia测试网上已经编写的脚本来部署hardhat的核心合约。

deployment hardhat ignition
2个回答
0
投票

我面临着同样的错误。就我而言,我的私钥不正确。


0
投票

错误

IgnitionError: IGN1: Internal Hardhat Ignition invariant was violated: Expected failed simulation after having failed to estimate gas

意味着你没有足够的以太坊作为gas来部署智能合约。有关更多详细信息,请参阅https://github.com/NomicFoundation/hardhat-ignition/issues/750。我需要 0.6 ETH 来部署合约,但我认为我不需要那么多,所以这就是问题所在。

© www.soinside.com 2019 - 2024. All rights reserved.