diff options
author | kumavis <kumavis@users.noreply.github.com> | 2018-05-08 01:48:27 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-08 01:48:27 +0800 |
commit | 0e525370fc7e0653c09f373ec06c87448910730d (patch) | |
tree | 335136cff0953454527ee0b03c0ac88a333e0cd1 /app | |
parent | 096851d091385ee786ab1374e83aaf6a1aa7cbce (diff) | |
parent | a45cb754358ff798dce25fa0b44d6b182abc7692 (diff) | |
download | tangerine-wallet-browser-0e525370fc7e0653c09f373ec06c87448910730d.tar tangerine-wallet-browser-0e525370fc7e0653c09f373ec06c87448910730d.tar.gz tangerine-wallet-browser-0e525370fc7e0653c09f373ec06c87448910730d.tar.bz2 tangerine-wallet-browser-0e525370fc7e0653c09f373ec06c87448910730d.tar.lz tangerine-wallet-browser-0e525370fc7e0653c09f373ec06c87448910730d.tar.xz tangerine-wallet-browser-0e525370fc7e0653c09f373ec06c87448910730d.tar.zst tangerine-wallet-browser-0e525370fc7e0653c09f373ec06c87448910730d.zip |
Merge pull request #4163 from MetaMask/check-nonce-ussage
Check nonce ussage
Diffstat (limited to 'app')
-rw-r--r-- | app/scripts/controllers/transactions/index.js | 15 | ||||
-rw-r--r-- | app/scripts/controllers/transactions/tx-state-manager.js | 2 | ||||
-rw-r--r-- | app/scripts/metamask-controller.js | 1 |
3 files changed, 17 insertions, 1 deletions
diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index 541f1db73..a1588cfef 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -112,6 +112,21 @@ class TransactionController extends EventEmitter { } /** + Check if a txMeta in the list with the same nonce has been confirmed in a block + if the txParams dont have a nonce will return false + @returns {boolean} weather the nonce has been used in a transaction confirmed in a block + @param {object} txMeta - the txMeta object + */ + async isNonceTaken (txMeta) { + const { from, nonce } = txMeta.txParams + if ('nonce' in txMeta.txParams) { + const sameNonceTxList = this.txStateManager.getFilteredTxList({from, nonce, status: 'confirmed'}) + return (sameNonceTxList.length >= 1) + } + return false + } + + /** add a new unapproved transaction to the pipeline @returns {Promise<string>} the hash of the transaction after being submitted to the network diff --git a/app/scripts/controllers/transactions/tx-state-manager.js b/app/scripts/controllers/transactions/tx-state-manager.js index 53428c333..380214c1d 100644 --- a/app/scripts/controllers/transactions/tx-state-manager.js +++ b/app/scripts/controllers/transactions/tx-state-manager.js @@ -262,7 +262,7 @@ class TransactionStateManager extends EventEmitter { */ getTxsByMetaData (key, value, txList = this.getTxList()) { return txList.filter((txMeta) => { - if (txMeta.txParams[key]) { + if (key in txMeta.txParams) { return txMeta.txParams[key] === value } else { return txMeta[key] === value diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index c4a73d8ea..a90acb4d5 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -382,6 +382,7 @@ module.exports = class MetamaskController extends EventEmitter { updateTransaction: nodeify(txController.updateTransaction, txController), updateAndApproveTransaction: nodeify(txController.updateAndApproveTransaction, txController), retryTransaction: nodeify(this.retryTransaction, this), + isNonceTaken: nodeify(txController.isNonceTaken, txController), // messageManager signMessage: nodeify(this.signMessage, this), |