// Update preloader var assert = require('assert'); var dns = require('dns'); var net = require('net'); var path = require('path'); var bcoin = require('../'); var addrs = bcoin.protocol.network.seeds.slice(); var pool = bcoin.pool({ size: 32, redundancy: 1, parallel: 4000, loadWindow: 750, createConnection: function() { console.log('connecting...'); return net.connect(8333, addrs[(Math.random() * addrs.length) | 0]); } }); pool.on('error', function() {}); console.log('Updating bcoin preloaded chain...'); pool.on('block', function(block) { console.log('Got: %s from %s chain len %d orp %d act %d queue %d', block.hash('hex'), new Date(block.ts * 1000).toString(), pool.chain.index.hashes.length, pool.chain.orphan.count, pool.request.active, pool.request.queue.length); }); pool.on('addr', function(data) { if (data.port !== 8333) return; console.log('Found new peer: %s', data.host); addrs.push(data.address); }); pool.once('full', finish); process.once('SIGINT', finish); var once = false; function finish() { if (once) return; once = true; console.log('Done...'); var chain = '// Autogenerated, use scripts/update.js to update\n' + 'module.exports = ' + JSON.stringify(pool.chain.toJSON(), null, 2) + '\n'; var file = path.resolve(__dirname, '..', 'lib', 'bcoin', 'protocol', 'preload.js'); require('fs').writeFileSync(file, chain); pool.destroy(); }