diff options
author | frankiebee <frankie.diamond@gmail.com> | 2017-09-06 11:33:50 +0800 |
---|---|---|
committer | frankiebee <frankie.diamond@gmail.com> | 2017-09-06 11:33:50 +0800 |
commit | 00bd5b143ffc13ac0a48f2049f61f26082af12c8 (patch) | |
tree | 2f30cd2af81d0a79dba403fe3d0241f50f907bca /app/scripts/lib/tx-utils.js | |
parent | 4c554f32eca5ceda2d525b967075ec2b6ff41809 (diff) | |
download | tangerine-wallet-browser-00bd5b143ffc13ac0a48f2049f61f26082af12c8.tar tangerine-wallet-browser-00bd5b143ffc13ac0a48f2049f61f26082af12c8.tar.gz tangerine-wallet-browser-00bd5b143ffc13ac0a48f2049f61f26082af12c8.tar.bz2 tangerine-wallet-browser-00bd5b143ffc13ac0a48f2049f61f26082af12c8.tar.lz tangerine-wallet-browser-00bd5b143ffc13ac0a48f2049f61f26082af12c8.tar.xz tangerine-wallet-browser-00bd5b143ffc13ac0a48f2049f61f26082af12c8.tar.zst tangerine-wallet-browser-00bd5b143ffc13ac0a48f2049f61f26082af12c8.zip |
rename tx-utils.js -> tx-gas-utils.js
Diffstat (limited to 'app/scripts/lib/tx-utils.js')
-rw-r--r-- | app/scripts/lib/tx-utils.js | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/app/scripts/lib/tx-utils.js b/app/scripts/lib/tx-utils.js deleted file mode 100644 index 618f69e1c..000000000 --- a/app/scripts/lib/tx-utils.js +++ /dev/null @@ -1,89 +0,0 @@ -const EthQuery = require('ethjs-query') -const normalize = require('eth-sig-util').normalize -const { - hexToBn, - BnMultiplyByFraction, - bnToHex, -} = require('./util') - -/* -tx-utils are utility methods for Transaction manager -its passed ethquery -and used to do things like calculate gas of a tx. -*/ - -module.exports = class txProvideUtil { - constructor (provider) { - this.query = new EthQuery(provider) - } - - async analyzeGasUsage (txMeta) { - const block = await this.query.getBlockByNumber('latest', true) - let estimatedGasHex - try { - estimatedGasHex = await this.estimateTxGas(txMeta, block.gasLimit) - } catch (err) { - if (err.message.includes('Transaction execution error.')) { - txMeta.simulationFails = true - return txMeta - } - } - this.setTxGas(txMeta, block.gasLimit, estimatedGasHex) - return txMeta - } - - async estimateTxGas (txMeta, blockGasLimitHex) { - const txParams = txMeta.txParams - // check if gasLimit is already specified - txMeta.gasLimitSpecified = Boolean(txParams.gas) - // if not, fallback to block gasLimit - if (!txMeta.gasLimitSpecified) { - const blockGasLimitBN = hexToBn(blockGasLimitHex) - const saferGasLimitBN = BnMultiplyByFraction(blockGasLimitBN, 19, 20) - txParams.gas = bnToHex(saferGasLimitBN) - } - // run tx - return await this.query.estimateGas(txParams) - } - - setTxGas (txMeta, blockGasLimitHex, estimatedGasHex) { - txMeta.estimatedGas = estimatedGasHex - const txParams = txMeta.txParams - - // if gasLimit was specified and doesnt OOG, - // use original specified amount - if (txMeta.gasLimitSpecified) { - txMeta.estimatedGas = txParams.gas - return - } - // if gasLimit not originally specified, - // try adding an additional gas buffer to our estimation for safety - const recommendedGasHex = this.addGasBuffer(txMeta.estimatedGas, blockGasLimitHex) - txParams.gas = recommendedGasHex - return - } - - addGasBuffer (initialGasLimitHex, blockGasLimitHex) { - const initialGasLimitBn = hexToBn(initialGasLimitHex) - const blockGasLimitBn = hexToBn(blockGasLimitHex) - const upperGasLimitBn = blockGasLimitBn.muln(0.9) - const bufferedGasLimitBn = initialGasLimitBn.muln(1.5) - - // if initialGasLimit is above blockGasLimit, dont modify it - if (initialGasLimitBn.gt(upperGasLimitBn)) return bnToHex(initialGasLimitBn) - // if bufferedGasLimit is below blockGasLimit, use bufferedGasLimit - if (bufferedGasLimitBn.lt(upperGasLimitBn)) return bnToHex(bufferedGasLimitBn) - // otherwise use blockGasLimit - return bnToHex(upperGasLimitBn) - } - - async publishTransaction (rawTx) { - return await this.query.sendRawTransaction(rawTx) - } - - async validateTxParams (txParams) { - if (('value' in txParams) && txParams.value.indexOf('-') === 0) { - throw new Error(`Invalid transaction value of ${txParams.value} not a positive number.`) - } - } -}
\ No newline at end of file |