#!/usr/bin/env node 'use strict'; Buffer.poolSize = 0; process.title = 'hsd'; if (process.argv.indexOf('--help') !== -1 || process.argv.indexOf('-h') !== -1) { console.error('See the hsd docs at:'); console.error('https://handshake-org.github.io'); process.exit(1); } if (process.argv.indexOf('--version') !== -1 || process.argv.indexOf('-v') !== -1) { const pkg = require('../package.json'); console.log(pkg.version); process.exit(0); } const FullNode = require('../lib/node/fullnode'); const node = new FullNode({ config: true, argv: true, env: true, logFile: true, logConsole: true, logLevel: 'debug', memory: false, workers: true, listen: false, network: 'main', loader: require }); // Temporary hack if (!node.config.bool('no-wallet') && !node.has('walletdb')) { const plugin = require('../lib/wallet/plugin'); node.use(plugin); } process.on('unhandledRejection', (err, promise) => { throw err; }); process.on('SIGINT', async () => { await node.close(); }); node.on('abort', async (err) => { const timeout = setTimeout(() => { console.error('Shutdown is taking a long time. Exiting.'); process.exit(3); }, 5000); timeout.unref(); try { console.error('Shutting down...'); await node.close(); clearTimeout(timeout); console.error(err.stack); process.exit(2); } catch (e) { console.error(`Error occurred during shutdown: ${e.message}`); process.exit(3); } }); (async () => { await node.ensure(); await node.open(); await node.connect(); node.startSync(); })().catch((err) => { console.error(err.stack); process.exit(1); });