/// <summary> /// The main method. /// </summary> /// <param name="args">Some arguments.</param> public static void Main(string[] args) { BlockChain.InitializeChain(); if (args.Length >= 1) { Port = int.Parse(args[0]); } if (args.Length >= 2) { name = args[1]; } if (Port > 0) { Server.Start(); } if (name != "Unknown") { Console.WriteLine($"Current user is {name}."); } var selection = 0; while (selection != 4) { switch (selection) { case 1: Console.WriteLine("Please enter the server URL."); var serverUrl = Console.ReadLine(); Client.Connect($"{serverUrl}/{WebSocketUrl}"); break; case 2: Console.WriteLine("Please enter the receiver name."); var receiverName = Console.ReadLine(); Console.WriteLine("Please enter the amount."); var amount = Console.ReadLine(); var transaction = new Transaction { Amount = int.Parse(amount ?? "0"), FromAddress = name, ToAddress = receiverName }; BlockChain.CreateTransaction(transaction); BlockChain.ProcessPendingTransactions(name); Client.Broadcast(JsonConvert.SerializeObject(BlockChain)); break; case 3: Console.WriteLine("Block chain:"); Console.WriteLine(JsonConvert.SerializeObject(BlockChain, Formatting.Indented)); break; } WriteOptions(); var action = Console.ReadLine(); selection = int.Parse(action ?? "-1"); } Client.Close(); }