Use more accurate gas estimates for very high message gas limits (#611)

This commit is contained in:
Kirill Fedoseev 2021-10-07 20:44:14 +03:00 committed by GitHub
parent bd21cc163e
commit d543dbb339
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 4 additions and 3 deletions

@ -15,7 +15,7 @@ async function estimateGas({ web3, homeBridge, validatorContract, message, addre
const gasEstimate = await homeBridge.methods.executeAffirmation(message).estimateGas({
from: address
})
const msgGasLimit = parseAMBHeader(message).gasLimit
const msgGasLimit = Math.ceil((parseAMBHeader(message).gasLimit * 64) / 63)
// message length in bytes
const len = strip0x(message).length / 2 - MIN_AMB_HEADER_LENGTH

@ -24,7 +24,8 @@ async function estimateGas({
// message length in bytes
const len = strip0x(result).length / 2
const callbackGasLimit = parseInt(await homeBridge.methods.maxGasPerTx().call(), 10)
let callbackGasLimit = parseInt(await homeBridge.methods.maxGasPerTx().call(), 10)
callbackGasLimit = Math.ceil((callbackGasLimit * 64) / 63)
return gasEstimate + callbackGasLimit + estimateExtraGas(len)
} catch (e) {

@ -1,6 +1,6 @@
module.exports = {
EXTRA_GAS_PERCENTAGE: 4,
EXTRA_GAS_ABSOLUTE: 200000,
EXTRA_GAS_ABSOLUTE: 250000,
AMB_AFFIRMATION_REQUEST_EXTRA_GAS_ESTIMATOR: len => Math.floor(0.0035 * len ** 2 + 40 * len),
MIN_AMB_HEADER_LENGTH: 32 + 20 + 20 + 4 + 2 + 1 + 2,
MAX_GAS_LIMIT: 10000000,