diff options
author | Kevin Serrano <kevgagser@gmail.com> | 2017-03-30 21:25:28 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-30 21:25:28 +0800 |
commit | 9a6b84644ab459ed113596f034350768e30ad06b (patch) | |
tree | 69a1973484067fc00f89a20c6877a1f03b620068 | |
parent | 467035075e0f8fdd0cf66dd668ad619cafc2105a (diff) | |
parent | 16b5f4a210cd496b9160efbfa5e2cc44ae0c8f5c (diff) | |
download | tangerine-wallet-browser-9a6b84644ab459ed113596f034350768e30ad06b.tar tangerine-wallet-browser-9a6b84644ab459ed113596f034350768e30ad06b.tar.gz tangerine-wallet-browser-9a6b84644ab459ed113596f034350768e30ad06b.tar.bz2 tangerine-wallet-browser-9a6b84644ab459ed113596f034350768e30ad06b.tar.lz tangerine-wallet-browser-9a6b84644ab459ed113596f034350768e30ad06b.tar.xz tangerine-wallet-browser-9a6b84644ab459ed113596f034350768e30ad06b.tar.zst tangerine-wallet-browser-9a6b84644ab459ed113596f034350768e30ad06b.zip |
Merge pull request #1293 from MetaMask/ImproveGasEstimates
tx-utils - gas buffer ceiling at 90% of block gas limit
-rw-r--r-- | app/scripts/lib/tx-utils.js | 7 | ||||
-rw-r--r-- | test/unit/tx-utils-test.js | 28 |
2 files changed, 21 insertions, 14 deletions
diff --git a/app/scripts/lib/tx-utils.js b/app/scripts/lib/tx-utils.js index 72df53631..e8e23f8b5 100644 --- a/app/scripts/lib/tx-utils.js +++ b/app/scripts/lib/tx-utils.js @@ -63,14 +63,15 @@ module.exports = class txProviderUtils { addGasBuffer (initialGasLimitHex, blockGasLimitHex) { const initialGasLimitBn = hexToBn(initialGasLimitHex) const blockGasLimitBn = hexToBn(blockGasLimitHex) + const upperGasLimitBn = blockGasLimitBn.muln(0.9) const bufferedGasLimitBn = initialGasLimitBn.muln(1.5) // if initialGasLimit is above blockGasLimit, dont modify it - if (initialGasLimitBn.gt(blockGasLimitBn)) return bnToHex(initialGasLimitBn) + if (initialGasLimitBn.gt(upperGasLimitBn)) return bnToHex(initialGasLimitBn) // if bufferedGasLimit is below blockGasLimit, use bufferedGasLimit - if (bufferedGasLimitBn.lt(blockGasLimitBn)) return bnToHex(bufferedGasLimitBn) + if (bufferedGasLimitBn.lt(upperGasLimitBn)) return bnToHex(bufferedGasLimitBn) // otherwise use blockGasLimit - return bnToHex(blockGasLimitBn) + return bnToHex(upperGasLimitBn) } fillInTxParams (txParams, cb) { diff --git a/test/unit/tx-utils-test.js b/test/unit/tx-utils-test.js index e57b25e83..8b4d2f059 100644 --- a/test/unit/tx-utils-test.js +++ b/test/unit/tx-utils-test.js @@ -14,8 +14,8 @@ describe('txUtils', function() { describe('addGasBuffer', function() { it('multiplies by 1.5, when within block gas limit', function() { - // naive estimatedGas: 0x123fad (~1.2 mil) - const inputHex = '0x123fad' + // naive estimatedGas: 0x16e360 (1.5 mil) + const inputHex = '0x16e360' // dummy gas limit: 0x3d4c52 (4 mil) const blockGasLimitHex = '0x3d4c52' const output = txUtils.addGasBuffer(inputHex, blockGasLimitHex) @@ -26,8 +26,8 @@ describe('txUtils', function() { }) it('uses original estimatedGas, when above block gas limit', function() { - // naive estimatedGas: 0x123fad (~1.2 mil) - const inputHex = '0x123fad' + // naive estimatedGas: 0x16e360 (1.5 mil) + const inputHex = '0x16e360' // dummy gas limit: 0x0f4240 (1 mil) const blockGasLimitHex = '0x0f4240' const output = txUtils.addGasBuffer(inputHex, blockGasLimitHex) @@ -37,16 +37,18 @@ describe('txUtils', function() { assert(outputBn.eq(expectedBn), 'returns the original estimatedGas value') }) - it('buffers up to block gas limit', function() { - // naive estimatedGas: 0x123fad (~1.2 mil) - const inputHex = '0x1e8480' + it('buffers up to reccomend gas limit reccomended ceiling', function() { + // naive estimatedGas: 0x16e360 (1.5 mil) + const inputHex = '0x16e360' // dummy gas limit: 0x1e8480 (2 mil) const blockGasLimitHex = '0x1e8480' + const blockGasLimitBn = hexToBn(blockGasLimitHex) + const ceilGasLimitBn = blockGasLimitBn.muln(0.9) const output = txUtils.addGasBuffer(inputHex, blockGasLimitHex) - const inputBn = hexToBn(inputHex) - const outputBn = hexToBn(output) - const expectedBn = hexToBn(blockGasLimitHex) - assert(outputBn.eq(expectedBn), 'returns the block gas limit value') + // const inputBn = hexToBn(inputHex) + // const outputBn = hexToBn(output) + const expectedHex = bnToHex(ceilGasLimitBn) + assert.equal(output, expectedHex, 'returns the gas limit reccomended ceiling value') }) }) }) @@ -55,4 +57,8 @@ describe('txUtils', function() { function hexToBn(inputHex) { return new BN(ethUtil.stripHexPrefix(inputHex), 16) +} + +function bnToHex(inputBn) { + return ethUtil.addHexPrefix(inputBn.toString(16)) }
\ No newline at end of file |