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

Input gas in gwei

Also enforces "safe low gas" minimum recommended by this article by eth-gas-station:
https://medium.com/@ethgasstation/the-safe-low-gas-price-fb44fdc85b91

Fixes #1381
This commit is contained in:
Dan Finlay 2017-05-07 16:51:57 -07:00
parent f17c6b4eef
commit 80d8a4e73e

View File

@ -15,7 +15,9 @@ const addressSummary = util.addressSummary
const nameForAddress = require('../../lib/contract-namer') const nameForAddress = require('../../lib/contract-namer')
const HexInput = require('./hex-as-decimal-input') const HexInput = require('./hex-as-decimal-input')
const MIN_GAS_PRICE_BN = new BN(20000000) const MIN_GAS_PRICE_GWEI_BN = new BN(2)
const GWEI_FACTOR = new BN(Math.pow(10, 9))
const MIN_GAS_PRICE_BN = MIN_GAS_PRICE_GWEI_BN.mul(GWEI_FACTOR)
const MIN_GAS_LIMIT_BN = new BN(21000) const MIN_GAS_LIMIT_BN = new BN(21000)
module.exports = connect(mapStateToProps)(PendingTx) module.exports = connect(mapStateToProps)(PendingTx)
@ -39,16 +41,20 @@ PendingTx.prototype.render = function () {
const txMeta = this.gatherTxMeta() const txMeta = this.gatherTxMeta()
const txParams = txMeta.txParams || {} const txParams = txMeta.txParams || {}
// Account Details
const address = txParams.from || props.selectedAddress const address = txParams.from || props.selectedAddress
const identity = props.identities[address] || { address: address } const identity = props.identities[address] || { address: address }
const account = props.accounts[address] const account = props.accounts[address]
const balance = account ? account.balance : '0x0' const balance = account ? account.balance : '0x0'
// Gas
const gas = txParams.gas const gas = txParams.gas
const gasPrice = txParams.gasPrice
const gasBn = hexToBn(gas) const gasBn = hexToBn(gas)
// Gas Price
const gasPrice = txParams.gasPrice || MIN_GAS_PRICE_BN.toString(16)
const gasPriceBn = hexToBn(gasPrice) const gasPriceBn = hexToBn(gasPrice)
const gasPriceGweiBn = gasPriceBn.div(new BN(Math.pow(10, 9)))
const txFeeBn = gasBn.mul(gasPriceBn) const txFeeBn = gasBn.mul(gasPriceBn)
const valueBn = hexToBn(txParams.value) const valueBn = hexToBn(txParams.value)
@ -187,17 +193,18 @@ PendingTx.prototype.render = function () {
}, [ }, [
h(HexInput, { h(HexInput, {
name: 'Gas Price', name: 'Gas Price',
value: gasPrice, value: gasPriceGweiBn.toString(16),
suffix: 'WEI', suffix: 'GWEI',
min: MIN_GAS_PRICE_BN.toString(10), min: MIN_GAS_PRICE_GWEI_BN.toString(10),
style: { style: {
position: 'relative', position: 'relative',
top: '5px', top: '5px',
}, },
onChange: (newHex) => { onChange: (newHex) => {
log.info(`Gas price changed to: ${newHex}`) log.info(`Gas price changed to: ${newHex}`)
const inWei = hexToBn(newHex).mul(GWEI_FACTOR)
const txMeta = this.gatherTxMeta() const txMeta = this.gatherTxMeta()
txMeta.txParams.gasPrice = newHex txMeta.txParams.gasPrice = inWei.toString(16)
this.setState({ txData: txMeta }) this.setState({ txData: txMeta })
}, },
ref: (hexInput) => { this.inputs.push(hexInput) }, ref: (hexInput) => { this.inputs.push(hexInput) },