aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Finlay <flyswatter@users.noreply.github.com>2017-05-25 07:36:00 +0800
committerGitHub <noreply@github.com>2017-05-25 07:36:00 +0800
commit764806d211e026226bf8003cbdd6ff3ec570d5db (patch)
tree51954c6b0459310b0f6c4457fa181e8e6d29e44b
parenta5f6cfe7d7c38686679ad8a5870630d12569f8e2 (diff)
parentb95f2158bb3094f6a47236c2e0e4e0ae9b87bb91 (diff)
downloadtangerine-wallet-browser-764806d211e026226bf8003cbdd6ff3ec570d5db.tar
tangerine-wallet-browser-764806d211e026226bf8003cbdd6ff3ec570d5db.tar.gz
tangerine-wallet-browser-764806d211e026226bf8003cbdd6ff3ec570d5db.tar.bz2
tangerine-wallet-browser-764806d211e026226bf8003cbdd6ff3ec570d5db.tar.lz
tangerine-wallet-browser-764806d211e026226bf8003cbdd6ff3ec570d5db.tar.xz
tangerine-wallet-browser-764806d211e026226bf8003cbdd6ff3ec570d5db.tar.zst
tangerine-wallet-browser-764806d211e026226bf8003cbdd6ff3ec570d5db.zip
Merge pull request #1494 from MetaMask/1472-gasceiling
Add Max GasLimit Ceiling
-rw-r--r--CHANGELOG.md1
-rw-r--r--app/scripts/lib/tx-utils.js13
-rw-r--r--ui/app/components/pending-tx.js2
3 files changed, 15 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index aea0df1fa..caa87b697 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,7 @@
- Now when switching networks the extension does not restart
- Cleanup decimal bugs in our gas inputs.
- Fix bug where submit button was enabled for invalid gas inputs.
+- Now enforce 95% of block's gasLimit to protect users.
## 3.7.0 2017-5-23
diff --git a/app/scripts/lib/tx-utils.js b/app/scripts/lib/tx-utils.js
index 76b311653..8cf304d0b 100644
--- a/app/scripts/lib/tx-utils.js
+++ b/app/scripts/lib/tx-utils.js
@@ -21,19 +21,30 @@ module.exports = class txProviderUtils {
this.query.getBlockByNumber('latest', true, (err, block) => {
if (err) return cb(err)
async.waterfall([
+ self.setBlockGasLimit.bind(self, txMeta, block.gasLimit),
self.estimateTxGas.bind(self, txMeta, block.gasLimit),
self.setTxGas.bind(self, txMeta, block.gasLimit),
], cb)
})
}
+ setBlockGasLimit (txMeta, blockGasLimitHex, cb) {
+ const blockGasLimitBN = hexToBn(blockGasLimitHex)
+ const saferGasLimitBN = blockGasLimitBN.muln(0.95)
+ txMeta.blockGasLimit = bnToHex(saferGasLimitBN)
+ cb()
+ return
+ }
+
estimateTxGas (txMeta, blockGasLimitHex, cb) {
const txParams = txMeta.txParams
// check if gasLimit is already specified
txMeta.gasLimitSpecified = Boolean(txParams.gas)
// if not, fallback to block gasLimit
if (!txMeta.gasLimitSpecified) {
- txParams.gas = blockGasLimitHex
+ const blockGasLimitBN = hexToBn(blockGasLimitHex)
+ const saferGasLimitBN = blockGasLimitBN.muln(0.95)
+ txParams.gas = bnToHex(saferGasLimitBN)
}
// run tx, see if it will OOG
this.query.estimateGas(txParams, cb)
diff --git a/ui/app/components/pending-tx.js b/ui/app/components/pending-tx.js
index d66d98dd5..b46f715bc 100644
--- a/ui/app/components/pending-tx.js
+++ b/ui/app/components/pending-tx.js
@@ -47,6 +47,7 @@ PendingTx.prototype.render = function () {
// Gas
const gas = txParams.gas
const gasBn = hexToBn(gas)
+ const safeGasLimit = parseInt(txMeta.blockGasLimit)
// Gas Price
const gasPrice = txParams.gasPrice || MIN_GAS_PRICE_BN.toString(16)
@@ -159,6 +160,7 @@ PendingTx.prototype.render = function () {
scale: 0,
// The hard lower limit for gas.
min: MIN_GAS_LIMIT_BN.toString(10),
+ max: safeGasLimit,
suffix: 'UNITS',
style: {
position: 'relative',