Я пытаюсь перевести Ether из контракта на адрес, но выдает ошибку, что транзакция исчерпана. Я думаю, что это небольшая проблема, но я не могу ее найти. Я должен специально использовать солидность версии 0.4.24.
Предупреждение от Remix
Ошибка от MetaMask
Я пробовал разные методы, например:
address.transfer(amount);
address.send(amount);
address.call.value(amount)( );
Все методы дают одинаковое исключение для газа. и метод отправки и вызова также выдаст предупреждение о том, что он устарел и что мне следует использовать метод передачи.
Я также пытался отрегулировать газ, и он не работал, я также пробовал необходимые 2300 для передачи, указанной в документах .
код:
pragma solidity ^0.4.24;
contract TestContract {
function payAddress(address _address) external payable {
_address.transfer(msg.value);
}
}
Если проблема в том, что в контракте нет эфира для передачи, может ли он использовать эфир, который я посылаю с вызовом функции? Или проблема в другом?
Спасибо, что прочитали.
редактирование:
Я пытался отправить Ether на мой Контракт, и это работает, у меня сейчас есть Ether на моем контракте, но функция все равно выдает ту же ошибку, что и раньше. Так что проблема в другом.
Текущий код:
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, как и раньше.