pass gasPrice or maxFeePerGas to estimate gas

pull/5370/head
yann300 2 years ago committed by Aniket
parent 088e1aa088
commit 1045aff019
  1. 1
      libs/remix-lib/src/execution/txRunner.ts
  2. 23
      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,16 +102,27 @@ 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) => { this._api.detectNetwork((errNetWork, network) => {
if (errNetWork) { if (errNetWork) {
console.log(errNetWork) console.log(errNetWork)
return 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" err = network.name === 'VM' ? null : err // just send the tx if "VM"
gasEstimationForceSend(err, () => { gasEstimationForceSend(err, () => {
// callback is called whenever no error // callback is called whenever no error

Loading…
Cancel
Save