tokenbridge/monitor/utils/web3Cache.js
2020-10-29 11:25:43 +03:00

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
}