示例#1
0
def get_logs(
        contract: Contract,
        event_name: str,
        from_block: Union[int, str] = 0,
        to_block: Union[int, str] = 'pending',
        argument_filters: Dict[str, Any] = None
):
    event_abi = [
        abi_element for abi_element in contract.abi
        if abi_element['type'] == 'event' and abi_element['name'] == event_name
    ]
    assert len(event_abi) == 1, 'No event found matching name {}.'.format(event_name)
    event_abi = event_abi[0]

    if argument_filters is None:
        argument_filters = {}

    filter_params = input_filter_params_formatter(construct_event_filter_params(
        event_abi,
        argument_filters=argument_filters,
        address=contract.address,
        fromBlock=from_block,
        toBlock=to_block
    )[1])

    response = _get_logs_raw(contract, filter_params)

    logs = log_array_formatter(response)
    logs = [dict(log) for log in logs]
    for log in logs:
        log['args'] = get_event_data(event_abi, log)['args']
    return logs
示例#2
0
    def get_logs(self,
                 event_name,
                 from_block=0,
                 to_block='latest',
                 filters=None):
        filter_kwargs = {
            'fromBlock': from_block,
            'toBlock': to_block,
            'address': self.contract_addr
        }
        event_abi = [
            i for i in self.auction_contract.abi
            if i['type'] == 'event' and i['name'] == event_name
        ][0]
        assert event_abi
        filters = filters if filters else {}
        filter_ = construct_event_filter_params(event_abi,
                                                argument_filters=filters,
                                                **filter_kwargs)[1]
        filter_params = input_filter_params_formatter(filter_)
        response = self.chain.web3._requestManager.request_blocking(
            'eth_getLogs', [filter_params])

        logs = log_array_formatter(response)
        logs = [dict(log) for log in logs]
        for log in logs:
            log['args'] = get_event_data(event_abi, log)['args']
        return logs
示例#3
0
 def get_logs(self):
     response = self.web3.eth.getFilterLogs(self.filter.filter_id)
     logs = log_array_formatter(response)
     logs = [dict(log) for log in logs]
     for log in logs:
         log = self.set_log_data(log)
     return logs
示例#4
0
 def get_logs(self):
     response = self.web3.eth.getFilterLogs(self.filter.filter_id)
     logs = log_array_formatter(response)
     formatted_logs = []
     for log in [dict(log) for log in logs]:
         formatted_logs.append(self.set_log_data(log))
     return formatted_logs
示例#5
0
 def set_log_data(self, log):
     log = dict(log_array_formatter([log])[0])
     log['args'] = get_event_data(self.event_abi, log)['args']
     log['event'] = self.event_name
     return log