コード例 #1
0
        public static void RunCommand(string commandName, string input)
        {
            blockchain = NetworkFileProvider <Blockchain.Blockchain> .GetModel(Constants.BlockchainStoragePath);

            if (commandName == "connect")
            {
                string template = "{0} -ip {1} -p {2}";
                var    args     = ReverseStringFormat(template, input);
                int    port     = int.Parse(args[2]);

                IPAddress clientIp;

                if (IPAddress.TryParse(args[1], out clientIp))
                {
                    blockchain.RegisterNode($"{clientIp}:{port}");
                    AsynchronousClient.Connect(clientIp, port);
                }
                else
                {
                    Logger.LogLine("incorect command parameters", ConsoleColor.Red);
                }
            }

            if (commandName == "peers")
            {
                if (blockchain.Nodes.Count > 0)
                {
                    foreach (var node in blockchain.Nodes)
                    {
                        Logger.LogLine(node.Address, ConsoleColor.Green);
                    }
                }
                else
                {
                    Logger.LogLine("no peers", ConsoleColor.Red);
                }
            }

            if (commandName == "start-wallet")
            {
                WalletProvider.Initialize();
            }

            if (commandName == "sync")
            {
                var result = blockchain.ResolveConflicts();

                if (result)
                {
                    Logger.LogLine("successfully sync network", ConsoleColor.Green);
                }
                else
                {
                    Logger.LogLine("error while sync network", ConsoleColor.Red);
                }
            }
        }