示例#1
0
 private BlockDto MapBlockToDto(BlockWithTransactions b)
 {
     return(new BlockDto
     {
         BlockHeight = (long)b.Number.Value,
         BlockHash = b.BlockHash,
         TimeStamp = b.Timestamp.ToString(),
         TransactionCount = b.TransactionCount()
     });
 }
        public void BlockWithTransactions_TransactionCount_Returns_Number_Of_Transactions()
        {
            var blockWithTransactions = new BlockWithTransactions {
                Transactions = new []
                {
                    new Transaction()
                }
            };

            Assert.Equal(blockWithTransactions.Transactions.Length, blockWithTransactions.TransactionCount());
        }
            public async Task When_Reprocessing_The_Previous_Block_Will_Ignore_Transactions_Already_Processed()
            {
                //execute same block twice
                await BlockProcessor.ProcessBlockAsync(BlockNumber);

                await BlockProcessor.ProcessBlockAsync(BlockNumber);

                //assert
                MockTransactionProcessor
                .Verify(b => b.ProcessTransactionAsync(_stubBlock, It.IsAny <Transaction>()),
                        Times.Exactly(_stubBlock.TransactionCount()));
            }
示例#4
0
        public static MultiDimDictList errors = new MultiDimDictList(); //Keeps all the hashes that failed
        static void Main(string[] args)
        {
            string path           = @"C:\Users\jsveistrup\source\repos\QuorumResults\QuorumResults\";
            string fileName       = "5slaves_1000users_puretrans-200003-300002_1.xml";
            string outputFileName = "1000users_puretrans_part7";
            string nodeIp         = "51.141.118.214";

            if (args.Length != 0)
            {
                path           = args[0];
                fileName       = args[1];
                outputFileName = args[2];
                nodeIp         = args[3];
            }
            else
            {
                Console.WriteLine("No args has been inputed. Defaults loaded.");
            }


            Console.WriteLine("Starting: " + DateTime.Now);

            ArrayList inputs  = getHashsesAndTimestamps(path + fileName);
            ArrayList results = new ArrayList();


            var web3 = new Web3("http://" + nodeIp + ":22000");

            Console.WriteLine("Number of hashses found: " + inputs.Count.ToString());

            /*loops through all hashes in the result file and prepares the output array*/
            foreach (Result rsObj in inputs)
            {
                Boolean       skipToNextItem = false;
                HexBigInteger hexBlockNum    = getBlockNum(rsObj.hash, web3).Result;
                if (hexBlockNum != null)
                {
                    rsObj.blockNumber = (int)hexBlockNum.ToUlong();
                }
                else
                {
                    continue; //Error, and therefor skip to next item
                }


                /*Check if the block already has been retrieved */
                foreach (Result obj in results)
                {
                    if (obj.blockNumber == rsObj.blockNumber)
                    {
                        rsObj.txPerBlock     = obj.txPerBlock;
                        rsObj.minedTimestamp = obj.minedTimestamp;
                        break;
                    }
                    else
                    {
                        BlockWithTransactions bc = getTransactions(hexBlockNum, web3).Result;
                        if (bc != null)
                        {
                            rsObj.txPerBlock = bc.TransactionCount();
                            ulong ts = bc.Timestamp.ToUlong() * 1000; //multipies with 1000 to match format of sent timestamp
                            rsObj.minedTimestamp = ts.ToString();
                        }
                        else
                        {
                            skipToNextItem = true;
                            break;
                        }
                    }
                }

                //First time
                if (results.Count == 0)
                {
                    BlockWithTransactions bc = getTransactions(hexBlockNum, web3).Result;
                    rsObj.txPerBlock = bc.TransactionCount();
                    ulong ts = bc.Timestamp.ToUlong() * 1000; //multipies with 1000 to match format of sent timestamp
                    rsObj.minedTimestamp = ts.ToString();
                }

                if (!skipToNextItem)
                {
                    results.Add(rsObj);
                    writeToFile(rsObj, path, outputFileName);
                    Console.WriteLine("Count of results: " + results.Count.ToString() + ". Wrote to file: " + DateTime.Now + ": " + rsObj.hash + ", " + rsObj.sendTimestamp + ", " + rsObj.minedTimestamp + ", " + rsObj.blockNumber + ", " + rsObj.txPerBlock);
                }
                else
                {
                    Console.WriteLine("Error: " + rsObj.hash);
                }
            }

            Console.WriteLine("End: " + DateTime.Now);
        }