首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当试图转移以太时,固体“脱离气体”的例外

当试图转移以太时,固体“脱离气体”的例外
EN

Ethereum用户
提问于 2019-01-08 16:55:07
回答 1查看 1.2K关注 0票数 2

我试着把以太从合同转到一个地址,但是它给出了一个错误,那就是交易已经用完了。我想这是个小问题,但我找不到。我必须特别使用SolityVersion0.4.24。

来自Remix的警告

合同的余额

我使用的参数

来自元掩模的错误

我尝试过不同的方法,比如:

代码语言:javascript
复制
address.transfer(amount);
address.send(amount);
address.call.value(amount)( );

所有的方法都会给出同样的气体例外。而发送和调用方法也会给出一个警告,它已经过时,我应该使用传输方法。

我也试图调整气体,但它没有工作,我也尝试了所需的2,300的转让名单上的文档

守则:

代码语言:javascript
复制
pragma solidity 0.4.24;

contract TestContract {

    function() external payable { }

    function payContract() public payable {}

    function paySomeone(address _address, uint256 _amount) external {
         _address.transfer(_amount);
    }

    function getBalance() public view returns (uint256) {
         return address(this).balance;
   }

}

有人知道这里有什么问题吗?

感谢您的阅读。

EN

回答 1

Ethereum用户

回答已采纳

发布于 2019-01-08 17:28:16

不知道你指的是什么

我必须特别使用SolityVersion0.4.24

假设情况如此(如政策).

首先,将^0.4.24更改为不带^0.4.24,以确认您没有使用0.5.x进行编译,这将需要将关键字payable添加到地址声明中。

第二,确认合同有资金可寄。转帐是从合同本身的余额中提取的,因此,如果所要求的金额超过了手头的资金,操作就会失败。您的getBalance()函数显示当前余额。它最初将为零,因此您必须发送一些以太到契约,以便设置测试场景。

第三,确认支持块链实现与Solidity 0.4.24兼容。“支持”可以是ganache,一个带有geth的专用网络或一个公共测试网。在任何情况下,EVM版本都是网络的一个属性,您需要一个后Byzantium来运行由于接口规范的更改而用0.4.24编译的代码。错配会引起这种麻烦。

希望能帮上忙。

更新(以下评论):

您的合同很好,所以接下来我将专注于测试方法。

你需要2300多个汽油。发送更多,以涵盖其余的操作(发送自己的2300天然气接收器,津贴,但这不是整个财政预算)。

在我的测试中,费用是22,000股汽油。

你通常不需要指定气体,但estimateGas()并不是100%。考虑指定10万种气体排除这种可能性。

下面是在Remix中工作的合同,以表明问题可能是客户端的,即您是如何形成请求并发送请求的。

希望能帮上忙。

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/65234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档