UNPKG

fibos-tracker

Version:

a tracking data and api service based on FIBOS/EOS blockchain nodes.

41 lines (33 loc) 1.78 kB
// [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; }) }