aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Finlay <dan@danfinlay.com>2016-10-18 03:47:37 +0800
committerDan Finlay <dan@danfinlay.com>2016-10-18 03:47:37 +0800
commit91f43fa2130e84a32ebecf902696a0b897cdd095 (patch)
treeb68ae90f5aef6c1b0cbc612be57df7a12edce40c
parent101e839f9a254891d9c32a6b4660252506ead04c (diff)
downloadtangerine-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.md2
-rw-r--r--app/scripts/lib/idStore.js10
-rw-r--r--test/unit/idStore-test.js17
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.')
+ })
})