mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Create custom addHexPrefix function (#9306)
* create custom addHexPrefix function * switch to custom addHexPrefix Co-authored-by: Mark Stacey <markjstacey@gmail.com> Co-authored-by: Erik Marks <rekmarks@protonmail.com>
This commit is contained in:
parent
d1430e733e
commit
ee205b893f
@ -2,6 +2,7 @@ import log from 'loglevel'
|
|||||||
import Wallet from 'ethereumjs-wallet'
|
import Wallet from 'ethereumjs-wallet'
|
||||||
import importers from 'ethereumjs-wallet/thirdparty'
|
import importers from 'ethereumjs-wallet/thirdparty'
|
||||||
import ethUtil from 'ethereumjs-util'
|
import ethUtil from 'ethereumjs-util'
|
||||||
|
import { addHexPrefix } from '../lib/util'
|
||||||
|
|
||||||
const accountImporter = {
|
const accountImporter = {
|
||||||
importAccount(strategy, args) {
|
importAccount(strategy, args) {
|
||||||
@ -20,7 +21,7 @@ const accountImporter = {
|
|||||||
throw new Error('Cannot import an empty key.')
|
throw new Error('Cannot import an empty key.')
|
||||||
}
|
}
|
||||||
|
|
||||||
const prefixed = ethUtil.addHexPrefix(privateKey)
|
const prefixed = addHexPrefix(privateKey)
|
||||||
const buffer = ethUtil.toBuffer(prefixed)
|
const buffer = ethUtil.toBuffer(prefixed)
|
||||||
|
|
||||||
if (!ethUtil.isValidPrivate(buffer)) {
|
if (!ethUtil.isValidPrivate(buffer)) {
|
||||||
|
@ -10,7 +10,12 @@ import NonceTracker from 'nonce-tracker'
|
|||||||
import log from 'loglevel'
|
import log from 'loglevel'
|
||||||
import BigNumber from 'bignumber.js'
|
import BigNumber from 'bignumber.js'
|
||||||
import cleanErrorStack from '../../lib/cleanErrorStack'
|
import cleanErrorStack from '../../lib/cleanErrorStack'
|
||||||
import { hexToBn, bnToHex, BnMultiplyByFraction } from '../../lib/util'
|
import {
|
||||||
|
hexToBn,
|
||||||
|
bnToHex,
|
||||||
|
BnMultiplyByFraction,
|
||||||
|
addHexPrefix,
|
||||||
|
} from '../../lib/util'
|
||||||
import { TRANSACTION_NO_CONTRACT_ERROR_KEY } from '../../../../ui/app/helpers/constants/error-keys'
|
import { TRANSACTION_NO_CONTRACT_ERROR_KEY } from '../../../../ui/app/helpers/constants/error-keys'
|
||||||
import { getSwapsTokensReceivedFromTxMeta } from '../../../../ui/app/pages/swaps/swaps.util'
|
import { getSwapsTokensReceivedFromTxMeta } from '../../../../ui/app/pages/swaps/swaps.util'
|
||||||
import {
|
import {
|
||||||
@ -264,7 +269,7 @@ export default class TransactionController extends EventEmitter {
|
|||||||
|
|
||||||
// ensure value
|
// ensure value
|
||||||
txMeta.txParams.value = txMeta.txParams.value
|
txMeta.txParams.value = txMeta.txParams.value
|
||||||
? ethUtil.addHexPrefix(txMeta.txParams.value)
|
? addHexPrefix(txMeta.txParams.value)
|
||||||
: '0x0'
|
: '0x0'
|
||||||
|
|
||||||
this.addTx(txMeta)
|
this.addTx(txMeta)
|
||||||
@ -324,7 +329,7 @@ export default class TransactionController extends EventEmitter {
|
|||||||
}
|
}
|
||||||
const gasPrice = await this.query.gasPrice()
|
const gasPrice = await this.query.gasPrice()
|
||||||
|
|
||||||
return ethUtil.addHexPrefix(gasPrice.toString(16))
|
return addHexPrefix(gasPrice.toString(16))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -365,7 +370,7 @@ export default class TransactionController extends EventEmitter {
|
|||||||
|
|
||||||
// add additional gas buffer to our estimation for safety
|
// add additional gas buffer to our estimation for safety
|
||||||
const gasLimit = this.txGasUtil.addGasBuffer(
|
const gasLimit = this.txGasUtil.addGasBuffer(
|
||||||
ethUtil.addHexPrefix(estimatedGasHex),
|
addHexPrefix(estimatedGasHex),
|
||||||
blockGasLimit,
|
blockGasLimit,
|
||||||
)
|
)
|
||||||
return { gasLimit, simulationFails }
|
return { gasLimit, simulationFails }
|
||||||
@ -501,7 +506,7 @@ export default class TransactionController extends EventEmitter {
|
|||||||
const customOrNonce =
|
const customOrNonce =
|
||||||
customNonceValue === 0 ? customNonceValue : customNonceValue || nonce
|
customNonceValue === 0 ? customNonceValue : customNonceValue || nonce
|
||||||
|
|
||||||
txMeta.txParams.nonce = ethUtil.addHexPrefix(customOrNonce.toString(16))
|
txMeta.txParams.nonce = addHexPrefix(customOrNonce.toString(16))
|
||||||
// add nonce debugging information to txMeta
|
// add nonce debugging information to txMeta
|
||||||
txMeta.nonceDetails = nonceLock.nonceDetails
|
txMeta.nonceDetails = nonceLock.nonceDetails
|
||||||
if (customNonceValue) {
|
if (customNonceValue) {
|
||||||
@ -582,8 +587,8 @@ export default class TransactionController extends EventEmitter {
|
|||||||
txHash = await this.query.sendRawTransaction(rawTx)
|
txHash = await this.query.sendRawTransaction(rawTx)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error.message.toLowerCase().includes('known transaction')) {
|
if (error.message.toLowerCase().includes('known transaction')) {
|
||||||
txHash = ethUtil.sha3(ethUtil.addHexPrefix(rawTx)).toString('hex')
|
txHash = ethUtil.sha3(addHexPrefix(rawTx)).toString('hex')
|
||||||
txHash = ethUtil.addHexPrefix(txHash)
|
txHash = addHexPrefix(txHash)
|
||||||
} else {
|
} else {
|
||||||
throw error
|
throw error
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { addHexPrefix, isValidAddress } from 'ethereumjs-util'
|
import { isValidAddress } from 'ethereumjs-util'
|
||||||
|
import { addHexPrefix } from '../../../lib/util'
|
||||||
|
|
||||||
const normalizers = {
|
const normalizers = {
|
||||||
from: (from) => addHexPrefix(from),
|
from: (from) => addHexPrefix(from),
|
||||||
|
@ -3,6 +3,7 @@ import ObservableStore from 'obs-store'
|
|||||||
import ethUtil from 'ethereumjs-util'
|
import ethUtil from 'ethereumjs-util'
|
||||||
import { ethErrors } from 'eth-json-rpc-errors'
|
import { ethErrors } from 'eth-json-rpc-errors'
|
||||||
import log from 'loglevel'
|
import log from 'loglevel'
|
||||||
|
import { addHexPrefix } from './util'
|
||||||
import createId from './random-id'
|
import createId from './random-id'
|
||||||
import { MESSAGE_TYPE } from './enums'
|
import { MESSAGE_TYPE } from './enums'
|
||||||
|
|
||||||
@ -329,7 +330,7 @@ export default class DecryptMessageManager extends EventEmitter {
|
|||||||
try {
|
try {
|
||||||
const stripped = ethUtil.stripHexPrefix(data)
|
const stripped = ethUtil.stripHexPrefix(data)
|
||||||
if (stripped.match(hexRe)) {
|
if (stripped.match(hexRe)) {
|
||||||
return ethUtil.addHexPrefix(stripped)
|
return addHexPrefix(stripped)
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log.debug(`Message was not hex encoded, interpreting as utf8.`)
|
log.debug(`Message was not hex encoded, interpreting as utf8.`)
|
||||||
|
@ -3,6 +3,7 @@ import ObservableStore from 'obs-store'
|
|||||||
import ethUtil from 'ethereumjs-util'
|
import ethUtil from 'ethereumjs-util'
|
||||||
import { ethErrors } from 'eth-json-rpc-errors'
|
import { ethErrors } from 'eth-json-rpc-errors'
|
||||||
import log from 'loglevel'
|
import log from 'loglevel'
|
||||||
|
import { addHexPrefix } from './util'
|
||||||
import createId from './random-id'
|
import createId from './random-id'
|
||||||
import { MESSAGE_TYPE } from './enums'
|
import { MESSAGE_TYPE } from './enums'
|
||||||
|
|
||||||
@ -313,7 +314,7 @@ export default class PersonalMessageManager extends EventEmitter {
|
|||||||
try {
|
try {
|
||||||
const stripped = ethUtil.stripHexPrefix(data)
|
const stripped = ethUtil.stripHexPrefix(data)
|
||||||
if (stripped.match(hexRe)) {
|
if (stripped.match(hexRe)) {
|
||||||
return ethUtil.addHexPrefix(stripped)
|
return addHexPrefix(stripped)
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log.debug(`Message was not hex encoded, interpreting as utf8.`)
|
log.debug(`Message was not hex encoded, interpreting as utf8.`)
|
||||||
|
@ -103,17 +103,6 @@ function sufficientBalance(txParams, hexBalance) {
|
|||||||
return balance.gte(maxCost)
|
return balance.gte(maxCost)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Converts a BN object to a hex string with a '0x' prefix
|
|
||||||
*
|
|
||||||
* @param {BN} inputBn - The BN to convert to a hex string
|
|
||||||
* @returns {string} - A '0x' prefixed hex string
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
function bnToHex(inputBn) {
|
|
||||||
return ethUtil.addHexPrefix(inputBn.toString(16))
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts a hex string to a BN object
|
* Converts a hex string to a BN object
|
||||||
*
|
*
|
||||||
@ -173,13 +162,47 @@ function isPrefixedFormattedHexString(value) {
|
|||||||
return /^0x[1-9a-f]+[0-9a-f]*$/iu.test(value)
|
return /^0x[1-9a-f]+[0-9a-f]*$/iu.test(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prefixes a hex string with '0x' or '-0x' and returns it. Idempotent.
|
||||||
|
*
|
||||||
|
* @param {string} str - The string to prefix.
|
||||||
|
* @returns {string} The prefixed string.
|
||||||
|
*/
|
||||||
|
const addHexPrefix = (str) => {
|
||||||
|
if (typeof str !== 'string' || str.match(/^-?0x/u)) {
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
|
||||||
|
if (str.match(/^-?0X/u)) {
|
||||||
|
return str.replace('0X', '0x')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (str.startsWith('-')) {
|
||||||
|
return str.replace('-', '-0x')
|
||||||
|
}
|
||||||
|
|
||||||
|
return `0x${str}`
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a BN object to a hex string with a '0x' prefix
|
||||||
|
*
|
||||||
|
* @param {BN} inputBn - The BN to convert to a hex string
|
||||||
|
* @returns {string} - A '0x' prefixed hex string
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
function bnToHex(inputBn) {
|
||||||
|
return addHexPrefix(inputBn.toString(16))
|
||||||
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
getPlatform,
|
getPlatform,
|
||||||
getEnvironmentType,
|
getEnvironmentType,
|
||||||
sufficientBalance,
|
sufficientBalance,
|
||||||
hexToBn,
|
hexToBn,
|
||||||
bnToHex,
|
|
||||||
BnMultiplyByFraction,
|
BnMultiplyByFraction,
|
||||||
checkForError,
|
checkForError,
|
||||||
isPrefixedFormattedHexString,
|
isPrefixedFormattedHexString,
|
||||||
|
addHexPrefix,
|
||||||
|
bnToHex,
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,8 @@
|
|||||||
normalizes txParams on unconfirmed txs
|
normalizes txParams on unconfirmed txs
|
||||||
|
|
||||||
*/
|
*/
|
||||||
import ethUtil from 'ethereumjs-util'
|
|
||||||
|
|
||||||
import { cloneDeep } from 'lodash'
|
import { cloneDeep } from 'lodash'
|
||||||
|
import { addHexPrefix } from '../lib/util'
|
||||||
|
|
||||||
const version = 25
|
const version = 25
|
||||||
|
|
||||||
@ -47,13 +46,13 @@ function transformState(state) {
|
|||||||
function normalizeTxParams(txParams) {
|
function normalizeTxParams(txParams) {
|
||||||
// functions that handle normalizing of that key in txParams
|
// functions that handle normalizing of that key in txParams
|
||||||
const whiteList = {
|
const whiteList = {
|
||||||
from: (from) => ethUtil.addHexPrefix(from).toLowerCase(),
|
from: (from) => addHexPrefix(from).toLowerCase(),
|
||||||
to: () => ethUtil.addHexPrefix(txParams.to).toLowerCase(),
|
to: () => addHexPrefix(txParams.to).toLowerCase(),
|
||||||
nonce: (nonce) => ethUtil.addHexPrefix(nonce),
|
nonce: (nonce) => addHexPrefix(nonce),
|
||||||
value: (value) => ethUtil.addHexPrefix(value),
|
value: (value) => addHexPrefix(value),
|
||||||
data: (data) => ethUtil.addHexPrefix(data),
|
data: (data) => addHexPrefix(data),
|
||||||
gas: (gas) => ethUtil.addHexPrefix(gas),
|
gas: (gas) => addHexPrefix(gas),
|
||||||
gasPrice: (gasPrice) => ethUtil.addHexPrefix(gasPrice),
|
gasPrice: (gasPrice) => addHexPrefix(gasPrice),
|
||||||
}
|
}
|
||||||
|
|
||||||
// apply only keys in the whiteList
|
// apply only keys in the whiteList
|
||||||
|
@ -8,6 +8,7 @@ import EthQuery from 'eth-query'
|
|||||||
import proxyquire from 'proxyquire'
|
import proxyquire from 'proxyquire'
|
||||||
import firstTimeState from '../../localhostState'
|
import firstTimeState from '../../localhostState'
|
||||||
import createTxMeta from '../../../lib/createTxMeta'
|
import createTxMeta from '../../../lib/createTxMeta'
|
||||||
|
import { addHexPrefix } from '../../../../app/scripts/lib/util'
|
||||||
|
|
||||||
const threeBoxSpies = {
|
const threeBoxSpies = {
|
||||||
init: sinon.stub(),
|
init: sinon.stub(),
|
||||||
@ -167,7 +168,7 @@ describe('MetaMaskController', function () {
|
|||||||
const addressBuffer = ethUtil.pubToAddress(pubKeyBuffer)
|
const addressBuffer = ethUtil.pubToAddress(pubKeyBuffer)
|
||||||
const privKey = ethUtil.bufferToHex(privKeyBuffer)
|
const privKey = ethUtil.bufferToHex(privKeyBuffer)
|
||||||
const pubKey = ethUtil.bufferToHex(addressBuffer)
|
const pubKey = ethUtil.bufferToHex(addressBuffer)
|
||||||
assert.equal(privKey, ethUtil.addHexPrefix(importPrivkey))
|
assert.equal(privKey, addHexPrefix(importPrivkey))
|
||||||
assert.equal(pubKey, '0xe18035bf8712672935fdb4e5e431b1a0183d2dfc')
|
assert.equal(pubKey, '0xe18035bf8712672935fdb4e5e431b1a0183d2dfc')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { connect } from 'react-redux'
|
import { connect } from 'react-redux'
|
||||||
import { captureException } from '@sentry/browser'
|
import { captureException } from '@sentry/browser'
|
||||||
import { addHexPrefix } from 'ethereumjs-util'
|
import { addHexPrefix } from '../../../../../../app/scripts/lib/util'
|
||||||
import {
|
import {
|
||||||
hideModal,
|
hideModal,
|
||||||
setGasLimit,
|
setGasLimit,
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import { connect } from 'react-redux'
|
import { connect } from 'react-redux'
|
||||||
import { compose } from 'redux'
|
import { compose } from 'redux'
|
||||||
import ethUtil from 'ethereumjs-util'
|
|
||||||
import { multiplyCurrencies } from '../../../../helpers/utils/conversion-util'
|
import { multiplyCurrencies } from '../../../../helpers/utils/conversion-util'
|
||||||
import withModalProps from '../../../../helpers/higher-order-components/with-modal-props'
|
import withModalProps from '../../../../helpers/higher-order-components/with-modal-props'
|
||||||
import { showModal, createCancelTransaction } from '../../../../store/actions'
|
import { showModal, createCancelTransaction } from '../../../../store/actions'
|
||||||
import { getHexGasTotal } from '../../../../helpers/utils/confirm-tx.util'
|
import { getHexGasTotal } from '../../../../helpers/utils/confirm-tx.util'
|
||||||
|
import { addHexPrefix } from '../../../../../../app/scripts/lib/util'
|
||||||
import CancelTransaction from './cancel-transaction.component'
|
import CancelTransaction from './cancel-transaction.component'
|
||||||
|
|
||||||
const mapStateToProps = (state, ownProps) => {
|
const mapStateToProps = (state, ownProps) => {
|
||||||
@ -16,7 +16,7 @@ const mapStateToProps = (state, ownProps) => {
|
|||||||
)
|
)
|
||||||
const transactionStatus = transaction ? transaction.status : ''
|
const transactionStatus = transaction ? transaction.status : ''
|
||||||
|
|
||||||
const defaultNewGasPrice = ethUtil.addHexPrefix(
|
const defaultNewGasPrice = addHexPrefix(
|
||||||
multiplyCurrencies(originalGasPrice, 1.1, {
|
multiplyCurrencies(originalGasPrice, 1.1, {
|
||||||
toNumericBase: 'hex',
|
toNumericBase: 'hex',
|
||||||
multiplicandBase: 16,
|
multiplicandBase: 16,
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import React, { PureComponent } from 'react'
|
import React, { PureComponent } from 'react'
|
||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
import ethUtil from 'ethereumjs-util'
|
|
||||||
import UnitInput from '../unit-input'
|
import UnitInput from '../unit-input'
|
||||||
import CurrencyDisplay from '../currency-display'
|
import CurrencyDisplay from '../currency-display'
|
||||||
import { getWeiHexFromDecimalValue } from '../../../helpers/utils/conversions.util'
|
import { getWeiHexFromDecimalValue } from '../../../helpers/utils/conversions.util'
|
||||||
@ -9,6 +8,7 @@ import {
|
|||||||
multiplyCurrencies,
|
multiplyCurrencies,
|
||||||
} from '../../../helpers/utils/conversion-util'
|
} from '../../../helpers/utils/conversion-util'
|
||||||
import { ETH } from '../../../helpers/constants/common'
|
import { ETH } from '../../../helpers/constants/common'
|
||||||
|
import { addHexPrefix } from '../../../../../app/scripts/lib/util'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Component that allows user to enter token values as a number, and props receive a converted
|
* Component that allows user to enter token values as a number, and props receive a converted
|
||||||
@ -64,7 +64,7 @@ export default class TokenInput extends PureComponent {
|
|||||||
const { value: hexValue, token: { decimals, symbol } = {} } = props
|
const { value: hexValue, token: { decimals, symbol } = {} } = props
|
||||||
|
|
||||||
const multiplier = Math.pow(10, Number(decimals || 0))
|
const multiplier = Math.pow(10, Number(decimals || 0))
|
||||||
const decimalValueString = conversionUtil(ethUtil.addHexPrefix(hexValue), {
|
const decimalValueString = conversionUtil(addHexPrefix(hexValue), {
|
||||||
fromNumericBase: 'hex',
|
fromNumericBase: 'hex',
|
||||||
toNumericBase: 'dec',
|
toNumericBase: 'dec',
|
||||||
toCurrency: symbol,
|
toCurrency: symbol,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { addHexPrefix } from 'ethereumjs-util'
|
import { addHexPrefix } from '../../../../app/scripts/lib/util'
|
||||||
import {
|
import {
|
||||||
conversionRateSelector,
|
conversionRateSelector,
|
||||||
currentCurrencySelector,
|
currentCurrencySelector,
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import currencyFormatter from 'currency-formatter'
|
import currencyFormatter from 'currency-formatter'
|
||||||
import currencies from 'currency-formatter/currencies'
|
import currencies from 'currency-formatter/currencies'
|
||||||
import ethUtil from 'ethereumjs-util'
|
|
||||||
import BigNumber from 'bignumber.js'
|
import BigNumber from 'bignumber.js'
|
||||||
|
import { addHexPrefix } from '../../../../app/scripts/lib/util'
|
||||||
|
|
||||||
import { unconfirmedTransactionsCountSelector } from '../../selectors'
|
import { unconfirmedTransactionsCountSelector } from '../../selectors'
|
||||||
import {
|
import {
|
||||||
@ -12,7 +12,7 @@ import {
|
|||||||
} from './conversion-util'
|
} from './conversion-util'
|
||||||
|
|
||||||
export function increaseLastGasPrice(lastGasPrice) {
|
export function increaseLastGasPrice(lastGasPrice) {
|
||||||
return ethUtil.addHexPrefix(
|
return addHexPrefix(
|
||||||
multiplyCurrencies(lastGasPrice || '0x0', 1.1, {
|
multiplyCurrencies(lastGasPrice || '0x0', 1.1, {
|
||||||
multiplicandBase: 16,
|
multiplicandBase: 16,
|
||||||
multiplierBase: 10,
|
multiplierBase: 10,
|
||||||
@ -29,7 +29,7 @@ export function hexGreaterThan(a, b) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function getHexGasTotal({ gasLimit, gasPrice }) {
|
export function getHexGasTotal({ gasLimit, gasPrice }) {
|
||||||
return ethUtil.addHexPrefix(
|
return addHexPrefix(
|
||||||
multiplyCurrencies(gasLimit || '0x0', gasPrice || '0x0', {
|
multiplyCurrencies(gasLimit || '0x0', gasPrice || '0x0', {
|
||||||
toNumericBase: 'hex',
|
toNumericBase: 'hex',
|
||||||
multiplicandBase: 16,
|
multiplicandBase: 16,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import ethUtil from 'ethereumjs-util'
|
|
||||||
import BigNumber from 'bignumber.js'
|
import BigNumber from 'bignumber.js'
|
||||||
import { ETH, GWEI, WEI } from '../constants/common'
|
import { ETH, GWEI, WEI } from '../constants/common'
|
||||||
|
import { addHexPrefix } from '../../../../app/scripts/lib/util'
|
||||||
import {
|
import {
|
||||||
conversionUtil,
|
conversionUtil,
|
||||||
addCurrencies,
|
addCurrencies,
|
||||||
@ -9,7 +9,7 @@ import {
|
|||||||
import { formatCurrency } from './confirm-tx.util'
|
import { formatCurrency } from './confirm-tx.util'
|
||||||
|
|
||||||
export function bnToHex(inputBn) {
|
export function bnToHex(inputBn) {
|
||||||
return ethUtil.addHexPrefix(inputBn.toString(16))
|
return addHexPrefix(inputBn.toString(16))
|
||||||
}
|
}
|
||||||
|
|
||||||
export function hexToDecimal(hexValue) {
|
export function hexToDecimal(hexValue) {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import ethUtil from 'ethereumjs-util'
|
|
||||||
import MethodRegistry from 'eth-method-registry'
|
import MethodRegistry from 'eth-method-registry'
|
||||||
import abi from 'human-standard-token-abi'
|
import abi from 'human-standard-token-abi'
|
||||||
import { ethers } from 'ethers'
|
import { ethers } from 'ethers'
|
||||||
import log from 'loglevel'
|
import log from 'loglevel'
|
||||||
|
import { addHexPrefix } from '../../../../app/scripts/lib/util'
|
||||||
import { getEtherscanNetworkPrefix } from '../../../lib/etherscan-prefix-for-network'
|
import { getEtherscanNetworkPrefix } from '../../../lib/etherscan-prefix-for-network'
|
||||||
import {
|
import {
|
||||||
TRANSACTION_CATEGORIES,
|
TRANSACTION_CATEGORIES,
|
||||||
@ -103,7 +103,7 @@ export async function getMethodDataAsync(fourBytePrefix) {
|
|||||||
* @returns {string} - The four-byte method signature
|
* @returns {string} - The four-byte method signature
|
||||||
*/
|
*/
|
||||||
export function getFourBytePrefix(data = '') {
|
export function getFourBytePrefix(data = '') {
|
||||||
const prefixedData = ethUtil.addHexPrefix(data)
|
const prefixedData = addHexPrefix(data)
|
||||||
const fourBytePrefix = prefixedData.slice(0, 10)
|
const fourBytePrefix = prefixedData.slice(0, 10)
|
||||||
return fourBytePrefix
|
return fourBytePrefix
|
||||||
}
|
}
|
||||||
@ -157,7 +157,7 @@ export function sumHexes(...args) {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
return ethUtil.addHexPrefix(total)
|
return addHexPrefix(total)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3,6 +3,7 @@ import abi from 'human-standard-token-abi'
|
|||||||
import BigNumber from 'bignumber.js'
|
import BigNumber from 'bignumber.js'
|
||||||
import ethUtil from 'ethereumjs-util'
|
import ethUtil from 'ethereumjs-util'
|
||||||
import { DateTime } from 'luxon'
|
import { DateTime } from 'luxon'
|
||||||
|
import { addHexPrefix } from '../../../../app/scripts/lib/util'
|
||||||
|
|
||||||
// formatData :: ( date: <Unix Timestamp> ) -> String
|
// formatData :: ( date: <Unix Timestamp> ) -> String
|
||||||
export function formatDate(date, format = "M/d/y 'at' T") {
|
export function formatDate(date, format = "M/d/y 'at' T") {
|
||||||
@ -87,9 +88,7 @@ export function isValidAddress(address) {
|
|||||||
if (!address || address === '0x0000000000000000000000000000000000000000') {
|
if (!address || address === '0x0000000000000000000000000000000000000000') {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
const prefixed = address.startsWith('0X')
|
const prefixed = addHexPrefix(address)
|
||||||
? address
|
|
||||||
: ethUtil.addHexPrefix(address)
|
|
||||||
return (
|
return (
|
||||||
(isAllOneCase(prefixed.slice(2)) && ethUtil.isValidAddress(prefixed)) ||
|
(isAllOneCase(prefixed.slice(2)) && ethUtil.isValidAddress(prefixed)) ||
|
||||||
ethUtil.isValidChecksumAddress(prefixed)
|
ethUtil.isValidChecksumAddress(prefixed)
|
||||||
@ -415,7 +414,7 @@ export function toPrecisionWithoutTrailingZeros(n, precision) {
|
|||||||
*/
|
*/
|
||||||
export function addHexPrefixToObjectValues(obj) {
|
export function addHexPrefixToObjectValues(obj) {
|
||||||
return Object.keys(obj).reduce((newObj, key) => {
|
return Object.keys(obj).reduce((newObj, key) => {
|
||||||
return { ...newObj, [key]: ethUtil.addHexPrefix(obj[key]) }
|
return { ...newObj, [key]: addHexPrefix(obj[key]) }
|
||||||
}, {})
|
}, {})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,7 +20,9 @@ import { getConversionRate, getSelectedAccount } from '../selectors'
|
|||||||
*/
|
*/
|
||||||
export function useCancelTransaction(transactionGroup) {
|
export function useCancelTransaction(transactionGroup) {
|
||||||
const { primaryTransaction, initialTransaction } = transactionGroup
|
const { primaryTransaction, initialTransaction } = transactionGroup
|
||||||
const gasPrice = primaryTransaction.txParams?.gasPrice
|
const gasPrice = primaryTransaction.txParams?.gasPrice?.startsWith('-')
|
||||||
|
? '0x0'
|
||||||
|
: primaryTransaction.txParams?.gasPrice
|
||||||
const { id } = initialTransaction
|
const { id } = initialTransaction
|
||||||
const dispatch = useDispatch()
|
const dispatch = useDispatch()
|
||||||
const selectedAccount = useSelector(getSelectedAccount)
|
const selectedAccount = useSelector(getSelectedAccount)
|
||||||
|
@ -7,6 +7,7 @@ import { CONFIRM_ADD_TOKEN_ROUTE } from '../../helpers/constants/routes'
|
|||||||
import TextField from '../../components/ui/text-field'
|
import TextField from '../../components/ui/text-field'
|
||||||
import PageContainer from '../../components/ui/page-container'
|
import PageContainer from '../../components/ui/page-container'
|
||||||
import { Tabs, Tab } from '../../components/ui/tabs'
|
import { Tabs, Tab } from '../../components/ui/tabs'
|
||||||
|
import { addHexPrefix } from '../../../../app/scripts/lib/util'
|
||||||
import TokenList from './token-list'
|
import TokenList from './token-list'
|
||||||
import TokenSearch from './token-search'
|
import TokenSearch from './token-search'
|
||||||
|
|
||||||
@ -161,7 +162,7 @@ class AddToken extends Component {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const isValidAddress = ethUtil.isValidAddress(customAddress)
|
const isValidAddress = ethUtil.isValidAddress(customAddress)
|
||||||
const standardAddress = ethUtil.addHexPrefix(customAddress).toLowerCase()
|
const standardAddress = addHexPrefix(customAddress).toLowerCase()
|
||||||
|
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case !isValidAddress:
|
case !isValidAddress:
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import ethUtil from 'ethereumjs-util'
|
|
||||||
import {
|
import {
|
||||||
multiplyCurrencies,
|
multiplyCurrencies,
|
||||||
subtractCurrencies,
|
subtractCurrencies,
|
||||||
} from '../../../../../helpers/utils/conversion-util'
|
} from '../../../../../helpers/utils/conversion-util'
|
||||||
|
import { addHexPrefix } from '../../../../../../../app/scripts/lib/util'
|
||||||
|
|
||||||
export function calcMaxAmount({ balance, gasTotal, sendToken, tokenBalance }) {
|
export function calcMaxAmount({ balance, gasTotal, sendToken, tokenBalance }) {
|
||||||
const { decimals } = sendToken || {}
|
const { decimals } = sendToken || {}
|
||||||
@ -13,9 +13,7 @@ export function calcMaxAmount({ balance, gasTotal, sendToken, tokenBalance }) {
|
|||||||
toNumericBase: 'hex',
|
toNumericBase: 'hex',
|
||||||
multiplicandBase: 16,
|
multiplicandBase: 16,
|
||||||
})
|
})
|
||||||
: subtractCurrencies(
|
: subtractCurrencies(addHexPrefix(balance), addHexPrefix(gasTotal), {
|
||||||
ethUtil.addHexPrefix(balance),
|
toNumericBase: 'hex',
|
||||||
ethUtil.addHexPrefix(gasTotal),
|
})
|
||||||
{ toNumericBase: 'hex' },
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import { connect } from 'react-redux'
|
import { connect } from 'react-redux'
|
||||||
import ethUtil from 'ethereumjs-util'
|
|
||||||
import {
|
import {
|
||||||
addToAddressBook,
|
addToAddressBook,
|
||||||
clearSend,
|
clearSend,
|
||||||
@ -27,6 +26,7 @@ import {
|
|||||||
getDefaultActiveButtonIndex,
|
getDefaultActiveButtonIndex,
|
||||||
} from '../../../selectors'
|
} from '../../../selectors'
|
||||||
import { getMostRecentOverviewPage } from '../../../ducks/history/history'
|
import { getMostRecentOverviewPage } from '../../../ducks/history/history'
|
||||||
|
import { addHexPrefix } from '../../../../../app/scripts/lib/util'
|
||||||
import SendFooter from './send-footer.component'
|
import SendFooter from './send-footer.component'
|
||||||
import {
|
import {
|
||||||
addressIsNew,
|
addressIsNew,
|
||||||
@ -112,7 +112,7 @@ function mapDispatchToProps(dispatch) {
|
|||||||
},
|
},
|
||||||
|
|
||||||
addToAddressBookIfNew: (newAddress, toAccounts, nickname = '') => {
|
addToAddressBookIfNew: (newAddress, toAccounts, nickname = '') => {
|
||||||
const hexPrefixedAddress = ethUtil.addHexPrefix(newAddress)
|
const hexPrefixedAddress = addHexPrefix(newAddress)
|
||||||
if (addressIsNew(toAccounts, hexPrefixedAddress)) {
|
if (addressIsNew(toAccounts, hexPrefixedAddress)) {
|
||||||
// TODO: nickname, i.e. addToAddressBook(recipient, nickname)
|
// TODO: nickname, i.e. addToAddressBook(recipient, nickname)
|
||||||
dispatch(addToAddressBook(hexPrefixedAddress, nickname))
|
dispatch(addToAddressBook(hexPrefixedAddress, nickname))
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import ethAbi from 'ethereumjs-abi'
|
import ethAbi from 'ethereumjs-abi'
|
||||||
import ethUtil from 'ethereumjs-util'
|
|
||||||
import { TOKEN_TRANSFER_FUNCTION_SIGNATURE } from '../send.constants'
|
import { TOKEN_TRANSFER_FUNCTION_SIGNATURE } from '../send.constants'
|
||||||
|
import { addHexPrefix } from '../../../../../app/scripts/lib/util'
|
||||||
import { addHexPrefixToObjectValues } from '../../../helpers/utils/util'
|
import { addHexPrefixToObjectValues } from '../../../helpers/utils/util'
|
||||||
|
|
||||||
export function constructTxParams({
|
export function constructTxParams({
|
||||||
@ -71,7 +71,7 @@ export function constructUpdatedTx({
|
|||||||
.call(
|
.call(
|
||||||
ethAbi.rawEncode(
|
ethAbi.rawEncode(
|
||||||
['address', 'uint256'],
|
['address', 'uint256'],
|
||||||
[to, ethUtil.addHexPrefix(amount)],
|
[to, addHexPrefix(amount)],
|
||||||
),
|
),
|
||||||
(x) => `00${x.toString(16)}`.slice(-2),
|
(x) => `00${x.toString(16)}`.slice(-2),
|
||||||
)
|
)
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
import ethUtil from 'ethereumjs-util'
|
|
||||||
import {
|
import {
|
||||||
conversionUtil,
|
conversionUtil,
|
||||||
multiplyCurrencies,
|
multiplyCurrencies,
|
||||||
} from '../../helpers/utils/conversion-util'
|
} from '../../helpers/utils/conversion-util'
|
||||||
|
import { addHexPrefix } from '../../../../app/scripts/lib/util'
|
||||||
|
|
||||||
const MIN_GAS_PRICE_DEC = '0'
|
const MIN_GAS_PRICE_DEC = '0'
|
||||||
const MIN_GAS_PRICE_HEX = parseInt(MIN_GAS_PRICE_DEC, 10).toString(16)
|
const MIN_GAS_PRICE_HEX = parseInt(MIN_GAS_PRICE_DEC, 10).toString(16)
|
||||||
const MIN_GAS_LIMIT_DEC = '21000'
|
const MIN_GAS_LIMIT_DEC = '21000'
|
||||||
const MIN_GAS_LIMIT_HEX = parseInt(MIN_GAS_LIMIT_DEC, 10).toString(16)
|
const MIN_GAS_LIMIT_HEX = parseInt(MIN_GAS_LIMIT_DEC, 10).toString(16)
|
||||||
|
|
||||||
const MIN_GAS_PRICE_GWEI = ethUtil.addHexPrefix(
|
const MIN_GAS_PRICE_GWEI = addHexPrefix(
|
||||||
conversionUtil(MIN_GAS_PRICE_HEX, {
|
conversionUtil(MIN_GAS_PRICE_HEX, {
|
||||||
fromDenomination: 'WEI',
|
fromDenomination: 'WEI',
|
||||||
toDenomination: 'GWEI',
|
toDenomination: 'GWEI',
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import abi from 'ethereumjs-abi'
|
import abi from 'ethereumjs-abi'
|
||||||
import ethUtil from 'ethereumjs-util'
|
|
||||||
import {
|
import {
|
||||||
addCurrencies,
|
addCurrencies,
|
||||||
conversionUtil,
|
conversionUtil,
|
||||||
@ -10,6 +9,7 @@ import {
|
|||||||
} from '../../helpers/utils/conversion-util'
|
} from '../../helpers/utils/conversion-util'
|
||||||
|
|
||||||
import { calcTokenAmount } from '../../helpers/utils/token-util'
|
import { calcTokenAmount } from '../../helpers/utils/token-util'
|
||||||
|
import { addHexPrefix } from '../../../../app/scripts/lib/util'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
BASE_TOKEN_GAS_COST,
|
BASE_TOKEN_GAS_COST,
|
||||||
@ -242,7 +242,7 @@ async function estimateGasForSend({
|
|||||||
blockGasLimit = MIN_GAS_LIMIT_HEX
|
blockGasLimit = MIN_GAS_LIMIT_HEX
|
||||||
}
|
}
|
||||||
|
|
||||||
paramsForGasEstimate.gas = ethUtil.addHexPrefix(
|
paramsForGasEstimate.gas = addHexPrefix(
|
||||||
multiplyCurrencies(blockGasLimit, 0.95, {
|
multiplyCurrencies(blockGasLimit, 0.95, {
|
||||||
multiplicandBase: 16,
|
multiplicandBase: 16,
|
||||||
multiplierBase: 10,
|
multiplierBase: 10,
|
||||||
@ -259,7 +259,7 @@ async function estimateGasForSend({
|
|||||||
blockGasLimit,
|
blockGasLimit,
|
||||||
1.5,
|
1.5,
|
||||||
)
|
)
|
||||||
return ethUtil.addHexPrefix(estimateWithBuffer)
|
return addHexPrefix(estimateWithBuffer)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
const simulationFailed =
|
const simulationFailed =
|
||||||
error.message.includes('Transaction execution error.') ||
|
error.message.includes('Transaction execution error.') ||
|
||||||
@ -272,7 +272,7 @@ async function estimateGasForSend({
|
|||||||
blockGasLimit,
|
blockGasLimit,
|
||||||
1.5,
|
1.5,
|
||||||
)
|
)
|
||||||
return ethUtil.addHexPrefix(estimateWithBuffer)
|
return addHexPrefix(estimateWithBuffer)
|
||||||
}
|
}
|
||||||
throw error
|
throw error
|
||||||
}
|
}
|
||||||
@ -336,7 +336,7 @@ function generateTokenTransferData({
|
|||||||
.call(
|
.call(
|
||||||
abi.rawEncode(
|
abi.rawEncode(
|
||||||
['address', 'uint256'],
|
['address', 'uint256'],
|
||||||
[toAddress, ethUtil.addHexPrefix(amount)],
|
[toAddress, addHexPrefix(amount)],
|
||||||
),
|
),
|
||||||
(x) => `00${x.toString(16)}`.slice(-2),
|
(x) => `00${x.toString(16)}`.slice(-2),
|
||||||
)
|
)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { addHexPrefix } from 'ethereumjs-util'
|
import { addHexPrefix } from '../../../app/scripts/lib/util'
|
||||||
import {
|
import {
|
||||||
conversionUtil,
|
conversionUtil,
|
||||||
multiplyCurrencies,
|
multiplyCurrencies,
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { stripHexPrefix, addHexPrefix } from 'ethereumjs-util'
|
import { stripHexPrefix } from 'ethereumjs-util'
|
||||||
import { createSelector } from 'reselect'
|
import { createSelector } from 'reselect'
|
||||||
|
import { addHexPrefix } from '../../../app/scripts/lib/util'
|
||||||
import { NETWORK_TYPES } from '../helpers/constants/common'
|
import { NETWORK_TYPES } from '../helpers/constants/common'
|
||||||
import {
|
import {
|
||||||
shortenAddress,
|
shortenAddress,
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import abi from 'human-standard-token-abi'
|
import abi from 'human-standard-token-abi'
|
||||||
import pify from 'pify'
|
import pify from 'pify'
|
||||||
import ethUtil from 'ethereumjs-util'
|
|
||||||
import log from 'loglevel'
|
import log from 'loglevel'
|
||||||
import { capitalize } from 'lodash'
|
import { capitalize } from 'lodash'
|
||||||
import getBuyEthUrl from '../../../app/scripts/lib/buy-eth-url'
|
import getBuyEthUrl from '../../../app/scripts/lib/buy-eth-url'
|
||||||
@ -17,7 +16,7 @@ import { ENVIRONMENT_TYPE_NOTIFICATION } from '../../../app/scripts/lib/enums'
|
|||||||
import { hasUnconfirmedTransactions } from '../helpers/utils/confirm-tx.util'
|
import { hasUnconfirmedTransactions } from '../helpers/utils/confirm-tx.util'
|
||||||
import { setCustomGasLimit } from '../ducks/gas/gas.duck'
|
import { setCustomGasLimit } from '../ducks/gas/gas.duck'
|
||||||
import txHelper from '../../lib/tx-helper'
|
import txHelper from '../../lib/tx-helper'
|
||||||
import { getEnvironmentType } from '../../../app/scripts/lib/util'
|
import { getEnvironmentType, addHexPrefix } from '../../../app/scripts/lib/util'
|
||||||
import {
|
import {
|
||||||
getPermittedAccountsForCurrentTab,
|
getPermittedAccountsForCurrentTab,
|
||||||
getSelectedAddress,
|
getSelectedAddress,
|
||||||
@ -791,12 +790,10 @@ export function signTokenTx(tokenAddress, toAddress, amount, txData) {
|
|||||||
return (dispatch) => {
|
return (dispatch) => {
|
||||||
dispatch(showLoadingIndication())
|
dispatch(showLoadingIndication())
|
||||||
const token = global.eth.contract(abi).at(tokenAddress)
|
const token = global.eth.contract(abi).at(tokenAddress)
|
||||||
token
|
token.transfer(toAddress, addHexPrefix(amount), txData).catch((err) => {
|
||||||
.transfer(toAddress, ethUtil.addHexPrefix(amount), txData)
|
dispatch(hideLoadingIndication())
|
||||||
.catch((err) => {
|
dispatch(displayWarning(err.message))
|
||||||
dispatch(hideLoadingIndication())
|
})
|
||||||
dispatch(displayWarning(err.message))
|
|
||||||
})
|
|
||||||
dispatch(showConfTxPage())
|
dispatch(showConfTxPage())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2495,7 +2492,7 @@ export function loadingMethodDataFinished() {
|
|||||||
|
|
||||||
export function getContractMethodData(data = '') {
|
export function getContractMethodData(data = '') {
|
||||||
return (dispatch, getState) => {
|
return (dispatch, getState) => {
|
||||||
const prefixedData = ethUtil.addHexPrefix(data)
|
const prefixedData = addHexPrefix(data)
|
||||||
const fourBytePrefix = prefixedData.slice(0, 10)
|
const fourBytePrefix = prefixedData.slice(0, 10)
|
||||||
const { knownMethodData } = getState().metamask
|
const { knownMethodData } = getState().metamask
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user