我试着把以太从合同转到一个地址,但是它给出了一个错误,那就是交易已经用完了。我想这是个小问题,但我找不到。我必须特别使用SolityVersion0.4.24。
我尝试过不同的方法,比如:
address.transfer(amount);
address.send(amount);
address.call.value(amount)( );所有的方法都会给出同样的气体例外。而发送和调用方法也会给出一个警告,它已经过时,我应该使用传输方法。
我也试图调整气体,但它没有工作,我也尝试了所需的2,300的转让名单上的文档。
守则:
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;
}
}有人知道这里有什么问题吗?
感谢您的阅读。
发布于 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中工作的合同,以表明问题可能是客户端的,即您是如何形成请求并发送请求的。

希望能帮上忙。
https://ethereum.stackexchange.com/questions/65234
复制相似问题