Skip to content

Commit

Permalink
Merge pull request #158 from Samourai-Wallet/enh_dojo_txs_caches
Browse files Browse the repository at this point in the history
misc improvements in bitcoind rpc transactions class
  • Loading branch information
kenshin-samourai authored May 15, 2020
2 parents 9d29baa + e90672d commit 4c4def7
Showing 1 changed file with 3 additions and 25 deletions.
28 changes: 3 additions & 25 deletions lib/bitcoind-rpc/transactions.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,9 @@ class Transactions {
*/
constructor() {
// Caches
this.txCache = LRU({
// Maximum number of transactions to store
max: 10000,
// Function used to compute length of item
length: (n, key) => 1,
// Maximum age for items in the cache. Items do not expire
maxAge: Infinity
})

this.prevCache = LRU({
// Maximum number of transactions to store
max: 100000,
max: 20000,
// Function used to compute length of item
length: (n, key) => 1,
// Maximum age for items in the cache. Items do not expire
Expand Down Expand Up @@ -85,19 +76,9 @@ class Transactions {
* @returns {Promise}
*/
async getTransaction(txid, fees) {
const keyCache = `${txid}-${fees ? '1' : '0'}`

// Return transaction from cache when possible
if (this.txCache.has(keyCache))
return this.txCache.get(keyCache)

try {
const tx = await this.rpcClient.getrawtransaction(txid, true)
const ret = await this._prepareTxResult(tx)
// Store the result in cache
if (ret.block && ret.block.hash)
this.txCache.set(txid, ret)
return ret
return this._prepareTxResult(tx, fees)
} catch(e) {
Logger.error(e, 'Bitcoind RPC : Transaction.getTransaction()')
return Promise.reject(errors.generic.GEN)
Expand Down Expand Up @@ -197,10 +178,7 @@ class Transactions {
ptx = this.prevCache.get(inTxid)
} else {
ptx = await this.rpcClient.getrawtransaction(inTxid, true)
if (ptx.blockhash && ptx.confirmations && ptx.blocktime) {
ptx.height = rpcLatestBlock.height - ptx.confirmations + 1
this.prevCache.set(inTxid, ptx)
}
this.prevCache.set(inTxid, ptx)
}

const outpoint = ptx.vout[txin.outpoint.vout]
Expand Down

0 comments on commit 4c4def7

Please sign in to comment.