flosight-api/lib/node/index.js

65 lines
1.4 KiB
JavaScript

const FullNode = require('bcoin/lib/node/fullnode');
const logger = require('../../lib/logger');
const BlockParser = require('../parser').Block;
const TxParser = require('../parser').Transaction;
const addrParser = require('../parser').Address;
const config = require('../../config');
const io = require('../api').io;
const node = new FullNode(config.bcoin);
// Hacky move this to config
let refreshBlocks = false;
// Super Hacky but better than inline Maths.
setInterval(() => {
refreshBlocks = true;
}, 5000); // Only refresh sockets after 5s passes
function start() {
node.open()
.then(() => {
node.connect()
.then(() => {
node.startSync();
});
});
node.chain.on('connect', (entry, block) => {
logger.log('debug',
'New Block & Ledger Entry');
BlockParser.parse(entry, block);
TxParser.parse(entry, block.txs);
addrParser.parse(entry, block.txs);
if (refreshBlocks) {
refreshBlocks = false;
io.sockets.emit('block', {
hash: block.toJSON().hash,
});
}
});
node.pool.on('peer', (peer) => {
// console.log(peer);
});
node.on('error', (err) => {
logger.log('error',
`${err}`);
});
// node.mempool.on('tx' ...)
}
// Super Hack
function setSocket(client) {
console.log('setting socket for node');
//socket = client;
}
module.exports = {
start,
};