@@ -579,18 +579,22 @@ async def _get_origination_addresses(self) -> Set[str]:
579579 addresses = set ()
580580 for handler_config in self ._config .handlers :
581581 for pattern_config in handler_config .pattern :
582- if isinstance (pattern_config , OperationHandlerOriginationPatternConfig ):
583- if pattern_config .originated_contract :
584- addresses .add (pattern_config .originated_contract_config .address )
585- if pattern_config .source :
586- for address in await self ._datasource .get_originated_contracts (pattern_config .source_contract_config .address ):
587- addresses .add (address )
588- if pattern_config .similar_to :
589- for address in await self ._datasource .get_similar_contracts (
590- address = pattern_config .similar_to_contract_config .address ,
591- strict = pattern_config .strict ,
592- ):
593- addresses .add (address )
582+ if not isinstance (pattern_config , OperationHandlerOriginationPatternConfig ):
583+ continue
584+
585+ if pattern_config .originated_contract :
586+ addresses .add (pattern_config .originated_contract_config .address )
587+
588+ if pattern_config .source :
589+ source_address = pattern_config .source_contract_config .address
590+ async for batch in self ._datasource .iter_originated_contracts (source_address ):
591+ addresses .update (batch )
592+
593+ if pattern_config .similar_to :
594+ similar_address = pattern_config .similar_to_contract_config .address
595+ async for batch in self ._datasource .iter_similar_contracts (similar_address , pattern_config .strict ):
596+ addresses .update (batch )
597+
594598 return addresses
595599
596600 async def _get_contract_hashes (self , address : str ) -> Tuple [int , int ]:
0 commit comments