From 91f43fa2130e84a32ebecf902696a0b897cdd095 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Mon, 17 Oct 2016 12:47:37 -0700 Subject: [PATCH 1/2] Increase gas estimate by 100000 wei To prevent minor gas estimation errors, probably usually related to operating on dynamic state. Fixes #738. --- CHANGELOG.md | 2 ++ app/scripts/lib/idStore.js | 10 +++++++++- test/unit/idStore-test.js | 17 +++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) 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.') + }) }) From 827d7553fc843a75b7a4306c7549505f799609d7 Mon Sep 17 00:00:00 2001 From: Dan Finlay Date: Mon, 17 Oct 2016 13:05:45 -0700 Subject: [PATCH 2/2] Restore hex prefix to gas price --- app/scripts/lib/idStore.js | 2 +- test/unit/idStore-test.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/scripts/lib/idStore.js b/app/scripts/lib/idStore.js index 9846c84f0..9d0ca7f19 100644 --- a/app/scripts/lib/idStore.js +++ b/app/scripts/lib/idStore.js @@ -286,7 +286,7 @@ 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) + return ethUtil.addHexPrefix(result.toString(16)) } // comes from metamask ui diff --git a/test/unit/idStore-test.js b/test/unit/idStore-test.js index 7f6324645..0a57d2121 100644 --- a/test/unit/idStore-test.js +++ b/test/unit/idStore-test.js @@ -154,5 +154,6 @@ describe('IdentityStore', function() { const bnResult = new BN(result, 16) assert.ok(bnResult.gt(gas), 'added more gas as buffer.') + assert.equal(result.indexOf('0x'), 0, 'include hex prefix') }) })