Exemplo n.º 1
0
 def create_pending_transaction_filter(self):
     raw_filter_id = next(self._filter_counter)
     self._pending_transaction_filters[raw_filter_id] = Filter(
         filter_params=None)
     filter_id = self.normalizer.normalize_outbound_filter_id(raw_filter_id)
     return filter_id
Exemplo n.º 2
0
    def get_logs(self,
                 from_block=None,
                 to_block=None,
                 address=None,
                 topics=None):
        self.validator.validate_inbound_filter_params(
            from_block=from_block,
            to_block=to_block,
            address=address,
            topics=topics,
        )
        (
            raw_from_block,
            raw_to_block,
            raw_address,
            raw_topics,
        ) = self.normalizer.normalize_inbound_filter_params(
            from_block=from_block,
            to_block=to_block,
            address=address,
            topics=topics,
        )

        # Setup the filter object
        raw_filter_params = {
            'from_block': raw_from_block,
            'to_block': raw_to_block,
            'addresses': raw_address,
            'topics': raw_topics,
        }
        filter_fn = partial(
            check_if_log_matches,
            **raw_filter_params,
        )
        log_filter = Filter(
            filter_params=raw_filter_params,
            filter_fn=filter_fn,
        )

        # Set from/to block defaults
        if raw_from_block is None:
            raw_from_block = 'latest'
        if raw_to_block is None:
            raw_to_block = 'latest'

        # Determine lower bound for block range.
        if isinstance(raw_from_block, int):
            lower_bound = raw_from_block
        else:
            lower_bound = self.get_block_by_number(raw_from_block)['number']

        # Determine upper bound for block range.
        if isinstance(raw_to_block, int):
            upper_bound = raw_to_block
        else:
            upper_bound = self.get_block_by_number(raw_to_block)['number']

        # Enumerate the blocks in the block range to find all log entries which match.
        for block_number in range(lower_bound, upper_bound + 1):
            block = self.get_block_by_number(block_number)
            for transaction_hash in block['transactions']:
                receipt = self.get_transaction_receipt(transaction_hash)
                for log_entry in receipt['logs']:
                    raw_log_entry = self.normalizer.normalize_inbound_log_entry(
                        log_entry)
                    log_filter.add(raw_log_entry)

        # Return the matching log entries
        for item in log_filter.get_all():
            yield self.normalizer.normalize_outbound_log_entry(item)
Exemplo n.º 3
0
 def create_block_filter(self):
     raw_filter_id = next(self._filter_counter)
     self._block_filters[raw_filter_id] = Filter(filter_params=None)
     filter_id = self.normalizer.normalize_outbound_filter_id(raw_filter_id)
     return filter_id
Exemplo n.º 4
0
def f():
    _f = Filter(None)
    return _f