Files
ringnet/index.js
2025-06-14 00:46:35 +02:00

75 líneas
2.7 KiB
JavaScript

#!/usr/bin/env node
import chalk from 'chalk';
const args = process.argv.slice(2);
if (args.length === 0 || args.includes('--help')) {
console.log(`
${chalk.blue.bold('🔗 Ring Network - Two Ring Topology with WebRTC')}
A decentralized network implementation using WebRTC for peer-to-peer communication
in a double ring topology with optional Oracle nodes.
${chalk.green('Usage:')}
npm start - Show this help
npm run start:node [opts] - Start a regular network node
npm run start:oracle [opts] - Start an Oracle node
node node.js [opts] - Start a regular network node directly
node oracle.js [opts] - Start an Oracle node directly
${chalk.yellow('Options:')}
--port <port> Port to listen on (default: random)
--id <id> Node ID (default: auto-generated)
--bootstrap <addr> Bootstrap node address (host:port)
--position <pos> Initial ring position (default: 0)
${chalk.cyan('Examples:')}
# Start first node (bootstrap)
npm run start:oracle -- --port 8080
# Start second node connecting to first
npm run start:node -- --port 8081 --bootstrap localhost:8080
# Start third node (oracle) connecting to network
npm run start:oracle -- --port 8082 --bootstrap localhost:8080
${chalk.magenta('Network Features:')}
✅ Double ring topology (inner and outer rings)
✅ WebRTC peer-to-peer connections
✅ Automatic peer discovery and connection
✅ Message routing through rings
✅ Oracle nodes with enhanced capabilities
✅ Distributed data storage (Oracle)
✅ Consensus mechanisms (Oracle)
✅ Network health monitoring (Oracle)
✅ Advanced routing strategies (Oracle)
${chalk.blue('Oracle Services:')}
🔮 network-analysis - Analyze network topology and health
🔮 data-storage - Distributed data storage with replication
🔮 consensus - Consensus mechanisms for decisions
🔮 routing - Advanced routing strategies
🔮 health-check - Network health monitoring
🔮 network-metrics - Collect and provide metrics
${chalk.red('Quick Start:')}
1. Install dependencies: npm install
2. Start first Oracle: npm run start:oracle -- --port 8080
3. Start regular node: npm run start:node -- --port 8081 --bootstrap localhost:8080
4. Start more nodes by repeating step 3 with different ports
For more information, see the README.md file.
`);
process.exit(0);
}
// If specific arguments are passed, delegate to appropriate script
if (args.includes('--oracle')) {
console.log(chalk.yellow('🔮 Starting Oracle Node...'));
import('./oracle.js');
} else {
console.log(chalk.blue('🔗 Starting Regular Node...'));
import('./node.js');
}