Search code examples
soliditytransferether

Solidity 'out of gas' exception when trying to transfer Ether


I try to transfer Ether from the contract to an address but it gives the error that the transaction is out of gas. I think it's a small problem but I can't find it. I have to specifically use solidity version 0.4.24.

The warning from Remix

The error from MetaMask

I have tried different methods, like:

address.transfer(amount);
address.send(amount);
address.call.value(amount)( );

All methods will give the same out of gas exception. and the send and call method will also give a warning that it's outdated and that I should use the transfer method.

I also tried to adjust the gas and it didn't work, I also tried the needed 2,300 for the transfer listed on the docs.

The code:

pragma solidity ^0.4.24;

contract TestContract {        
    function payAddress(address _address) external payable {
         _address.transfer(msg.value);
    }
}

If the problem is that the contract doesn't have any Ether to transfer, can it use the Ether I send with the function call? Or is the problem something else?

Thank you for reading.

edit:

I have tried to send Ether to my Contract and that works, I do have Ether on my contract now, but the function still gives the same error as before. So the problem is something else.

Current code:

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;
   }

}

The balance of the contract

The parameters I use

Same MetaMask error as before

As you can see here the balance of the contract is 10 wei, but when i try to send 9 wei it still gives the same out of gas error. I also still get the same error from Remix as before.


Solution

  • I also post the issue on the Stack exchange and got an answer there. The issue was my Ganache version. I switched to the Robsten test network and it worked. I'll link the post here.