I have been researching this whole day, but I have a web3 instance, (the Web3 is version 1.0.0)
const web3 = new Web3(new Web3.providers.HttpProvider('https://ropsten.infura.io/<myKey>'));
Later I used it to sign a transaction (which is a call to a contract). I have
const contract = new web3.eth.Contract(abiArray, contractAddr);
var func = contract.methods.myMethod('foo', 'bar')
var encodedFunc = func.encodeABI();
var tx = {
from: ownerWallet,
to: contractAddr,
gas: web3.utils.toHex(1000000), //1m, also tried string '1000000'
gasPrice: web3.utils.toHex(20000000000), //20gwei, also tried string '20000000000'
data: encodedFunc
}
//might just be unnecessary three lines
const account = web3.eth.accounts.privateKeyToAccount(ownerPrivate)
console.log(account)
web3.eth.getBalance(ownerWallet).then(console.log)
const signed = await web3.eth.accounts.signTransaction(tx, ownerPrivate)
var trans = web3.eth.sendSignedTransaction(signed.rawTransaction)
Error is like,
Error: Returned error: insufficient funds for gas * price + value
Everything seems quite normal. What could be the issue?