pass gasPrice or maxFeePerGas to estimate gas

pull/3577/head
yann300 2 years ago committed by Aniket
parent 59543394e6
commit da6ba36993
  1. 1
      libs/remix-lib/src/execution/txRunner.ts
  2. 29
      libs/remix-lib/src/execution/txRunnerWeb3.ts

@ -9,6 +9,7 @@ export type Transaction = {
gasLimit: number,
useCall: boolean,
timestamp?: number
type: '0x1' | '0x2'
}
export class TxRunner {

@ -90,7 +90,7 @@ export class TxRunnerWeb3 {
}
runInNode (from, to, data, value, gasLimit, useCall, timestamp, confirmCb, gasEstimationForceSend, promptCb, callback) {
const tx = { from: from, to: to, data: data, value: value }
const tx = { from: from, to: to, data: data, value: value, type: null, maxFeePerGas: null, gasPrice: null }
if (!from) return callback('the value of "from" is not defined. Please make sure an account is selected.')
if (useCall) {
tx['gas'] = gasLimit
@ -102,15 +102,26 @@ export class TxRunnerWeb3 {
})
})
}
this.getWeb3().eth.estimateGas(tx, (err, gasEstimation) => {
if (err && err.message.indexOf('Invalid JSON RPC response') !== -1) {
// // @todo(#378) this should be removed when https://github.com/WalletConnect/walletconnect-monorepo/issues/334 is fixed
callback(new Error('Gas estimation failed because of an unknown internal error. This may indicated that the transaction will fail.'))
this._api.detectNetwork((errNetWork, network) => {
if (errNetWork) {
console.log(errNetWork)
return
}
this._api.detectNetwork((errNetWork, network) => {
if (errNetWork) {
console.log(errNetWork)
return
if (network && network.lastBlock) {
if (network.lastBlock.baseFeePerGas) {
// the sending stack (web3.js / metamask need to have the type defined)
// this is to avoid the following issue: https://github.com/MetaMask/metamask-extension/issues/11824
tx.type = '0x2'
tx.maxFeePerGas = network.lastBlock.baseFeePerGas + 1 // + priority fee
} else {
tx.type = '0x1'
tx.gasPrice = network.lastBlock.baseFeePerGas
}
}
this.getWeb3().eth.estimateGas(tx, (err, gasEstimation) => {
if (err && err.message.indexOf('Invalid JSON RPC response') !== -1) {
// // @todo(#378) this should be removed when https://github.com/WalletConnect/walletconnect-monorepo/issues/334 is fixed
callback(new Error('Gas estimation failed because of an unknown internal error. This may indicated that the transaction will fail.'))
}
err = network.name === 'VM' ? null : err // just send the tx if "VM"
gasEstimationForceSend(err, () => {

Loading…
Cancel
Save