コード例 #1
0
        private static TxnModel ConvertTxnModel(Transaction txn)
        {
            TxnModel mdl = new TxnModel
            {
                Hash      = txn.Hash,
                Recipient = txn.Recipient,
                Sender    = txn.Sender,
                Fee       = txn.Fee,
                Amount    = txn.Amount,
                Height    = txn.Height,
                TimeStamp = txn.TimeStamp,
            };

            return(mdl);
        }
コード例 #2
0
        public override Task <TxnResponse> GetTxnByHash(CommonRequest request, ServerCallContext context)
        {
            var txn = Transaction.GetTxnByHash(request.TxnHash);

            if (txn is null)
            {
                return(Task.FromResult(new TxnResponse()));
            }

            TxnModel mdl = ConvertTxnModel(txn);

            return(Task.FromResult(new TxnResponse
            {
                Txn = mdl
            }));
        }
コード例 #3
0
        public override Task <AccountResponse> GetAccount(CommonRequest request, ServerCallContext context)
        {
            AccountResponse response = new AccountResponse();


            // 1. get all transaction bellong this account
            var transactions = Transaction.GetAccountTransactions(request.Address);

            if (transactions is null)
            {
                response.Transactions.Add(new TxnModel()); //no txn
            }
            else
            {
                foreach (Transaction Txn in transactions)
                {
                    TxnModel mdl = ConvertTxnModel(Txn);
                    response.Transactions.Add(mdl);
                }
            }

            // get Blocks by validator
            var blocks = Blockchain.GetBlocksByValidator(request.Address);

            if (blocks is null)
            {
                response.Blocks.Add(new BlockModel()); //no txn
            }
            else
            {
                response.NumBlockValidate = 0;
                foreach (Block block in blocks)
                {
                    BlockModel mdl = ConvertBlockForList(block);
                    response.Blocks.Add(mdl);
                    // count number of block validated by this account
                    response.NumBlockValidate += 1;
                }
            }

            // Get Account Balance
            var balance = Transaction.GetBalance(request.Address);

            response.Balance = balance;

            return(Task.FromResult(response));
        }
コード例 #4
0
        public override Task <TxnsResponse> GetPendingTxns(PagingRequest request, ServerCallContext context)
        {
            TxnsResponse response     = new TxnsResponse();
            var          transactions = Transaction.GetPendingTransactions(request.PageNumber, request.ResultPerPage);

            if (transactions is null)
            {
                return(Task.FromResult(response));
            }

            foreach (Transaction txn in transactions)
            {
                TxnModel mdl = ConvertTxnModel(txn);
                response.Transactions.Add(mdl);
            }
            return(Task.FromResult(response));
        }
コード例 #5
0
        public override Task <TxnsResponse> GetTxnsByHeight(CommonRequest request, ServerCallContext context)
        {
            TxnsResponse response     = new TxnsResponse();
            var          transactions = Transaction.GetTxnsByHeight(request.BlockHeight);

            if (transactions is null)
            {
                return(Task.FromResult(response));
            }

            foreach (Transaction txn in transactions)
            {
                TxnModel mdl = ConvertTxnModel(txn);
                response.Transactions.Add(mdl);
            }
            return(Task.FromResult(response));
        }
コード例 #6
0
        public override Task <TxnsResponse> GetTxnsByAccount(CommonRequest request, ServerCallContext context)
        {
            var transactions = Transaction.GetAccountTransactions(request.Address);

            if (transactions is null)
            {
                return(Task.FromResult(new TxnsResponse()));
            }

            TxnsResponse response = new TxnsResponse();

            foreach (Transaction Txn in transactions)
            {
                TxnModel mdl = ConvertTxnModel(Txn);
                response.Transactions.Add(mdl);
            }
            return(Task.FromResult(response));
        }
コード例 #7
0
        public static void BuildReport()
        {
            BuildChart();

            var localBcInfo = new BcInfoResponse();

            Console.WriteLine("make report");
            var lastBlock = Blockchain.GetLastBlock();
            var blocks    = Blockchain.GetBlocks();

            var amountTnxs   = 0d;
            var numTnxs      = 0L;
            var amountReward = 0d;
            var transactions = new List <Transaction>();



            if (bcInfo.NumBloks == 0)
            {
                // calculate from begining
                foreach (var block in blocks.FindAll())
                {
                    amountTnxs   += block.TotalAmount;
                    numTnxs      += block.NumOfTx;
                    amountReward += block.TotalReward;
                }
                localBcInfo.AmountTxns   = amountTnxs;
                localBcInfo.NumTxns      = numTnxs;
                localBcInfo.AmountReward = amountReward;
                localBcInfo.NumBloks     = lastBlock.Height;
                localBcInfo.Tps          = (double)lastBlock.NumOfTx / (double)30;

                // add 10 txns
                var trans1 = Transaction.GetTransactions(1, 10);
                if (trans1 is not null)
                {
                    foreach (Transaction txn in trans1)
                    {
                        TxnModel mdl = ConvertTxnModel(txn);
                        localBcInfo.Txns.Add(mdl);
                    }
                }

                // add 10 blocks
                var blocks1 = Blockchain.GetBlocks(1, 10);
                if (blocks1 is not null)
                {
                    foreach (Block block in blocks1)
                    {
                        BlockModel mdl = ConvertBlockForList(block);
                        localBcInfo.Blocks.Add(mdl);
                    }
                }

                bcInfo = localBcInfo;
                Console.WriteLine("== TPS {0}", localBcInfo.Tps);


                return;
            }

            amountTnxs               = (bcInfo.AmountTxns + lastBlock.TotalAmount);
            numTnxs                  = (bcInfo.NumTxns + lastBlock.NumOfTx);
            amountReward             = (bcInfo.AmountReward + lastBlock.TotalReward);
            localBcInfo.AmountTxns   = amountTnxs;
            localBcInfo.NumTxns      = numTnxs;
            localBcInfo.Tps          = (double)lastBlock.NumOfTx / (double)30;
            localBcInfo.AmountReward = amountReward;
            localBcInfo.NumBloks     = lastBlock.Height;


            // add 10 txns
            var trans = Transaction.GetTransactions(1, 10);

            if (trans is not null)
            {
                foreach (Transaction txn in trans)
                {
                    TxnModel mdl = ConvertTxnModel(txn);
                    localBcInfo.Txns.Add(mdl);
                }
            }

            // add 10 blocks
            var blcks = Blockchain.GetBlocks(1, 10);

            if (blocks is not null)
            {
                foreach (Block block in blcks)
                {
                    BlockModel mdl = ConvertBlockForList(block);
                    localBcInfo.Blocks.Add(mdl);
                }
            }
            bcInfo = localBcInfo;
            Console.WriteLine("== TPS {0}", localBcInfo.Tps);
        }