From 536cab0687b6eb652401859cb41ae90dd7a62c1f Mon Sep 17 00:00:00 2001 From: kumavis Date: Thu, 10 Nov 2016 21:19:34 -0800 Subject: [PATCH] detect tx error - show warning and fix gasLimit --- app/scripts/lib/idStore.js | 18 ++++++++++++++++-- ui/app/components/pending-tx.js | 9 +++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/app/scripts/lib/idStore.js b/app/scripts/lib/idStore.js index dd895a6c0..cd717df28 100644 --- a/app/scripts/lib/idStore.js +++ b/app/scripts/lib/idStore.js @@ -259,10 +259,24 @@ IdentityStore.prototype.addUnconfirmedTransaction = function (txParams, onTxDone } function estimateGas(cb){ - query.estimateGas(txParams, function(err, result){ + var estimationParams = extend(txParams) + // 1 billion gas for estimation + var gasLimit = '0x3b9aca00' + estimationParams.gas = gasLimit + query.estimateGas(estimationParams, function(err, result){ if (err) return cb(err) + if (result === estimationParams.gas) { + txData.simulationFails = true + query.getBlockByNumber('latest', true, function(err, block){ + if (err) return cb(err) + txData.estimatedGas = block.gasLimit + txData.txParams.gas = block.gasLimit + cb() + }) + return + } txData.estimatedGas = self.addGasBuffer(result) - txData.txParams.gasLimit = txData.estimatedGas + txData.txParams.gas = txData.estimatedGas cb() }) } diff --git a/ui/app/components/pending-tx.js b/ui/app/components/pending-tx.js index 4c27a8092..b619020d1 100644 --- a/ui/app/components/pending-tx.js +++ b/ui/app/components/pending-tx.js @@ -30,6 +30,15 @@ PendingTx.prototype.render = function () { } `), + txData.simulationFails ? + h('span.error', { + style: { + marginLeft: 50, + fontSize: '0.9em', + }, + }, 'Transaction Error. Exception thrown in contract code.') + : null, + state.insufficientBalance ? h('span.error', { style: {