fibos-tracker
Version:
a tracking data and api service based on FIBOS/EOS blockchain nodes.
41 lines (33 loc) • 1.78 kB
JavaScript
// [clean env]
const http = require('http');
//[fibos-tracker]
const Tracker = require("fibos-tracker");
// const Tracker = require("./lib/");
Tracker.Config.DBconnString = "mysql://root:123456@127.0.0.1/replay_data";
// Tracker.Config.DBconnString = "mysql://root:123456@127.0.0.1/fibos_chain";
const tracker = new Tracker();
let replayStatrBn = 1005000;
let endBn = 2995739;
while (replayStatrBn < endBn) {
tracker.app.db(db => {
console.time(`[replay block on:${replayStatrBn} ] use`);
let blocks = db.driver.execQuerySync(`select * from fibos_transactions where id > ? order by id limit 1000`, [replayStatrBn]);
if (!blocks.length) return;
db.trans(() => {
blocks.forEach(bk => {
let trx = JSON.parse(bk.rawData.toString());
trx.action_traces.forEach(m => { saveActions(m); })
function saveActions(m, p_id) {
let _m = JSON.parse(JSON.stringify(m));
delete _m.inline_traces;
if (_m.receipt.receiver !== _m.act.account) return;
if (db.models.fibos_actions.oneSync({ trx_id: _m.trx_id, global_sequence: _m.receipt.global_sequence })) return;
let c_id = db.driver.execQuerySync(`insert into fibos_actions(trx_id,global_sequence,contract_action,rawData,parent_id,transaction_id) values(?,?,?,?,?,?)`, [_m.trx_id, _m.receipt.global_sequence, _m.act.account + "/" + _m.act.name, JSON.stringify(_m), p_id, bk.id]).insertId;
m.inline_traces.forEach(_m => { saveActions(_m, c_id); })
}
})
})
console.timeEnd(`[replay block on:${replayStatrBn} ] use`);
replayStatrBn = blocks[blocks.length - 1].id;
})
}