matty
matty

Reputation: 3

Ethers.js sending a transaction to a smart contract gives 'intrinsic gas too low'

I'm fairly new to blockchain and I'm struggling with sending a transaction to a smart contract - I'm getting intrinsic gas too low error. I've tried searching online for a solution but just couldn't solve it.

From https://stackoverflow.com/a/71261434/20453413 I understand that I need to 'allocate more gas by setting a higher gasLimit', okey, but by how much? Am I calculating gasPrice correctly?

I've deployed my contract to a goerli testnet and I'm using Infura as a provider to the blockchain.

    let baseNonce = await provider.getTransactionCount(wallet.getAddress());
    const gasPrice = await provider.getGasPrice()

    const tx = await someContract.populateTransaction.setFoo('hello');
    tx.nonce = baseNonce + 1
    tx.value = ethers.utils.parseUnits('0.001', 'ether')
    tx.gasPrice = gasPrice

    await wallet.signTransaction(tx).then(signedTransaction => {
      provider.sendTransaction(signedTransaction).then(transactionResponse => {
        console.log("Our transaction response: " + transactionResponse)
      })
    })

Upvotes: 0

Views: 1173

Answers (1)

Yilmaz
Yilmaz

Reputation: 49671

provider.getGasPrice() returns a BigNumber object. Something like this { BigNumber: "21971214174" }

But you need to convert this BigNumber to a string. BigNumber object has a toString() to method. you can check the docs

 tx.gasPrice = gasPrice.toString()

Upvotes: 0

Related Questions