【发布时间】: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