diff options
author | Dan Finlay <dan@danfinlay.com> | 2016-10-18 03:47:37 +0800 |
---|---|---|
committer | Dan Finlay <dan@danfinlay.com> | 2016-10-18 03:47:37 +0800 |
commit | 91f43fa2130e84a32ebecf902696a0b897cdd095 (patch) | |
tree | b68ae90f5aef6c1b0cbc612be57df7a12edce40c | |
parent | 101e839f9a254891d9c32a6b4660252506ead04c (diff) | |
download | tangerine-wallet-browser-91f43fa2130e84a32ebecf902696a0b897cdd095.tar tangerine-wallet-browser-91f43fa2130e84a32ebecf902696a0b897cdd095.tar.gz tangerine-wallet-browser-91f43fa2130e84a32ebecf902696a0b897cdd095.tar.bz2 tangerine-wallet-browser-91f43fa2130e84a32ebecf902696a0b897cdd095.tar.lz tangerine-wallet-browser-91f43fa2130e84a32ebecf902696a0b897cdd095.tar.xz tangerine-wallet-browser-91f43fa2130e84a32ebecf902696a0b897cdd095.tar.zst tangerine-wallet-browser-91f43fa2130e84a32ebecf902696a0b897cdd095.zip |
Increase gas estimate by 100000 wei
To prevent minor gas estimation errors, probably usually related to operating on dynamic state.
Fixes #738.
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | app/scripts/lib/idStore.js | 10 | ||||
-rw-r--r-- | test/unit/idStore-test.js | 17 |
3 files changed, 28 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d88cf70d..4f6e82e94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Current Master +- Increase default max gas to `100000` over the RPC's `estimateGas` response. + ## 2.13.4 2016-10-17 - Add custom transaction fee field to send form. diff --git a/app/scripts/lib/idStore.js b/app/scripts/lib/idStore.js index aa77c3360..9846c84f0 100644 --- a/app/scripts/lib/idStore.js +++ b/app/scripts/lib/idStore.js @@ -2,6 +2,7 @@ const EventEmitter = require('events').EventEmitter const inherits = require('util').inherits const async = require('async') const ethUtil = require('ethereumjs-util') +const BN = ethUtil.BN const EthQuery = require('eth-query') const KeyStore = require('eth-lightwallet').keystore const clone = require('clone') @@ -266,7 +267,7 @@ IdentityStore.prototype.addUnconfirmedTransaction = function (txParams, onTxDone function estimateGas(cb){ query.estimateGas(txParams, function(err, result){ if (err) return cb(err) - txData.estimatedGas = result + txData.estimatedGas = self.addGasBuffer(result) cb() }) } @@ -281,6 +282,13 @@ IdentityStore.prototype.addUnconfirmedTransaction = function (txParams, onTxDone } } +IdentityStore.prototype.addGasBuffer = function (gasHex) { + var gas = new BN(gasHex, 16) + var buffer = new BN('100000', 10) + var result = gas.add(buffer) + return result.toString(16) +} + // comes from metamask ui IdentityStore.prototype.approveTransaction = function (txId, cb) { const configManager = this.configManager diff --git a/test/unit/idStore-test.js b/test/unit/idStore-test.js index 31da2cd3d..7f6324645 100644 --- a/test/unit/idStore-test.js +++ b/test/unit/idStore-test.js @@ -2,6 +2,7 @@ var assert = require('assert') var IdentityStore = require('../../app/scripts/lib/idStore') var configManagerGen = require('../lib/mock-config-manager') const ethUtil = require('ethereumjs-util') +const BN = ethUtil.BN const async = require('async') describe('IdentityStore', function() { @@ -138,4 +139,20 @@ describe('IdentityStore', function() { }) }) }) + + describe('#addGasBuffer', function() { + const idStore = new IdentityStore({ + configManager: configManagerGen(), + ethStore: { + addAccount(acct) { accounts.push(ethUtil.addHexPrefix(acct)) }, + }, + }) + + const gas = '0x01' + const bnGas = new BN(gas, 16) + const result = idStore.addGasBuffer(gas) + const bnResult = new BN(result, 16) + + assert.ok(bnResult.gt(gas), 'added more gas as buffer.') + }) }) |