Skip to content

Commit 78f25f6

Browse files
Fix fetching originations during initial sync (#322)
1 parent 2d5a61e commit 78f25f6

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## [unreleased]
4+
5+
### Fixed
6+
7+
* index: Fixed fetching originations during initial sync.
8+
39
## 5.0.3 - 2022-05-04
410

511
### Fixed

src/dipdup/index.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)