@metamask/nonce-tracker
How metamask calculates nonces
const NonceTracker = require('@metamask/nonce-tracker');
const nonceTracker = new NonceTracker(config);
nonceLock = nonceTracker.getNonceLock('0xselectedEthereumAddress');
nonce = nonceLock.nextNonce;
NonceTracker
index.js:13-159
Parameters
opts
Object {Object}
opts.provider
Object a ethereum provideropts.getPendingTransactions
Function a function that returns an array of txMeta
whose status is submitted
opts.getConfirmedTransactions
Function a function that returns an array of txMeta
whose status is confirmed
opts.blockTracker
getGlobalLock
index.js:27-32
Returns Promise<Object> with the key releaseLock (the gloabl mutex)
getNonceLock
index.js:48-82
Parameters
Properties
highestLocallyConfirmed
number A hex string of the highest nonce on a confirmed transaction.nextNetworkNonce
number The next nonce suggested by the eth_getTransactionCount method.highestSuggested
number The maximum between the other two, the number returned.
this will return an object with the nextNonce
nonceDetails
, and the releaseLock
Note: releaseLock must be called after adding a signed tx to pending transactions (or discarding).
Parameters
address
{string} the hex string for the address whose nonce we are calculating
Returns Promise<NonceDetails>
Running tests
yarn test