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); }
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 })); }
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)); }
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)); }
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)); }
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)); }
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); }