示例#1
0
        public async Task <IEnumerable <TransactionReceipt> > ExecuteAsync(
            BigInteger blockNumber)
        {
            var block = await _ethApiClient.GetBlockAsync
                        (
                blockNumber : blockNumber,
                includeTransactions : true
                        );

            var transactionReceipts = new List <TransactionReceipt>();

            if (block.Transactions != null)
            {
                foreach (var blockTransaction in block.Transactions)
                {
                    if (blockTransaction.To != null && await IsContractAsync(blockTransaction.To))
                    {
                        transactionReceipts.AddRange
                        (
                            await GetInternalTransactionReceiptsAsync
                            (
                                blockTransaction.TransactionHash,
                                block.Timestamp
                            )
                        );
                    }
                    else
                    {
                        transactionReceipts.Add(new TransactionReceipt
                                                (
                                                    amount: blockTransaction.Value,
                                                    blockNumber: blockNumber,
                                                    from: blockTransaction.From,
                                                    hash: blockTransaction.TransactionHash,
                                                    index: 0,
                                                    timestamp: block.Timestamp,
                                                    to: blockTransaction.To
                                                ));
                    }
                }
            }

            return(transactionReceipts);
        }
        public async Task <IEnumerable <TransactionReceipt> > ExecuteAsync(
            BigInteger blockNumber)
        {
            var block = await _ethApiClient.GetBlockAsync
                        (
                blockNumber : blockNumber,
                includeTransactions : true
                        );

            var transactionReceipts = block.Transactions?.Select(x => new TransactionReceipt
                                                                 (
                                                                     amount: x.Value,
                                                                     blockNumber: blockNumber,
                                                                     from: x.From,
                                                                     hash: x.TransactionHash,
                                                                     index: x.TransactionIndex ?? 0,
                                                                     timestamp: block.Timestamp,
                                                                     to: x.To
                                                                 ));

            return(transactionReceipts ?? Enumerable.Empty <TransactionReceipt>());
        }