简单传输在注入的 Web3 中不起作用
Posted
技术标签:
【中文标题】简单传输在注入的 Web3 中不起作用【英文标题】:Simple Transfer Not Working In Injected 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。
【参考方案1】:
我认为您不需要执行 address(this).balance -- 只需执行 this.balance
【讨论】:
我在发布之前尝试过。this.balance
也不工作以上是关于简单传输在注入的 Web3 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Spring @Value 注入转换在 @SpringJUnitConfig 测试中不起作用
spring 依赖注入在使用 @WebListener 注释的类中不起作用
@Context 注入在 Jersey ContainerRequestFilter (Dropwizard) 中不起作用
NestJS CQRS:(存储库的)依赖注入在处理程序中不起作用
将 Gradle 属性注入 Spring Boot application.yml,在 IntelliJ IDEA 中不起作用