Why fee of web3.eth.estimateGas is different from Metamask?

2k Views Asked by At

I used web3.eth.estimateGas to calculate the fee for a transaction with data. My code below:

var web3 = new Web3('https://bsc-dataseed1.binance.org:443');

var esGas;
web3.eth.estimateGas({
     "from"      : 'my address',       
     "nonce"     : 1, 
     "to"        : 'contract address',     
     "data"      : 'data'
}).then((result) => {
esGas = result; // always 81332 but Metamask is 89465
});
var gasPrice;

web3.eth.getGasPrice(function(e, r){
   gasPrice = r; // always 5 GWei like Metamask
});

With command below, the result is always 0.00040666 while with same 'data'

But I used Metamask, its result is always Max amount: 0.00044732 BNB

web3.utils.fromWei(gasPrice.toString(), 'ether') * esGas; // 0.00040666

Can anyone help me explain? And how to calculate like Metamask? Or my calculation is safe to send?

Many thanks

0

There are 0 best solutions below