1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

Merge pull request #2093 from MetaMask/max-validation

High GasLimit Validation Warning
This commit is contained in:
Dan Finlay 2017-09-18 11:14:26 -07:00 committed by GitHub
commit 99856189ed
2 changed files with 41 additions and 25 deletions

View File

@ -7,6 +7,7 @@
- Changed state logs to a file download than a clipboard copy. - Changed state logs to a file download than a clipboard copy.
- Fixed a long standing memory leak associated with filters installed by dapps - Fixed a long standing memory leak associated with filters installed by dapps
- Fix link to support center. - Fix link to support center.
- Warn users when a dapp proposes a high gas limit (90% of blockGasLimit or higher)
## 3.10.0 2017-9-11 ## 3.10.0 2017-9-11

View File

@ -52,7 +52,9 @@ PendingTx.prototype.render = function () {
const gas = txParams.gas const gas = txParams.gas
const gasBn = hexToBn(gas) const gasBn = hexToBn(gas)
const gasLimit = new BN(parseInt(blockGasLimit)) const gasLimit = new BN(parseInt(blockGasLimit))
const safeGasLimit = this.bnMultiplyByFraction(gasLimit, 19, 20).toString(10) const safeGasLimitBN = this.bnMultiplyByFraction(gasLimit, 19, 20)
const saferGasLimitBN = this.bnMultiplyByFraction(gasLimit, 18, 20)
const safeGasLimit = safeGasLimitBN.toString(10)
// Gas Price // Gas Price
const gasPrice = txParams.gasPrice || MIN_GAS_PRICE_BN.toString(16) const gasPrice = txParams.gasPrice || MIN_GAS_PRICE_BN.toString(16)
@ -66,6 +68,8 @@ PendingTx.prototype.render = function () {
const balanceBn = hexToBn(balance) const balanceBn = hexToBn(balance)
const insufficientBalance = balanceBn.lt(maxCost) const insufficientBalance = balanceBn.lt(maxCost)
const dangerousGasLimit = gasBn.gte(saferGasLimitBN)
const gasLimitSpecified = txMeta.gasLimitSpecified
const buyDisabled = insufficientBalance || !this.state.valid || !isValidAddress || this.state.submitting const buyDisabled = insufficientBalance || !this.state.valid || !isValidAddress || this.state.submitting
const showRejectAll = props.unconfTxListLength > 1 const showRejectAll = props.unconfTxListLength > 1
@ -263,33 +267,44 @@ PendingTx.prototype.render = function () {
text-transform: uppercase; text-transform: uppercase;
} }
`), `),
h('.cell.row', {
style: {
textAlign: 'center',
},
}, [
txMeta.simulationFails ?
h('.error', {
style: {
fontSize: '0.9em',
},
}, 'Transaction Error. Exception thrown in contract code.')
: null,
txMeta.simulationFails ? !isValidAddress ?
h('.error', { h('.error', {
style: { style: {
marginLeft: 50, fontSize: '0.9em',
fontSize: '0.9em', },
}, }, 'Recipient address is invalid. Sending this transaction will result in a loss of ETH.')
}, 'Transaction Error. Exception thrown in contract code.') : null,
: null,
!isValidAddress ? insufficientBalance ?
h('.error', { h('span.error', {
style: { style: {
marginLeft: 50, fontSize: '0.9em',
fontSize: '0.9em', },
}, }, 'Insufficient balance for transaction')
}, 'Recipient address is invalid. Sending this transaction will result in a loss of ETH.') : null,
: null,
(dangerousGasLimit && !gasLimitSpecified) ?
h('span.error', {
style: {
fontSize: '0.9em',
},
}, 'Gas limit set dangerously high. Approving this transaction is likely to fail.')
: null,
]),
insufficientBalance ?
h('span.error', {
style: {
marginLeft: 50,
fontSize: '0.9em',
},
}, 'Insufficient balance for transaction')
: null,
// send + cancel // send + cancel
h('.flex-row.flex-space-around.conf-buttons', { h('.flex-row.flex-space-around.conf-buttons', {