flosight-api/lib/node/index.js

58 lines
1.2 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;
}, 10000); // Only refresh sockets after 5s passes
function start() {
node.open()
.then(() => {
node.connect()
.then(() => {
node.startSync();
});
});
node.chain.on('connect', (entry, block) => {
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', (tx) => {
console.log(tx)
});
}
module.exports = {
start,
};