kopia lustrzana https://github.com/bugout-dev/moonstream
Add web3 state provider for v3.
rodzic
2715090354
commit
05bd67a350
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
Ładowanie…
Reference in New Issue