Skip to content

Commit a2c4d6e

Browse files
author
Andrey
committed
Update contracts building.
1 parent 8222a88 commit a2c4d6e

File tree

1 file changed

+11
-7
lines changed
  • crawlers/mooncrawl/mooncrawl/state_crawler

1 file changed

+11
-7
lines changed

crawlers/mooncrawl/mooncrawl/state_crawler/cli.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -511,15 +511,20 @@ def recursive_unpack(
511511
def build_interfaces(
512512
contracts_ABIs: Dict[str, Any], contracts_methods: Dict[str, Any], web3_client: Web3
513513
) -> Dict[str, Any]:
514-
"""Builds contract interfaces."""
514+
"""Builds contract interfaces with deduplication of ABIs."""
515515
interfaces = {}
516516
for contract_address in contracts_ABIs:
517-
abis = [
518-
contracts_ABIs[contract_address][method_hash]
519-
for method_hash in contracts_methods[contract_address]
520-
]
517+
# Use a dictionary to deduplicate ABIs by function signature
518+
unique_abis = {}
519+
for method_hash in contracts_methods[contract_address]:
520+
abi = contracts_ABIs[contract_address][method_hash]
521+
# Create a unique key based on name and input types
522+
if abi["name"] not in unique_abis:
523+
unique_abis[abi["name"]] = abi
524+
521525
interfaces[contract_address] = web3_client.eth.contract(
522-
address=web3_client.toChecksumAddress(contract_address), abi=abis
526+
address=web3_client.toChecksumAddress(contract_address),
527+
abi=list(unique_abis.values())
523528
)
524529
return interfaces
525530

@@ -651,7 +656,6 @@ def parse_jobs(
651656
customer_id,
652657
instance_id,
653658
)
654-
655659
interfaces = build_interfaces(contracts_ABIs, contracts_methods, web3_client)
656660

657661
call_tree_levels = sorted(calls.keys(), reverse=True)[:-1]

0 commit comments

Comments
 (0)