Exemplo n.º 1
0
        private void FindLogsInBlock(LogFilter filter, Block currentBlock, List <FilterLog> results)
        {
            var  receipts        = _receiptStorage.FindForBlock(currentBlock);
            long logIndexInBlock = 0;

            foreach (var receipt in receipts)
            {
                if (receipt == null)
                {
                    continue;
                }

                if (filter.Matches(receipt.Bloom))
                {
                    foreach (var log in receipt.Logs)
                    {
                        if (filter.Accepts(log))
                        {
                            results.Add(new FilterLog(logIndexInBlock, receipt, log));
                        }

                        logIndexInBlock++;
                    }
                }
                else
                {
                    logIndexInBlock += receipt.Logs.Length;
                }
            }
        }
Exemplo n.º 2
0
        private IEnumerable <FilterLog> FindLogsInBlock(LogFilter filter, Block block)
        {
            if (block != null)
            {
                var  receipts        = _receiptStorage.FindForBlock(block, _receiptsRecovery);
                long logIndexInBlock = 0;
                foreach (var receipt in receipts)
                {
                    if (receipt == null)
                    {
                        continue;
                    }

                    if (filter.Matches(receipt.Bloom))
                    {
                        for (var index = 0; index < receipt.Logs.Length; index++)
                        {
                            var log = receipt.Logs[index];
                            if (filter.Accepts(log))
                            {
                                yield return(new FilterLog(logIndexInBlock, index, receipt, log));
                            }

                            logIndexInBlock++;
                        }
                    }
                    else
                    {
                        logIndexInBlock += receipt.Logs.Length;
                    }
                }
            }
        }
Exemplo n.º 3
0
        public ResultWrapper <ReceiptForRpc[]> parity_getBlockReceipts(BlockParameter blockParameter)
        {
            var filterBlock = blockParameter.ToFilterBlock();
            var block       = _blockFinder.GetBlock(filterBlock);
            var receipts    = _receiptStorage.FindForBlock(block);
            var result      = receipts.Zip(block.Transactions, (r, t) => new ReceiptForRpc(t.Hash, r));

            return(ResultWrapper <ReceiptForRpc[]> .Success(result.ToArray()));
        }
Exemplo n.º 4
0
        public ResultWrapper <ReceiptForRpc[]> parity_getBlockReceipts(BlockParameter blockParameter)
        {
            Block block = _blockFinder.FindBlock(blockParameter);

            TxReceipt[] receipts = _receiptStorage.FindForBlock(block, new ReceiptsRecovery());
            IEnumerable <ReceiptForRpc> result = receipts.Zip(block.Transactions, (r, t) => new ReceiptForRpc(t.Hash, r));

            return(ResultWrapper <ReceiptForRpc[]> .Success(result.ToArray()));
        }
Exemplo n.º 5
0
 public TxReceipt[] GetReceipts(Block block) => _receiptStorage.FindForBlock(block);