diff --git a/src/app/execution/txListener.js b/src/app/execution/txListener.js
index ed34067f3f..104300ac2d 100644
--- a/src/app/execution/txListener.js
+++ b/src/app/execution/txListener.js
@@ -62,22 +62,36 @@ class TxListener {
this.loopId = 'vm-listener'
} else {
this.loopId = setInterval(() => {
+ var currentLoopId = this.loopId
executionContext.web3().eth.getBlockNumber((error, blockNumber) => {
if (this.loopId === null || this.loopId === 'vm-listener') return
if (error) return console.log(error)
- if (!this.lastBlock || blockNumber > this.lastBlock) {
+ if (currentLoopId === this.loopId && (!this.lastBlock || blockNumber > this.lastBlock)) {
+ if (!this.lastBlock) this.lastBlock = blockNumber - 1
+ var current = this.lastBlock + 1
this.lastBlock = blockNumber
- executionContext.web3().eth.getBlock(this.lastBlock, true, (error, result) => {
- if (!error) {
- this._newBlock(Object.assign({type: 'web3'}, result))
+ while (blockNumber >= current) {
+ try {
+ this._manageBlock(current)
+ } catch (e) {
+ console.log(e)
}
- })
+ current++
+ }
}
})
- }, 2)
+ }, 2000)
}
}
+ _manageBlock (blockNumber) {
+ executionContext.web3().eth.getBlock(blockNumber, true, (error, result) => {
+ if (!error) {
+ this._newBlock(Object.assign({type: 'web3'}, result))
+ }
+ })
+ }
+
/**
* stop listening for incoming transactions. do not reset the recorded pool.
*
@@ -194,7 +208,7 @@ class TxListener {
fn: fn,
params: this._decodeInputParams(inputData.substring(8), getFunction(abi, fn))
}
- return
+ return this._resolvedTransactions[tx.hash]
}
}
// fallback function
diff --git a/src/app/execution/txLogger.js b/src/app/execution/txLogger.js
index d5e28a501d..84781976b9 100644
--- a/src/app/execution/txLogger.js
+++ b/src/app/execution/txLogger.js
@@ -22,6 +22,16 @@ class TxLogger {
opts.api.editorpanel.registerLogType('unknownTransaction', (data) => {
return renderUnknownTransaction(this, data)
})
+ opts.api.editorpanel.registerLogType('emptyBlock', (data) => {
+ return renderEmptyBlock(this, data)
+ })
+
+ opts.events.txListener.register('newBlock', (block) => {
+ if (!block.transactions.length) {
+ opts.api.editorpanel.log({type: 'emptyBlock', value: { block: block }})
+ }
+ })
+
opts.events.txListener.register('newTransaction', (tx) => {
log(this, tx, opts.api)
})
@@ -66,11 +76,15 @@ function renderUnknownTransaction (self, data) {
return yo`${context(self, data.tx)}: from:${helper.shortenAddress(data.tx.from)}, to:${to}, value:${value(data.tx.value)} wei, data:${helper.shortenHexData((data.tx.input))}, hash:${helper.shortenHexData((data.tx.hash))}, `
}
+function renderEmptyBlock (self, data) {
+ return yo`block ${data.block.number} - O transactions`
+}
+
function context (self, tx) {
if (executionContext.getProvider() === 'vm') {
return yo`(vm)`
} else {
- return yo`block:${tx.blockNumber}, txIndex:${tx.transactionIndex}`
+ return yo`block:${tx.blockNumber}, txIndex:${tx.transactionIndex}`
}
}
diff --git a/src/app/execution/txRunner.js b/src/app/execution/txRunner.js
index a754129f9b..2e7a59942e 100644
--- a/src/app/execution/txRunner.js
+++ b/src/app/execution/txRunner.js
@@ -69,7 +69,7 @@ TxRunner.prototype.execute = function (args, callback) {
return callback(err, resp)
}
- tryTillResponse(self.web3, resp, callback)
+ tryTillResponse(resp, callback)
})
})
}