30 lines
789 B
JavaScript
30 lines
789 B
JavaScript
const logger = require('../logger')('web3Cache')
|
|
const { readCacheFile, writeFile } = require('./file')
|
|
const { web3Home } = require('./web3')
|
|
|
|
let isDirty = false
|
|
|
|
const homeTxSendersCacheFile = './cache/homeTxSenders.json'
|
|
const cachedHomeTxSenders = readCacheFile(homeTxSendersCacheFile) || {}
|
|
|
|
async function getHomeTxSender(txHash) {
|
|
if (!cachedHomeTxSenders[txHash]) {
|
|
logger.debug(`Fetching sender for tx ${txHash}`)
|
|
cachedHomeTxSenders[txHash] = (await web3Home.eth.getTransaction(txHash)).from.toLowerCase()
|
|
isDirty = true
|
|
}
|
|
return cachedHomeTxSenders[txHash]
|
|
}
|
|
|
|
function saveCache() {
|
|
if (isDirty) {
|
|
logger.debug('Saving cache on disk')
|
|
writeFile(homeTxSendersCacheFile, cachedHomeTxSenders)
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
getHomeTxSender,
|
|
saveCache
|
|
}
|