发送交易失败

时间:2018-01-29 10:21:44

标签: ethereum

我正在使用web3.js v1.0,其中包含Ganache v1.1.0的可靠性^ 0.4.17。我正在尝试调用发送事务,但它失败并显示以下错误消息。

  

返回错误:错误:错误:[ethjs-query]格式化输出时   来自RPC' undefined'方法' sendRawTransaction'错误:   [ethjs-format]十六进制字符串' undefined'必须是字母数字66 utf8   字节十六进制(字符:a-fA-F)字符串,为0字节

MyContract.sol

  function createStarCard(string name, uint price) public {
    require(msg.sender == owner);

    uint starCardId = starCards.push(StarCard(name, price));
    starCardIdToOwner[starCardId] = owner;
  }

App.js

  createStarCard = ({ name, price }) => {
    window.web3.eth.getAccounts().then((accounts) => {
      this.state.ContractInstance.methods.createStarCard(name, price).send({
        from: accounts[0],
        gas: 300000,
      }).then((receipt) => {
        console.log(receipt)
      }).catch((err) => {
        console.log(err.message) <-- Caught error message
      })
    })
  }

带有错误消息的Google搜索结果向我指出了以下问题,但它们对我的案例没有帮助:

更新:分享我的App.js构造函数

  constructor(props) {
    super(props)

    if (typeof window.web3 !== 'undefined') {
      this.web3Provider = window.web3.currentProvider;
    } else {
      console.log("Use Ganache web3")
      this.web3Provider = new Web3.providers.HttpProvider('http://localhost:7545');
    }

    window.web3 = new Web3(this.web3Provider);

    const contractAddress = "0x1bdaf0cd259887258bc13a92c0a6da92698644c0"
    const ContractInstance = new window.web3.eth.Contract(Abi, contractAddress);

    this.state = {
      ContractInstance,
    }
  }

2 个答案:

答案 0 :(得分:1)

看起来问题出在Ganache mac app上。我通过使用ganache-cli来解决这个问题。

答案 1 :(得分:0)

我通过重新安装Metamask解决了这个问题。