UNPKG

int-cli

Version:

INT is the new generation of bottom-up created system of IoT and blockchain

165 lines (164 loc) 6.3 kB
"use strict"; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } Object.defineProperty(exports, "__esModule", { value: true }); var bignumber_js_1 = require("bignumber.js"); exports.BigNumber = bignumber_js_1.BigNumber; __export(require("./serializable")); __export(require("./error_code")); __export(require("./address")); __export(require("./lib/logger_util")); __export(require("./lib/decimal_transfer")); __export(require("./chain")); __export(require("./value_chain")); __export(require("./net")); __export(require("./dbft_chain")); var node_1 = require("./net_tcp/node"); exports.TcpNode = node_1.TcpNode; var node_2 = require("./net_bdt/node"); exports.BdtNode = node_2.BdtNode; var node_3 = require("./net_standalone/node"); exports.StandaloneNode = node_3.StandaloneNode; var chain_creator_1 = require("./chain_creator"); exports.ChainCreator = chain_creator_1.ChainCreator; __export(require("./lib/digest")); __export(require("./lib/encoding")); const fs = require("fs-extra"); const network_1 = require("./block/network"); const chain_creator_2 = require("./chain_creator"); const value_chain_1 = require("./value_chain"); const dbft_chain_1 = require("./dbft_chain"); const logger_util_1 = require("./lib/logger_util"); const node_4 = require("./net_tcp/node"); const node_5 = require("./net_standalone/node"); const net_1 = require("./net"); const node_6 = require("./net_bdt/node"); const random_outbound_network_1 = require("./block/random_outbound_network"); const validators_network_1 = require("./dbft_chain/validators_network"); function initChainCreator(options) { const logger = logger_util_1.initLogger(options); const networkCreator = new network_1.NetworkCreator({ logger }); networkCreator.registerNode('tcp', (commandOptions) => { let network = commandOptions.get('network'); if (!network) { network = 'default'; } let _host = commandOptions.get('host'); if (!_host) { console.error('invalid tcp host'); return; } let port = commandOptions.get('port'); if (!port) { console.error('invalid tcp port'); return; } let peers = commandOptions.get('peers'); if (!peers) { peers = []; } else { peers = peers.split(';'); } let nodeType = net_1.staticPeeridIp.splitInstance(net_1.StaticOutNode(node_4.TcpNode)); return new nodeType(peers, { network, peerid: `${_host}:${port}`, host: _host, port }); }); networkCreator.registerNode('standalone', (commandOptions) => { let network = commandOptions.get('network'); if (!network) { network = 'default'; } let peerid = commandOptions.get('peerid'); if (!peerid) { peerid = 'default'; } return new node_5.StandaloneNode(network, peerid); }); networkCreator.registerNode('bdt', (commandOptions) => { let network = commandOptions.get('network'); if (!network) { network = 'default'; } let _host = commandOptions.get('host'); if (!_host) { console.error('invalid bdt host'); return; } let port = commandOptions.get('port'); if (!port) { console.error('no bdt port'); return; } port = port.split('|'); let udpport = 0; let tcpport = parseInt(port[0]); if (port.length === 1) { udpport = tcpport + 10; } else { udpport = parseInt(port[1]); } if (isNaN(tcpport) || isNaN(udpport)) { console.error('invalid bdt port'); return; } let peerid = commandOptions.get('peerid'); if (!peerid) { peerid = `${_host}:${port}`; } let snPeers = commandOptions.get('sn'); if (!snPeers) { console.error('no sn'); return; } let snconfig = snPeers.split('@'); if (snconfig.length !== 4) { console.error('invalid sn: <SN_PEERID>@<SN_IP>@<SN_TCP_PORT>@<SN_UDP_PORT>'); return; } const snPeer = { peerid: `${snconfig[0]}`, eplist: [ `4@${snconfig[1]}@${snconfig[2]}@t`, `4@${snconfig[1]}@${snconfig[3]}@u` ] }; let bdt_logger = { level: commandOptions.get('bdt_log_level') || 'info', // 设置log目录 file_dir: commandOptions.get('dataDir') + '/log', file_name: commandOptions.get('bdt_log_name') || 'bdt', }; let dhtAppID = 0; if (commandOptions.has('networkid')) { dhtAppID = parseInt(commandOptions.get('networkid')); if (isNaN(dhtAppID)) { dhtAppID = 0; } } let initDHTEntry; const initDHTFile = commandOptions.get('dataDir') + '/peers'; if (fs.pathExistsSync(initDHTFile)) { initDHTEntry = fs.readJSONSync(initDHTFile); } return new node_6.BdtNode({ network, host: _host, tcpport, udpport, peerid, snPeer, dhtAppID, bdtLoggerOptions: bdt_logger, initDHTEntry }); }); networkCreator.registerNetwork('random', random_outbound_network_1.RandomOutNetwork); networkCreator.registerNetwork('validators', validators_network_1.ValidatorsNetwork); let _creator = new chain_creator_2.ChainCreator({ logger, networkCreator }); _creator.registerChainType('dbft', { newHandler(creator, typeOptions) { return new value_chain_1.ValueHandler(); }, newChain(creator, dataDir, config) { return new dbft_chain_1.DbftChain({ networkCreator, logger: creator.logger, handler: config.handler, dataDir, globalOptions: config.globalOptions }); }, newMiner(creator, dataDir, config) { return new dbft_chain_1.DbftMiner({ networkCreator, logger: creator.logger, handler: config.handler, dataDir, globalOptions: config.globalOptions }); } }); return _creator; } exports.initChainCreator = initChainCreator; __export(require("./chain_debuger"));