Commit cd9dd507 authored by Alex Beregszaszi's avatar Alex Beregszaszi Committed by GitHub

Merge pull request #361 from ethereum/checkgasblocklimit

Check the current block gas limit before sending the tx
parents 293b12fa 2a703772
...@@ -65,25 +65,32 @@ TxRunner.prototype.execute = function () { ...@@ -65,25 +65,32 @@ TxRunner.prototype.execute = function () {
}) })
}) })
} else { } else {
self.web3.eth.estimateGas(tx, function (err, resp) { self.web3.eth.estimateGas(tx, function (err, gasEstimation) {
if (err) { if (err) {
return callback(err, resp) return callback(err, gasEstimation)
}
if (resp > gasLimit) {
return callback('Gas required exceeds limit: ' + resp)
} }
self.web3.eth.getBlock('latest', function (err, block) {
if (err) {
return callback(err)
} else {
// NOTE: estimateGas very likely will return a large limit if execution of the code failed
// we want to be able to run the code in order to debug and find the cause for the failure
var blockGasLimit = Math.floor(block.gasLimit - block.gasLimit / 1024)
tx.gas = blockGasLimit < gasEstimation ? blockGasLimit : gasEstimation
tx.gas = resp if (tx.gas > gasLimit) {
return callback('Gas required exceeds limit: ' + tx.gas)
}
var sendTransaction = self.personalMode ? self.web3.personal.sendTransaction : self.web3.eth.sendTransaction var sendTransaction = self.personalMode ? self.web3.personal.sendTransaction : self.web3.eth.sendTransaction
sendTransaction(tx, function (err, resp) {
if (err) {
return callback(err, resp)
}
sendTransaction(tx, function (err, resp) { tryTillResponse(self.web3, resp, callback)
if (err) { })
return callback(err, resp)
} }
tryTillResponse(self.web3, resp, callback)
}) })
}) })
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment