Metamask chrome扩展程序出错。我该如何解决?

时间:2018-01-14 10:40:28

标签: truffle web3js web3 metamask

我从metamask收到此错误。

enter image description here

几个小时前工作很好。我已经尝试重新安装/禁用并重新启用,但没有任何工作。

另外, 我的智能合约功能齐全(在基于混音浏览器的IDE 中测试),并且在任何地方都不存在其他错误或日志。我也重新启动Ganache并重新编译并重新迁移我的合同,但没有运气。

这是我的可靠性代码:

pragma solidity ^0.4.18;

contract Voting {
    address mainAddress;
    bytes32[] candidateNames;
    mapping(bytes32 => uint) candidateVotes;
    mapping(bytes32 => bytes32) candidatesDetails;

    function Voting() public {
        mainAddress = msg.sender;
    }

    modifier isMainAddress {
        if (msg.sender == mainAddress) {
            _;
        }
    }

    function getAllCandidates() public view returns (bytes32[]) {
        return candidateNames;
    }

    function setCandidate(bytes32 newCandidate) isMainAddress public {
        candidateNames.push(newCandidate);
    }

    function setVote(bytes32 candidate) public {
        candidateVotes[candidate] = candidateVotes[candidate] + 1;
    }

    function getVote(bytes32 candidate) public view returns (uint) {
        return candidateVotes[candidate];
    }

    function setDescrption(bytes32 candidateName, bytes32 candidatesDesc) isMainAddress public {
        candidatesDetails[candidateName] = candidatesDesc;
    }

    function getDescription(bytes32 candidateName) public view returns (bytes32){
        return candidatesDetails[candidateName];
    }
}

我将这些功能称为:

let votingContractInstance;
    const contract = require('truffle-contract')
    const votingContract = contract(VotingContract)
    votingContract.setProvider(this.state.web3.currentProvider)
    this.state.web3.eth.getAccounts((error, accounts) => {
        votingContract.deployed().then((instance) => {
            votingContractInstance = instance
            return votingContractInstance.setVote(this.state.candidateName);
        }).then((result) => {
            this.setState(() => ({
                allCandidates: result
            }));
        })
    })
  

所有电话都是以这种方式发出的。

     

我正在使用其中一个松露盒(REACT box),控制台中也没有日志/错误。

1 个答案:

答案 0 :(得分:0)

Did you figure this out? Can you just call this.setState({ allcandidates: result })

Also, the result from setVote isn't anything because you don't have it return anything in the solc contract.