#!/usr/bin/env python3 """ Quantum Randomness Oracle Node - Main Entry Point """ import argparse import asyncio import signal import sys import os from pathlib import Path # Add the parent directory to the path so we can import from src sys.path.insert(0, str(Path(__file__).parent)) from oracle_service import QuantumRandomnessOracleNode def signal_handler(sig, frame): """Handle graceful shutdown""" print('\nReceived interrupt signal. Shutting down gracefully...') sys.exit(0) async def main(): parser = argparse.ArgumentParser(description='Quantum Randomness Oracle Node') parser.add_argument('--config', type=str, help='Path to configuration file', default='config/oracle_config.json') parser.add_argument('--demo', action='store_true', help='Run in demo mode') args = parser.parse_args() # Register signal handler for graceful shutdown signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) if args.demo: print("Running in demo mode...") from oracle_service import main as demo_main await demo_main() else: if not os.path.exists(args.config): print(f"Configuration file not found: {args.config}") print("Please create a configuration file or use --demo flag") sys.exit(1) try: # Initialize and start the oracle service oracle_node = QuantumRandomnessOracleNode(args.config) print("Quantum Randomness Oracle Node starting...") print(f"Blockchain: {oracle_node.config['blockchain_rpc_url']}") print(f"Contract: {oracle_node.config['contract_address']}") print(f"Oracle Address: {oracle_node.account.address}") # Start the service await oracle_node.start_service() except Exception as e: print(f"Error starting oracle node: {e}") import traceback traceback.print_exc() sys.exit(1) if __name__ == "__main__": asyncio.run(main())