diff options
author | kumavis <kumavis@users.noreply.github.com> | 2016-07-15 05:38:54 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-15 05:38:54 +0800 |
commit | e18dc1d65d2422f2d06a0effe81154f82d3c34d5 (patch) | |
tree | f29f783accff0729dab4c557fcb1802be1868de8 | |
parent | f84992fa33369d9dc5923c26a61c5369793fc550 (diff) | |
parent | 3b80a043ee711bbc12ec55265e7c024c9145e75d (diff) | |
download | tangerine-wallet-browser-e18dc1d65d2422f2d06a0effe81154f82d3c34d5.tar tangerine-wallet-browser-e18dc1d65d2422f2d06a0effe81154f82d3c34d5.tar.gz tangerine-wallet-browser-e18dc1d65d2422f2d06a0effe81154f82d3c34d5.tar.bz2 tangerine-wallet-browser-e18dc1d65d2422f2d06a0effe81154f82d3c34d5.tar.lz tangerine-wallet-browser-e18dc1d65d2422f2d06a0effe81154f82d3c34d5.tar.xz tangerine-wallet-browser-e18dc1d65d2422f2d06a0effe81154f82d3c34d5.tar.zst tangerine-wallet-browser-e18dc1d65d2422f2d06a0effe81154f82d3c34d5.zip |
Merge branch 'master' into legal-beagal
-rw-r--r-- | CHANGELOG.md | 4 | ||||
-rw-r--r-- | app/manifest.json | 2 | ||||
-rw-r--r-- | app/scripts/lib/idStore.js | 54 | ||||
-rw-r--r-- | package.json | 1 | ||||
-rw-r--r-- | ui/app/components/eth-balance.js | 4 | ||||
-rw-r--r-- | ui/app/components/pending-tx-details.js | 15 | ||||
-rw-r--r-- | ui/app/components/transaction-list-item.js | 1 | ||||
-rw-r--r-- | ui/app/util.js | 8 |
8 files changed, 59 insertions, 30 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 5166799cf..faaa3138c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,10 +2,14 @@ ## Current Master +## 2.6.1 2016-07-13 + +- Fix tool tips on Eth balance to show the 6 decimals - Fix rendering of recipient SVG in tx approval notification. - New vaults now generate only one wallet instead of three. - Bumped version of web3 provider engine. - Fixed bug where some lowercase or uppercase addresses were not being recognized as valid. +- Fixed bug where gas cost was misestimated on the tx confirmation view. ## 2.6.0 2016-07-11 diff --git a/app/manifest.json b/app/manifest.json index d0207ee0e..d1a4a2f54 100644 --- a/app/manifest.json +++ b/app/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_appName__", "short_name": "Metamask", - "version": "2.6.0", + "version": "2.6.1", "manifest_version": 2, "description": "__MSG_appDescription__", "icons": { diff --git a/app/scripts/lib/idStore.js b/app/scripts/lib/idStore.js index 133078668..2c8e9108b 100644 --- a/app/scripts/lib/idStore.js +++ b/app/scripts/lib/idStore.js @@ -1,6 +1,8 @@ const EventEmitter = require('events').EventEmitter const inherits = require('util').inherits +const async = require('async') const ethUtil = require('ethereumjs-util') +const EthQuery = require('eth-query') const LightwalletKeyStore = require('eth-lightwallet').keystore const clone = require('clone') const extend = require('xtend') @@ -197,35 +199,53 @@ IdentityStore.prototype.addUnconfirmedTransaction = function (txParams, onTxDone time: time, status: 'unconfirmed', } - configManager.addTx(txData) + console.log('addUnconfirmedTransaction:', txData) // keep the onTxDoneCb around for after approval/denial (requires user interaction) // This onTxDoneCb fires completion to the Dapp's write operation. self._unconfTxCbs[txId] = onTxDoneCb - // perform static analyis on the target contract code var provider = self._ethStore._query.currentProvider - if (txParams.to) { - provider.sendAsync({ id: 1, method: 'eth_getCode', params: [txParams.to, 'latest'] }, function (err, res) { - if (err) return didComplete(err) - if (res.error) return didComplete(res.error) - var code = ethUtil.toBuffer(res.result) - if (code !== '0x') { - var ops = ethBinToOps(code) - var containsDelegateCall = ops.some((op) => op.name === 'DELEGATECALL') - txData.containsDelegateCall = containsDelegateCall - didComplete() - } else { - didComplete() - } + var query = new EthQuery(provider) + + // calculate metadata for tx + async.parallel([ + analyzeForDelegateCall, + estimateGas, + ], didComplete) + + // perform static analyis on the target contract code + function analyzeForDelegateCall(cb){ + if (txParams.to) { + query.getCode(txParams.to, function (err, result) { + if (err) return cb(err) + var code = ethUtil.toBuffer(result) + if (code !== '0x') { + var ops = ethBinToOps(code) + var containsDelegateCall = ops.some((op) => op.name === 'DELEGATECALL') + txData.containsDelegateCall = containsDelegateCall + cb() + } else { + cb() + } + }) + } else { + cb() + } + } + + function estimateGas(cb){ + query.estimateGas(txParams, function(err, result){ + if (err) return cb(err) + txData.estimatedGas = result + cb() }) - } else { - didComplete() } function didComplete (err) { if (err) return cb(err) + configManager.addTx(txData) // signal update self._didUpdate() // signal completion of add tx diff --git a/package.json b/package.json index 4438092c2..8d2540ef2 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "end-of-stream": "^1.1.0", "eth-bin-to-ops": "^1.0.0", "eth-lightwallet": "^2.3.3", + "eth-query": "^1.0.3", "eth-store": "^1.1.0", "ethereumjs-tx": "^1.0.0", "ethereumjs-util": "^4.4.0", diff --git a/ui/app/components/eth-balance.js b/ui/app/components/eth-balance.js index 5f99a3e48..612ef7779 100644 --- a/ui/app/components/eth-balance.js +++ b/ui/app/components/eth-balance.js @@ -15,7 +15,7 @@ EthBalanceComponent.prototype.render = function () { var state = this.props var style = state.style - const value = formatBalance(state.value) + const value = formatBalance(state.value, 6) var width = state.width return ( @@ -35,7 +35,7 @@ EthBalanceComponent.prototype.render = function () { } EthBalanceComponent.prototype.renderBalance = function (value, state) { if (value === 'None') return value - var balanceObj = generateBalanceObject(value, 1) + var balanceObj = generateBalanceObject(value, state.shorten ? 1 : 3) var balance if (state.shorten) { diff --git a/ui/app/components/pending-tx-details.js b/ui/app/components/pending-tx-details.js index 9a06ad09e..a6f72a89b 100644 --- a/ui/app/components/pending-tx-details.js +++ b/ui/app/components/pending-tx-details.js @@ -11,9 +11,6 @@ const nameForAddress = require('../../lib/contract-namer') const ethUtil = require('ethereumjs-util') const BN = ethUtil.BN -const baseGasFee = new BN('21000', 10) -const gasCost = new BN('4a817c800', 16) -const baseFeeHex = baseGasFee.mul(gasCost).toString(16) module.exports = PendingTxDetails @@ -33,9 +30,11 @@ PTXP.render = function () { var identity = props.identities[address] || { address: address } var balance = props.accounts[address].balance - var gasCost = ethUtil.stripHexPrefix(txParams.gas || baseFeeHex) - var txValue = ethUtil.stripHexPrefix(txParams.value || '0x0') - var maxCost = ((new BN(txValue, 16)).add(new BN(gasCost, 16))).toString(16) + var gasCost = new BN(ethUtil.stripHexPrefix(txParams.gas || txData.estimatedGas), 16) + var gasPrice = new BN(ethUtil.stripHexPrefix(txParams.gasPrice || '0x4a817c800'), 16) + var txFee = gasCost.mul(gasPrice) + var txValue = new BN(ethUtil.stripHexPrefix(txParams.value || '0x0'), 16) + var maxCost = txValue.add(txFee) var dataLength = txParams.data ? (txParams.data.length - 2) / 2 : 0 var imageify = props.imageifyIdenticons === undefined ? true : props.imageifyIdenticons @@ -112,7 +111,7 @@ PTXP.render = function () { h('.cell.row', [ h('.cell.label', 'Max Transaction Fee'), - h('.cell.value', formatBalance(gasCost)), + h('.cell.value', formatBalance(txFee.toString(16))), ]), h('.cell.row', { @@ -130,7 +129,7 @@ PTXP.render = function () { }, }, [ h(EtherBalance, { - value: maxCost, + value: maxCost.toString(16), inline: true, labelColor: 'black', fontSize: '16px', diff --git a/ui/app/components/transaction-list-item.js b/ui/app/components/transaction-list-item.js index 2314c7107..78867fca4 100644 --- a/ui/app/components/transaction-list-item.js +++ b/ui/app/components/transaction-list-item.js @@ -75,6 +75,7 @@ TransactionListItem.prototype.render = function () { value: txParams.value, width: '55px', shorten: true, + style: {fontSize: '15px'}, }) : h('.flex-column'), ]) ) diff --git a/ui/app/util.js b/ui/app/util.js index c04612455..a08006077 100644 --- a/ui/app/util.js +++ b/ui/app/util.js @@ -122,7 +122,11 @@ function generateBalanceObject (formattedBalance, decimalsToKeep = 1) { var afterDecimal = balance.split('.')[1] var shortBalance = shortenBalance(balance, decimalsToKeep) - if (beforeDecimal === '0' && afterDecimal.substr(0, 5) === '00000') { balance = '<1.0e-5' } + if (beforeDecimal === '0' && afterDecimal.substr(0, 5) === '00000') { + balance = '<1.0e-5' + } else if (beforeDecimal !== '0') { + balance = `${beforeDecimal}.${afterDecimal.slice(0, decimalsToKeep)}` + } return { balance, label, shortBalance } } @@ -141,7 +145,7 @@ function shortenBalance (balance, decimalsToKeep = 1) { truncatedValue = (convertedBalance * Math.pow(10, exponent)).toFixed(decimalsToKeep) return `<${truncatedValue}e-${exponent}` } else { - return balance + return convertedBalance.toFixed(decimalsToKeep) } } |