예제 #1
0
    def watch_events(self):
        # TODO keep fresh in background

        # fetch all registries and factories from address provider
        log_filter = create_filter(str(self.addres_provider))
        for event in decode_logs(log_filter.get_new_entries()):
            if event.name == 'NewAddressIdentifier':
                self.identifiers[event['id']].append(event['addr'])
            if event.name == 'AddressModified':
                self.identifiers[event['id']].append(event['new_address'])

        # fetch pools from the latest registry
        log_filter = create_filter(str(self.registry))
        for event in decode_logs(log_filter.get_new_entries()):
            if event.name == 'PoolAdded':
                self.pools.add(event['pool'])

        logger.info(f'loaded {len(self.pools)} pools')
예제 #2
0
 def watch_events(self):
     start = time.time()
     self.log_filter = create_filter(self.addresses)
     for block in chain.new_blocks(height_buffer=12):
         logs = self.log_filter.get_new_entries()
         self.process_events(decode_logs(logs))
         if not self._done.is_set():
             self._done.set()
             logger.info("loaded v2 registry in %.3fs", time.time() - start)
         time.sleep(300)
예제 #3
0
 def watch_events(self):
     start = time.time()
     self.log_filter = create_filter(str(self.vault), topics=self._topics)
     for block in chain.new_blocks(height_buffer=12):
         logs = self.log_filter.get_new_entries()
         events = decode_logs(logs)
         self.process_events(events)
         if not self._done.is_set():
             self._done.set()
             logger.info("loaded %d strategies %s in %.3fs",
                         len(self._strategies), self.name,
                         time.time() - start)
         time.sleep(300)