我尝试将以太币从合约转移到一个地址,但它给出了交易已用完气体的错误。我认为这是一个小问题,但我找不到它。我必须专门使用solidity 0.4.24版本。
我尝试了不同的方法,例如:
address.transfer(amount);
address.send(amount);
address.call.value(amount)( );
所有方法都会给出相同的气体异常。并且 send 和 call 方法也会发出警告,指出它已过时,我应该使用 transfer 方法。
我还尝试调整气体,但没有奏效,我还尝试了docs上列出的转移所需的 2,300 。
编码:
pragma solidity ^0.4.24;
contract TestContract {
function payAddress(address _address) external payable {
_address.transfer(msg.value);
}
}
如果问题是合约没有任何以太币要转移,它可以使用我通过函数调用发送的以太币吗?或者问题是别的什么?
感谢您的阅读。
编辑:
我已经尝试将以太币发送到我的合约并且可行,我现在的合约上确实有以太币,但该函数仍然给出与以前相同的错误。所以问题是别的。
当前代码:
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;
}
}
正如你在这里看到的,合约的余额是 10 wei,但是当我尝试发送 9 wei 时,它仍然会给出同样的气体错误。我仍然从 Remix 中得到与以前相同的错误。