diff --git a/src/trace/traceAnalyser.js b/src/trace/traceAnalyser.js index b87850610b..66aefa2c51 100644 --- a/src/trace/traceAnalyser.js +++ b/src/trace/traceAnalyser.js @@ -90,7 +90,6 @@ TraceAnalyser.prototype.buildStorage = function (index, step, context) { } TraceAnalyser.prototype.buildDepth = function (index, step, tx, callStack, context) { - var outOfGas = runOutOfGas(step) if (traceHelper.isCallInstruction(step) && !traceHelper.isCallToPrecompiledContract(index, this.trace)) { var newAddress if (traceHelper.isCreateInstruction(step)) { @@ -111,10 +110,10 @@ TraceAnalyser.prototype.buildDepth = function (index, step, tx, callStack, conte this.traceCache.pushSteps(index, context.currentCallIndex) context.lastCallIndex = context.currentCallIndex context.currentCallIndex = 0 - } else if (traceHelper.isReturnInstruction(step) || traceHelper.isStopInstruction(step) || outOfGas || step.error || step.invalidDepthChange) { + } else if (traceHelper.isReturnInstruction(step) || traceHelper.isStopInstruction(step) || step.error || step.invalidDepthChange) { if (index < this.trace.length) { callStack.pop() - this.traceCache.pushCall(step, index + 1, null, callStack.slice(0), outOfGas || step.error || step.invalidDepthChange, outOfGas) + this.traceCache.pushCall(step, index + 1, null, callStack.slice(0), step.error || step.invalidDepthChange) this.buildCalldata(index, step, tx, false) this.traceCache.pushSteps(index, context.currentCallIndex) context.currentCallIndex = context.lastCallIndex + 1 @@ -126,8 +125,4 @@ TraceAnalyser.prototype.buildDepth = function (index, step, tx, callStack, conte return context } -function runOutOfGas (step) { - return parseInt(step.gas) - parseInt(step.gasCost) < 0 -} - module.exports = TraceAnalyser diff --git a/src/trace/traceCache.js b/src/trace/traceCache.js index 10482ea1e1..6ed047ce6a 100644 --- a/src/trace/traceCache.js +++ b/src/trace/traceCache.js @@ -33,12 +33,16 @@ TraceCache.prototype.pushMemoryChanges = function (value) { this.memoryChanges.push(value) } -TraceCache.prototype.pushCall = function (step, index, address, callStack, reverted, outOfGas) { - if (step.op === 'RETURN' || step.op === 'STOP' || reverted) { +// outOfGas has been removed because gas left logging is apparently made differently +// in the vm/geth/eth. TODO add the error property (with about the error in all clients) +TraceCache.prototype.pushCall = function (step, index, address, callStack, reverted) { + var validReturnStep = step.op === 'RETURN' || step.op === 'STOP' + if (validReturnStep || reverted) { if (this.currentCall) { this.currentCall.call.return = index - 1 - this.currentCall.call.reverted = reverted - this.currentCall.call.outOfGas = outOfGas + if (!validReturnStep) { + this.currentCall.call.reverted = reverted + } var parent = this.currentCall.parent this.currentCall = parent ? { call: parent.call, parent: parent.parent } : null }