0

I have created a contract on remix.ethereum.org and started the Ganache(http://truffleframework.com/ganache/) as private blockchain. On the Remix I have configured Remix to work with Ganache through custom web3 provider which is my localhost.

It's a simple voting Dapp:

pragma solidity ^0.4.11;


contract VotingDapp {

  mapping (bytes32 => uint8) public votesReceived;

  bytes32[] public candidateList;

  function VotingDapp(bytes32[] candidateNames) public {
    // constructor
    candidateList = candidateNames;
  }

  function totalVotesFor(bytes32 candidate) public view returns (uint8) {
    if(validCandidate(candidate) == false) revert();
    return votesReceived[candidate];
  }

  function voteForCandidate(bytes32 candidate) public {
    if(validCandidate(candidate) == false) revert();
    votesReceived[candidate] += 1;
  }

  function validCandidate(bytes32 candidate) public view returns (bool) {
    for(uint i = 0; i < candidateList.length; i++){
      if(candidateList[i] == candidate){
        return true;
      }
    }
    return false;
  }

  function totalVotesReceived() external view returns(uint){
      uint sum = 0;
      for(uint i = 0; i < candidateList.length; i++){
          sum += votesReceived[candidateList[i]];
      }
      return sum;
  }

}

When I try to call function voteForCandidate I get this error from Remix :

Gas estimation failed Gas estimation errored with the following message (see below). The transaction execution will likely fail. Do you want to force sending? VM Exception while processing transaction: revert

When I try to force sending nothing happens.

Thanks

1

From a quick look at your code it looks like the only reason why voteForCandidate would revert would be if the candidate you're passing it isn't in your candidateList, so it fails the validCandidate test. Check the content of candidateList is what you expect, and check the parameter is being passed correctly into voteForCandidate().

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.