Cleaned up some typos and JSDocs in Transactions

Nonce tracker is not fully documented yet.
Have not yet touched:
- tx-state-manager
- tx-state-history-helper
- util
- tx-gas-utils
- pending-tx-tracker
feature/default_network_editable
Dan Finlay 7 years ago
parent e862a5091e
commit 621e9334bc
  1. 10
      app/scripts/controllers/transactions/README.md
  2. 33
      app/scripts/controllers/transactions/index.js
  3. 35
      app/scripts/controllers/transactions/nonce-tracker.js

@ -1,7 +1,7 @@
# Transaction Controller
Transaction Controller is an aggregate of sub-controllers and trackers
composing them in a way to be exposed to the metamask controller
exposed to the MetaMask controller.
- txStateManager
responsible for the state of a transaction and
@ -14,11 +14,11 @@ composing them in a way to be exposed to the metamask controller
- nonceTracker
calculating nonces
## flow digram of processing a transaction
## Flow diagram of processing a transaction
![transaction-flow](../../../../docs/transaction-flow.png)
## txMeta's && txParams
## txMeta's & txParams
A txMeta is the "meta" object it has all the random bits of info we need about a transaction on it. txParams are sacred every thing on txParams gets signed so it must
be a valid key and be hex prefixed except for the network number. Extra stuff must go on the txMeta!
@ -59,8 +59,8 @@ txMeta = {
"value": "0x3b9aca00"
},
...], // I've removed most of history for this
"gasPriceSpecified": false, //weather or not the user/dapp has specified gasPrice
"gasLimitSpecified": false, //weather or not the user/dapp has specified gas
"gasPriceSpecified": false, //whether or not the user/dapp has specified gasPrice
"gasLimitSpecified": false, //whether or not the user/dapp has specified gas
"estimatedGas": "5208",
"origin": "MetaMask", //debug
"nonceDetails": {

@ -25,17 +25,18 @@ const log = require('loglevel')
calculating nonces
@param {object} opts -
@property {object} opts.initState initial transaction list default is an empty array
@class
@param {Object} opts
@property {Object} opts.initState initial transaction list default is an empty array
@property {Object} opts.networkStore an observable store for network number
@property {Object} opts.blockTracker
@param {Object} opts.blockTracker - An instance of eth-blocktracker
@property {Object} opts.provider
@param {Object} opts.provider - A network provider.
@property {Object} opts.signTransaction function the signs an ethereumjs-tx
@property {function} opts.getGasPrice optional gas price calculator
@property {function} opts.signTransaction ethTx signer that returns a rawTx
@property {number} opts.txHistoryLimit number *optional* for limiting how many transactions are in state
@property {Object} opts.preferencesStore
@class
*/
class TransactionController extends EventEmitter {
@ -103,21 +104,21 @@ class TransactionController extends EventEmitter {
this.emit(`${txMeta.id}:unapproved`, txMeta)
}
/**
/**
wipes the transactions for a given account
@param address {string} - hex string of the from address for txs being removed
*/
@param {string} address - hex string of the from address for txs being removed
*/
wipeTransactions (address) {
this.txStateManager.wipeTransactions(address)
}
/**
add a new unapproved transaction to the pipeline
@returns {promise}
@param txParams {object} - txParams for the transaction
@param opts {object} - with the key origin to put the origin on the txMeta
/**
add a new unapproved transaction to the pipeline
*/
@returns {promise}
@param txParams {Object} - txParams for the transaction
@param opts {Object} - with the key origin to put the origin on the txMeta
*/
async newUnapprovedTransaction (txParams, opts = {}) {
log.debug(`MetaMaskController newUnapprovedTransaction ${JSON.stringify(txParams)}`)
const initialTxMeta = await this.addUnapprovedTransaction(txParams)
@ -171,7 +172,7 @@ add a new unapproved transaction to the pipeline
}
/**
adds the tx gas defaults: gas && gasPrice
@param txMeta {object} - the txMeta object
@param txMeta {Object} - the txMeta object
@returns {promise} resolves with txMeta
*/
async addTxGasDefaults (txMeta) {
@ -211,7 +212,7 @@ add a new unapproved transaction to the pipeline
/**
updates the txMeta in the txStateManager
@param txMeta {object} - the updated txMeta
@param txMeta {Object} - the updated txMeta
*/
async updateTransaction (txMeta) {
this.txStateManager.updateTx(txMeta, 'confTx: user updated transaction')
@ -219,7 +220,7 @@ add a new unapproved transaction to the pipeline
/**
updates and approves the transaction
@param txMeta {object}
@param txMeta {Object}
*/
async updateAndApproveTransaction (txMeta) {
this.txStateManager.updateTx(txMeta, 'confTx: user approved transaction')

@ -2,12 +2,12 @@ const EthQuery = require('ethjs-query')
const assert = require('assert')
const Mutex = require('await-semaphore').Mutex
/**
@param opts {object} -
@param opts {Object} -
@property {Object} opts.provider a ethereum provider
@property {function} opts.getPendingTransactions a function that returns an array of txMeta
whos status is `submitted`
@property {function} opts.getConfirmedTransactions a function that returns an array of txMeta
whos status is `confirmed`
@property {Function} opts.getPendingTransactions a function that returns an array of txMeta
whosee status is `submitted`
@property {Function} opts.getConfirmedTransactions a function that returns an array of txMeta
whose status is `confirmed`
@class
*/
class NonceTracker {
@ -21,7 +21,7 @@ class NonceTracker {
}
/**
@returns {object} with the key releaseLock (the gloabl mutex)
@returns {Promise<Object>} with the key releaseLock (the gloabl mutex)
*/
async getGlobalLock () {
const globalMutex = this._lookupMutex('global')
@ -31,17 +31,18 @@ class NonceTracker {
}
/**
this will return an object with the `nextNonce` `nonceDetails` which is an
object with:
highestLocallyConfirmed (nonce),
highestSuggested (either the network nonce or the highestLocallyConfirmed nonce),
nextNetworkNonce (the nonce suggested by the network),
and the releaseLock
<br>note: releaseLock must be called after adding signed tx to pending transactions
(or discarding)<br>
@param address {string} the hex string for the address whos nonce we are calculating
@returns {object}
* @typedef NonceDetails
* @property {number} highestLocallyConfirmed - A hex string of the highest nonce on a confirmed transaction.
* @property {number} nextNetworkNonce - The next nonce suggested by the eth_getTransactionCount method.
* @property {number} highetSuggested - The maximum between the other two, the number returned.
*/
/**
this will return an object with the `nextNonce` `nonceDetails` of type NonceDetails, and the releaseLock
Note: releaseLock must be called after adding a signed tx to pending transactions (or discarding).
@param address {string} the hex string for the address whose nonce we are calculating
@returns {Promise<Object>}
*/
async getNonceLock (address) {
// await global mutex free

Loading…
Cancel
Save