|
|
|
@ -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, () => { |
|
|
|
|