aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/lib/tx-utils.js
diff options
context:
space:
mode:
authorfrankiebee <frankie.diamond@gmail.com>2017-09-06 11:33:50 +0800
committerfrankiebee <frankie.diamond@gmail.com>2017-09-06 11:33:50 +0800
commit00bd5b143ffc13ac0a48f2049f61f26082af12c8 (patch)
tree2f30cd2af81d0a79dba403fe3d0241f50f907bca /app/scripts/lib/tx-utils.js
parent4c554f32eca5ceda2d525b967075ec2b6ff41809 (diff)
downloadtangerine-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.js89
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