Add web3 state provider for v3.

pull/1085/head
Andrey 2024-06-14 17:36:08 +03:00
rodzic 2715090354
commit 05bd67a350
3 zmienionych plików z 26 dodań i 18 usunięć

Wyświetl plik

@ -12,6 +12,7 @@ from moonstreamtypes.networks import blockchain_type_to_network_type
from moonworm.crawler.moonstream_ethereum_state_provider import ( # type: ignore
MoonstreamEthereumStateProvider,
)
from moonworm.crawler.ethereum_state_provider import Web3StateProvider
from sqlalchemy.orm.session import Session
from web3 import Web3
@ -106,6 +107,7 @@ def continuous_crawler(
new_jobs_refetch_interval: float = 120,
web3_uri: Optional[str] = None,
max_insert_batch: int = 10000,
version: int = 2,
):
crawler_type = "continuous"
assert (
@ -130,11 +132,15 @@ def continuous_crawler(
except Exception as e:
raise Exception(e)
ethereum_state_provider = MoonstreamEthereumStateProvider(
web3,
network, # type: ignore
db_session,
)
evm_state_provider = Web3StateProvider(web3)
if version == 2:
evm_state_provider = MoonstreamEthereumStateProvider(
web3,
network, # type: ignore
db_session,
)
heartbeat_template = {
"status": "crawling",
@ -207,7 +213,7 @@ def continuous_crawler(
)
all_function_calls = _crawl_functions(
blockchain_type,
ethereum_state_provider,
evm_state_provider,
function_call_crawl_jobs,
start_block,
end_block,
@ -269,7 +275,7 @@ def continuous_crawler(
function_call_crawl_jobs
)
heartbeat_template["function_call metrics"] = (
ethereum_state_provider.metrics
evm_state_provider.metrics
)
heartbeat(
crawler_type=crawler_type,

Wyświetl plik

@ -1,5 +1,5 @@
import logging
from typing import List
from typing import List, Union
from moonstreamdb.blockchain import AvailableBlockchainType
from moonstreamtypes.blockchain import AvailableBlockchainType
@ -11,6 +11,7 @@ from moonworm.crawler.function_call_crawler import ( # type: ignore
from moonworm.crawler.moonstream_ethereum_state_provider import ( # type: ignore
MoonstreamEthereumStateProvider,
)
from moonworm.crawler.ethereum_state_provider import Web3StateProvider
from moonworm.watch import MockState # type: ignore
from sqlalchemy.orm import Session
from web3 import Web3
@ -23,7 +24,7 @@ logger = logging.getLogger(__name__)
def _crawl_functions(
blockchain_type: AvailableBlockchainType,
ethereum_state_provider: MoonstreamEthereumStateProvider,
ethereum_state_provider: Union[MoonstreamEthereumStateProvider, Web3StateProvider],
jobs: List[FunctionCallCrawlJob],
from_block: int,
to_block: int,

Wyświetl plik

@ -11,6 +11,7 @@ from moonworm.crawler.moonstream_ethereum_state_provider import ( # type: ignor
MoonstreamEthereumStateProvider,
Network,
)
from moonworm.crawler.ethereum_state_provider import Web3StateProvider
from sqlalchemy.orm.session import Session
from web3 import Web3
@ -60,15 +61,15 @@ def historical_crawler(
except Exception as e:
raise Exception(e)
if version != 2:
## Function call crawler is not supported in version 3
network = Network("ethereum")
evm_state_provider = Web3StateProvider(web3)
ethereum_state_provider = MoonstreamEthereumStateProvider(
web3,
network, # type: ignore
db_session,
)
if version == 2:
### Moonstream state provider use the V2 db to get the block
evm_state_provider = MoonstreamEthereumStateProvider(
web3,
network, # type: ignore
db_session,
)
logger.info(f"Starting historical event crawler start_block={start_block}")
@ -139,7 +140,7 @@ def historical_crawler(
)
all_function_calls = _crawl_functions(
blockchain_type,
ethereum_state_provider,
evm_state_provider,
function_call_crawl_jobs,
batch_end_block,
start_block,