fix getBlock/SsetInterval && update block gas limit when provider change

pull/7/head
yann300 7 years ago
parent c5722689c5
commit 854368981d
  1. 28
      remix-lib/src/execution/execution-context.js

@ -173,6 +173,7 @@ function ExecutionContext () {
} else { } else {
executionContext = context executionContext = context
web3.setProvider(injectedProvider) web3.setProvider(injectedProvider)
self._updateBlockGasLimit()
self.event.trigger('contextChanged', ['injected']) self.event.trigger('contextChanged', ['injected'])
return cb() return cb()
} }
@ -191,20 +192,24 @@ function ExecutionContext () {
if (this.listenOnLastBlockId) clearInterval(this.listenOnLastBlockId) if (this.listenOnLastBlockId) clearInterval(this.listenOnLastBlockId)
this.listenOnLastBlockId = null this.listenOnLastBlockId = null
} }
this._updateBlockGasLimit = function () {
if (this.getProvider() !== 'vm') {
web3.eth.getBlock('latest', (err, block) => {
if (!err) {
// we can't use the blockGasLimit cause the next blocks could have a lower limit : https://github.com/ethereum/remix/issues/506
this.blockGasLimit = (block && block.gasLimit) ? Math.floor(block.gasLimit - (5 * block.gasLimit) / 1024) : this.blockGasLimitDefault
} else {
this.blockGasLimit = this.blockGasLimitDefault
}
})
}
}
this.listenOnLastBlock = function () { this.listenOnLastBlock = function () {
this.listenOnLastBlockId = setInterval(() => { this.listenOnLastBlockId = setInterval(() => {
if (this.getProvider() !== 'vm') { this._updateBlockGasLimit()
web3.eth.getBlock('latest', (err, block) => { }, 15000)
if (!err) {
// we can't use the blockGasLimit cause the next blocks could have a lower limit : https://github.com/ethereum/remix/issues/506
this.blockGasLimit = (block && block.gasLimit) ? Math.floor(block.gasLimit - (5 * block.gasLimit) / 1024) : this.blockGasLimitDefault
} else {
this.blockGasLimit = this.blockGasLimitDefault
}
}, 15000)
}
})
} }
// TODO: not used here anymore and needs to be moved // TODO: not used here anymore and needs to be moved
@ -218,6 +223,7 @@ function ExecutionContext () {
} }
if (web3.isConnected()) { if (web3.isConnected()) {
executionContext = context executionContext = context
self._updateBlockGasLimit()
self.event.trigger('contextChanged', ['web3']) self.event.trigger('contextChanged', ['web3'])
self.event.trigger('web3EndpointChanged') self.event.trigger('web3EndpointChanged')
cb() cb()

Loading…
Cancel
Save