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, gasLimit: number,
useCall: boolean, useCall: boolean,
timestamp?: number timestamp?: number
type: '0x1' | '0x2'
} }
export class TxRunner { export class TxRunner {

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

Loading…
Cancel
Save