ganache-core merged my PR, so I changed some comments to clarify that ganache-core v2.2.1 and below will return the non-standard '0x0'

feature/default_network_editable
Howard Braham 6 years ago
parent 222e62d7f1
commit 4cc0b1ef01
  1. 11
      app/scripts/controllers/transactions/tx-gas-utils.js
  2. 2
      old-ui/app/components/pending-tx.js
  3. 2
      ui/app/components/send/send.utils.js
  4. 2
      ui/app/helpers/transactions.util.js

@ -63,14 +63,15 @@ class TxGasUtil {
const hasRecipient = Boolean(recipient) const hasRecipient = Boolean(recipient)
if (hasRecipient) { if (hasRecipient) {
let code = await this.query.getCode(recipient) const code = await this.query.getCode(recipient)
// If there's data in the params, but there's no code, it's not a valid contract // If there's data in the params, but there's no code, it's not a valid contract
// For no code, Infura will return '0x', and Ganache will return '0x0' // For no code, Infura will return '0x', and ganache-core v2.2.1 will return '0x0'
if (txParams.data && (!code || code === '0x' || code === '0x0')) { if (txParams.data && (!code || code === '0x' || code === '0x0')) {
throw {errorKey: TRANSACTION_NO_CONTRACT_ERROR_KEY} const err = new Error()
} err.errorKey = TRANSACTION_NO_CONTRACT_ERROR_KEY
else if (!code) { throw err
} else if (!code) {
txParams.gas = SIMPLE_GAS_COST // For a standard ETH send, gas is 21k max txParams.gas = SIMPLE_GAS_COST // For a standard ETH send, gas is 21k max
txMeta.simpleSend = true // Prevents buffer addition txMeta.simpleSend = true // Prevents buffer addition
return SIMPLE_GAS_COST return SIMPLE_GAS_COST

@ -489,7 +489,7 @@ PendingTx.prototype.verifyGasParams = function () {
} }
PendingTx.prototype._notZeroOrEmptyString = function (obj) { PendingTx.prototype._notZeroOrEmptyString = function (obj) {
return obj !== '' && obj !== '0x0' && obj !== '0x' // The '0x' case might not ever happen, but it seems safest to protect against it return obj !== '' && obj !== '0x0' && obj !== '0x' // '0x' means null
} }
PendingTx.prototype.bnMultiplyByFraction = function (targetBN, numerator, denominator) { PendingTx.prototype.bnMultiplyByFraction = function (targetBN, numerator, denominator) {

@ -215,7 +215,7 @@ async function estimateGas ({
// if recipient has no code, gas is 21k max: // if recipient has no code, gas is 21k max:
if (!selectedToken && !data) { if (!selectedToken && !data) {
const code = Boolean(to) && await global.eth.getCode(to) const code = Boolean(to) && await global.eth.getCode(to)
if (!code || code === '0x' || code === '0x0') { // Infura will return '0x', and Ganache will return '0x0' if (!code || code === '0x' || code === '0x0') { // Infura will return '0x', and ganache-core v2.2.1 will return '0x0'
return SIMPLE_GAS_COST return SIMPLE_GAS_COST
} }
} else if (selectedToken && !to) { } else if (selectedToken && !to) {

@ -114,7 +114,7 @@ export function getLatestSubmittedTxWithNonce (transactions = [], nonce = '0x0')
export async function isSmartContractAddress (address) { export async function isSmartContractAddress (address) {
const code = await global.eth.getCode(address) const code = await global.eth.getCode(address)
return code && code !== '0x' && code !== '0x0'; // Infura will return '0x', and Ganache will return '0x0' return code && code !== '0x' && code !== '0x0' // Infura will return '0x', and ganache-core v2.2.1 will return '0x0'
} }
export function sumHexes (...args) { export function sumHexes (...args) {

Loading…
Cancel
Save