lessmore92/php-erc20

Always insufficient funds for gas * price + value

805807581 opened this issue · 6 comments

$owner_private = '0x922b775cef0410717c28e0b04c23ffa5a0e2*********';
$owner_address = '0x9118cc4212dCC83dca639de28FC0D47AfdE4C45F';

$token = new Token("0xdac17f958d2ee523a2206206994597c13d831ec7","https://mainnet.infura.io/v3/d5cd9b58d5ca43409486******");
//by this method we allow $myapp_address to send upto 99999 token behalf of $owner_address
$approve_tx = $token->approve($owner_address, "0x4E0E4CbdfBaB08e65F5ECAb25bEAA*******", 9999);
$approve_tx_id = $approve_tx->sign($owner_private)->send();

Hello author, I have a problem!
It keeps prompting insufficient funds for gas
But there is enough ETH in the account
can you help me

Hi,
You can set custom parameters for gasPrice and gasLimit as 4th and 5th parameters.

Have a look at the approve method definition:

approve(string $ownerAddress, string $spenderAddress, string $amount, string $gasLimit = 'default', string $gasPrice = 'default')

Did your problem solve?

$token = new USDT("https://mainnet.infura.io/v3/8038c7c7********");

$owner_address = '0x1d64720e43342bdd0E824e1dadEF';
$myapp_private = '0xbf15a4a052a3b59c1a5598
8e8a1e35056fbfacf94ce';
$myapp_address = '0x907Dc5716029B907BfFB223f0A*******';
$to_address = '0x907Dc5716029B907BfFB2*******';

$transfer_tx = $token->transferFrom($myapp_address, $owner_address, $to_address, 1);
$transfer_tx_id = $transfer_tx->sign($myapp_private)->send();

How to solve this please?

Uncaught RuntimeException: insufficient funds for gas * price + value

insufficient funds for gas * price + value

This error usually happens, when the gas price and gas limit parameters value are wrong; in this library, there is a default value for those, But based on time and network (ETH network) gas price needs to be adjusted. Also gas limit is different for various methods.

You can search and learn more about gas price and gas limit, then in all methods of this library, you can set the correct value for these.

hi ,
// transferFrom

   public function transferFrom(string $spender, string $from, string $to, string $amount, string $gasLimit = 'default', string $gasPrice = 'default',string $nonce = '')
  {

    $amount = Number::scaleUp($amount, $this->decimals());
    $data   = $this->buildTransferFromData($from, $to, $amount);
    if(empty($nonce)){
        $nonce  = Number::toHex($this->getEth()
            ->getTransactionCount($spender, 'pending'));
    }

    if (strtolower($gasLimit) === 'default')
    {
        $gasLimit = $this->getGasLimit('transferFrom');
    }
    if (strtolower($gasPrice) === 'default')
    {
        $gasPrice = $this->getSafeGasPrice();
    }

    return (new TransactionBuilder())
        ->setEth($this->getEth())
        ->to($this->contractAddress)
        ->nonce($nonce)
        ->gasPrice("200000000000")
        ->gasLimit("100000")
        ->data($data)
        ->amount(0)
        ->build()
        ;


}

i have setting gasPrice、gasLimit like that, but it cant work . The responce is :
{
"jsonrpc": "2.0",
"id": 724889050,
"error": {
"code": -32000,
"message": "insufficient funds for gas * price + value"
}
}

please , how to fix it ? thanks

@jucci1887 Does the spender wallet have enough balance to pay the transaction fee?