我尝试将以太币从合同转移到一个地址,但它给出了错误的提示,表明交易已不合时宜。我认为这是一个小问题,但我找不到。我必须专门使用Solidity版本0.4.24。
我尝试了不同的方法,例如:
address.transfer(amount);
address.send(amount);
address.call.value(amount)( );
所有方法都会给出相同的理由。并且send和call方法还会警告它已过时,我应该使用transfer方法。
我还尝试调整了油门,但没有成功,我还尝试了docs上列出的2300所需的调动。
代码:
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那里得到和以前一样的错误。