tornado-cli/scripts/updateAllCache.js

83 lines
3.1 KiB
JavaScript

const childProcess = require('child_process');
const fs = require('fs');
const path = require('path');
const config = require('../config');
function getCurrentNetworkName(networkID) {
switch (networkID) {
case 1:
return 'Ethereum';
case 56:
return 'BinanceSmartChain';
case 100:
return 'GnosisChain';
case 137:
return 'Polygon';
case 42161:
return 'Arbitrum';
case 43114:
return 'Avalanche';
case 5:
return 'Goerli';
case 42:
return 'Kovan';
case 10:
return 'Optimism';
default:
return 'testRPC';
}
}
function syncDeposits(currency, amount, rpc) {
return childProcess.spawnSync('node', ['cli.js', 'checkCacheValidity', currency, amount, '--rpc', rpc]);
}
function syncWithdrawals(currency, amount, rpc) {
return childProcess.spawnSync('node', ['cli.js', 'syncEvents', 'withdrawal', currency, amount, '--rpc', rpc]);
}
function checkSyncResult(resultData, networkName, currency, amount, eventType) {
const resultOutput = resultData.output.toString();
if (resultData.error || resultOutput.includes('Error:')) {
console.log(resultOutput);
console.error(`Error while updating cache for ${currency.toUpperCase()} ${amount} ${eventType}s on ${networkName}`);
} else {
console.log(`Successfully updated cache for ${currency.toUpperCase()} ${amount} ${eventType}s on ${networkName}`);
}
}
function main() {
for (const [networkIDInfo, network] of Object.entries(config.deployments)) {
const networkID = Number(networkIDInfo.match(/\d+/)[0]);
const networkName = getCurrentNetworkName(networkID);
const defaultRpc = network.defaultRpc;
for (const [currency, _data] of Object.entries(network.tokens)) {
for (const amount of Object.keys(_data.instanceAddress)) {
console.log(`\nStart updating cache for ${currency.toUpperCase()} ${amount} deposits on ${networkName}`);
const depositsFile = path.join('cache', networkName.toLowerCase(), `deposits_${currency.toUpperCase()}_${amount}.json`);
let depositSyncResult = syncDeposits(currency, amount, defaultRpc);
// If deposit events tree has invalid root, need to reload it all from deployment block
if (depositSyncResult.output.includes('invalid root')) {
console.log(
`Events tree for ${currency.toUpperCase()} ${amount} ${eventType}s on ${networkName} has invalid root. Start full reloading.`
);
fs.rmSync(depositsFile);
depositSyncgResult = syncDeposits(currency, amount, defaultRpc);
}
checkSyncResult(depositSyncResult, networkName, currency, amount, 'deposit');
console.log(`\nStart updating cache for ${currency.toUpperCase()} ${amount} withdrawals on ${networkName}`);
const withdrawalSyncResult = syncWithdrawals(currency, amount, defaultRpc);
checkSyncResult(withdrawalSyncResult, networkName, currency, amount, 'withdrawal');
}
}
}
console.log('\nAll event trees cache updated!\n');
}
main();