Chad Blanchard
Chad Blanchard

Reputation: 61

Ethereum Web3.js: Intrinsic Gas too low

I have been trying to send a transaction on the Ethereum testnet Rinkeby for the past few days and keep getting this error no matter how much I increase the gas to.

"Unhandled rejection Error: Returned error: intrinsic gas too low"

The data I am sending is:

"0x7b22416e7377657273223a5b7b225175657374696f6e223a2231222c22416e73776572223a2234227d2c7b225175657374696f6e223a2232222c22416e73776572223a2234227d2c7b225175657374696f6e223a2233222c22416e73776572223a2234227d2c7b225175657374696f6e223a2234222c22416e73776572223a2234227d2c7b225175657374696f6e223a2235222c22416e73776572223a2234227d2c7b225175657374696f6e223a2236222c22416e73776572223a2234227d5d7d"

after it has been converted to a Hex.

I have added my code below.

var number = web3.eth.getTransactionCount(address).then(function(count) {
  console.log("Count " + count);
  var privateKey = new EthJS.Buffer.Buffer(privateKey, 'hex');
  console.log(web3.utils.toHex(finalAnswers));
  var rawTx = {
    nonce: web3.utils.toHex(count),
    to: '0xF1aA87F7058e5ABE561cCe8A466eE1CC17d69639',
    value: 0,
    data: web3.utils.toHex(finalAnswers),
    gas: 50000,
    gasPrice: web3.utils.toWei('300', 'gwei')
  };

  var tx = new EthJS.Tx(rawTx);
  tx.sign(privateKey);

  var serializedTx = tx.serialize();


  web3.eth.sendSignedTransaction('0x' + serializedTx.toString('hex')).on('receipt', console.log);
});

Upvotes: 6

Views: 10723

Answers (2)

Jasperan
Jasperan

Reputation: 3688

The reason why you're getting this error is because gasPrice is higher than gasLimit. You need to allocate more gas by setting a higher gasLimit.

And as @AdamKipris suggested in the comments, you should use gasLimit: instead of gas: when building your transaction.

Upvotes: 2

Phạm Huy Phát
Phạm Huy Phát

Reputation: 1086

In my case, some of the methods has to bet set Gas Limit manually so I switch to a default gas limit for transaction. In pancakeswap reference, it is 20,000 units https://github.com/pancakeswap/pancake-frontend/blob/master/src/config/index.ts#L31 You might adapt the prop to gas though

And the code look like this:

const txReceipt = await callWithGasPrice(
                  wethContract,
                  "deposit",
                  undefined,
                  {
                    value: `0x${inputAmount.raw.toString(16)}`,
                    gasPrice,
                    gasLimit: DEFAULT_GAS_LIMIT,
                  }
                );

Upvotes: 0

Related Questions