【问题标题】:Simple Transfer Not Working In Injected Web3简单传输在注入的 Web3 中不起作用
【发布时间】:2018-10-21 10:42:20
【问题描述】:

我有一个非常简单的 solidity 函数,仅用于将一些以太币从一个地址转移到另一个地址

function transferEtherTo(address _to) payable public {
    _to.transfer(address(this).balance);
}

在混音中,当我只是在 Javascript VM 上时,它可以正常工作

但是当我切换到注入的 web3 时,我遇到了一些意想不到的错误。

一方面,我的元掩码显示像以太币将发送到合同的地址,而不是我试图将其发送到的地址,加上元掩码中的值由于某种原因在我试图发送总合同时为 0我确定的余额是 5 以太币。

这是我的控制台中记录的内容:

向 SimpleDapp.transferEtherTo 交易错误:错误:错误: [ethjs-rpc] 有效载荷的 rpc 错误 { “ID”:41874278090, “jsonrpc”: “2.0”, “PARAMS”:[ “0xf88a2b8501a13b860082786c9459a42535f42048040c3f5a1152c94af40c7169db80a45c4bade1000000000000000000000000c5fdf4076b8f3a5357c5e395ab970b5b54098fef822d46a09f632a5dbe56be62a9c245f23fa62d9fd8aee230bbda026c6d5822339d2bf9b3a01b4a248bca87bcb491f6f11a572bf158ba86459336e5b1b7eb91f1dda5fde87d”], “方法”: “eth_sendRawTransaction”} 错误:处理事务时出现 VM 异常:气体不足

知道为什么这在 JavacsriptVM 中可以正常工作,而不是在注入的 web 3 中吗?

【问题讨论】:

  • 我最近不得不做一些类似的事情。注入 web3 需要做几件独特的事情。能贴出注入和设置web3的代码吗?
  • 所以这个^示例只是在混音中。我正在使用元掩码中的私钥导入两个 ganache 帐户
  • 但是我在真正的 DAPP 中遇到了类似的问题,这就是我在那里使用的。 initWeb3: function() { if (typeof web3 !== 'undefined') { App.web3Provider = web3.currentProvider; console.log("using existing provider"); } else { App.web3Provider = new Web3.providers.HttpProvder('http://127.0.0.1:7545'); console.log("connecting to local Ganache"); } web3 = new Web3(App.web3Provider); console.log("web3 initialized"); return App.initContract(); }
  • 在 Remix 中运行它时的 gas 使用量是多少,它是否高于 MetaMask 在 UI 中提供的估计值?在提交 tx 之前,您是否尝试过手动增加 MM 中的 gas 限制?
  • 在混音中运行是指使用 JavascriptVM 吗?如果是这样,我做到了,它在那里工作得很好。而且我不确定我在哪里可以找到估计的汽油价格。但是在我的元掩码中,我看到我尝试调用的每个函数的 Gas Price 是 7 GWEI。不,我根本没有触及 Gas Limit。

标签: javascript ethereum solidity web3 remix


【解决方案1】:

我认为您不需要执行 address(this).balance -- 只需执行 this.balance

【讨论】:

  • 我在发布之前尝试过。 this.balance 也不工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 2018-04-01
  • 2015-03-16
  • 2016-02-10
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
相关资源
最近更新 更多