kopia lustrzana https://github.com/bugout-dev/moonstream
Blast and Blast Sepolia crawling support
rodzic
49b49153ac
commit
784ff2a740
|
@ -26,6 +26,8 @@ from .settings import (
|
|||
MOONSTREAM_NODE_ARBITRUM_SEPOLIA_A_EXTERNAL_URI,
|
||||
MOONSTREAM_NODE_AVALANCHE_A_EXTERNAL_URI,
|
||||
MOONSTREAM_NODE_AVALANCHE_FUJI_A_EXTERNAL_URI,
|
||||
MOONSTREAM_NODE_BLAST_A_EXTERNAL_URI,
|
||||
MOONSTREAM_NODE_BLAST_SEPOLIA_A_EXTERNAL_URI,
|
||||
MOONSTREAM_NODE_ETHEREUM_A_EXTERNAL_URI,
|
||||
MOONSTREAM_NODE_MUMBAI_A_EXTERNAL_URI,
|
||||
MOONSTREAM_NODE_POLYGON_A_EXTERNAL_URI,
|
||||
|
@ -82,6 +84,10 @@ def connect(
|
|||
web3_uri = MOONSTREAM_NODE_AVALANCHE_A_EXTERNAL_URI
|
||||
elif blockchain_type == AvailableBlockchainType.AVALANCHE_FUJI:
|
||||
web3_uri = MOONSTREAM_NODE_AVALANCHE_FUJI_A_EXTERNAL_URI
|
||||
elif blockchain_type == AvailableBlockchainType.BLAST:
|
||||
web3_uri = MOONSTREAM_NODE_BLAST_A_EXTERNAL_URI
|
||||
elif blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA:
|
||||
web3_uri = MOONSTREAM_NODE_BLAST_SEPOLIA_A_EXTERNAL_URI
|
||||
else:
|
||||
raise Exception("Wrong blockchain type provided for web3 URI")
|
||||
|
||||
|
@ -146,7 +152,7 @@ def add_block(db_session, block: Any, blockchain_type: AvailableBlockchainType)
|
|||
)
|
||||
if blockchain_type == AvailableBlockchainType.XDAI:
|
||||
block_obj.author = block.author
|
||||
if (
|
||||
elif (
|
||||
blockchain_type == AvailableBlockchainType.ZKSYNC_ERA_TESTNET
|
||||
or blockchain_type == AvailableBlockchainType.ZKSYNC_ERA_SEPOLIA
|
||||
or blockchain_type == AvailableBlockchainType.ZKSYNC_ERA
|
||||
|
@ -163,7 +169,7 @@ def add_block(db_session, block: Any, blockchain_type: AvailableBlockchainType)
|
|||
if block.get("l1BatchTimestamp") is not None
|
||||
else None
|
||||
)
|
||||
if (
|
||||
elif (
|
||||
blockchain_type == AvailableBlockchainType.ARBITRUM_NOVA
|
||||
or blockchain_type == AvailableBlockchainType.ARBITRUM_SEPOLIA
|
||||
):
|
||||
|
@ -172,8 +178,7 @@ def add_block(db_session, block: Any, blockchain_type: AvailableBlockchainType)
|
|||
block_obj.send_count = hex_to_int(block.get("sendCount"))
|
||||
block_obj.send_root = block.get("sendRoot", "")
|
||||
block_obj.mix_hash = block.get("mixHash", "")
|
||||
|
||||
if (
|
||||
elif (
|
||||
blockchain_type == AvailableBlockchainType.XAI
|
||||
or blockchain_type == AvailableBlockchainType.XAI_SEPOLIA
|
||||
):
|
||||
|
@ -182,8 +187,7 @@ def add_block(db_session, block: Any, blockchain_type: AvailableBlockchainType)
|
|||
block_obj.send_count = hex_to_int(block.get("sendCount"))
|
||||
block_obj.send_root = block.get("sendRoot", "")
|
||||
block_obj.mix_hash = block.get("mixHash", "")
|
||||
|
||||
if (
|
||||
elif (
|
||||
blockchain_type == AvailableBlockchainType.AVALANCHE
|
||||
or blockchain_type == AvailableBlockchainType.AVALANCHE_FUJI
|
||||
):
|
||||
|
@ -192,6 +196,13 @@ def add_block(db_session, block: Any, blockchain_type: AvailableBlockchainType)
|
|||
block_obj.block_gas_cost = block.get("blockGasCost")
|
||||
block_obj.ext_data_gas_used = block.get("extDataGasUsed", "")
|
||||
block_obj.ext_data_hash = block.get("extDataHash", "")
|
||||
elif (
|
||||
blockchain_type == AvailableBlockchainType.BLAST
|
||||
or blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA
|
||||
):
|
||||
block_obj.sha3_uncles = block.get("sha3Uncles", "")
|
||||
block_obj.mix_hash = block.get("mixHash", "")
|
||||
block_obj.withdrawals_root = block.get("withdrawalsRoot", "")
|
||||
|
||||
db_session.add(block_obj)
|
||||
|
||||
|
|
|
@ -152,6 +152,10 @@ def continuous_crawler(
|
|||
network = Network.avalanche
|
||||
elif blockchain_type == AvailableBlockchainType.AVALANCHE_FUJI:
|
||||
network = Network.avalanche_fuji
|
||||
elif blockchain_type == AvailableBlockchainType.BLAST:
|
||||
network = Network.blast
|
||||
elif blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA:
|
||||
network = Network.blast_sepolia
|
||||
else:
|
||||
raise ValueError(f"Unknown blockchain type: {blockchain_type}")
|
||||
|
||||
|
|
|
@ -44,6 +44,8 @@ class SubscriptionTypes(Enum):
|
|||
XAI_SEPOLIA_BLOCKCHAIN = "xai_sepolia_smartcontract"
|
||||
AVALANCHE_BLOCKCHAIN = "avalanche_smartcontract"
|
||||
AVALANCHE_FUJI_BLOCKCHAIN = "avalanche_fuji_smartcontract"
|
||||
BLAST_BLOCKCHAIN = "blast_smartcontract"
|
||||
BLAST_SEPOLIA_BLOCKCHAIN = "blast_sepolia_smartcontract"
|
||||
|
||||
|
||||
def abi_input_signature(input_abi: Dict[str, Any]) -> str:
|
||||
|
@ -166,6 +168,10 @@ def blockchain_type_to_subscription_type(
|
|||
return SubscriptionTypes.AVALANCHE_BLOCKCHAIN
|
||||
elif blockchain_type == AvailableBlockchainType.AVALANCHE_FUJI:
|
||||
return SubscriptionTypes.AVALANCHE_FUJI_BLOCKCHAIN
|
||||
elif blockchain_type == AvailableBlockchainType.BLAST:
|
||||
return SubscriptionTypes.BLAST_BLOCKCHAIN
|
||||
elif blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA:
|
||||
return SubscriptionTypes.BLAST_SEPOLIA_BLOCKCHAIN
|
||||
else:
|
||||
raise ValueError(f"Unknown blockchain type: {blockchain_type}")
|
||||
|
||||
|
|
|
@ -72,6 +72,8 @@ def function_call_crawler(
|
|||
network = Network.zksync_era_testnet
|
||||
elif blockchain_type == AvailableBlockchainType.ZKSYNC_ERA:
|
||||
network = Network.zksync_era
|
||||
elif blockchain_type == AvailableBlockchainType.ZKSYNC_ERA_SEPOLIA:
|
||||
network = Network.zksync_era_sepolia
|
||||
elif blockchain_type == AvailableBlockchainType.ARBITRUM_NOVA:
|
||||
network = Network.arbitrum_nova
|
||||
elif blockchain_type == AvailableBlockchainType.ARBITRUM_SEPOLIA:
|
||||
|
@ -80,6 +82,14 @@ def function_call_crawler(
|
|||
network = Network.xai
|
||||
elif blockchain_type == AvailableBlockchainType.XAI_SEPOLIA:
|
||||
network = Network.xai_sepolia
|
||||
elif blockchain_type == AvailableBlockchainType.AVALANCHE:
|
||||
network = Network.avalanche
|
||||
elif blockchain_type == AvailableBlockchainType.AVALANCHE_FUJI:
|
||||
network = Network.avalanche_fuji
|
||||
elif blockchain_type == AvailableBlockchainType.BLAST:
|
||||
network = Network.blast
|
||||
elif blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA:
|
||||
network = Network.blast_sepolia
|
||||
else:
|
||||
raise ValueError(f"Unknown blockchain type: {blockchain_type}")
|
||||
|
||||
|
|
|
@ -66,6 +66,8 @@ def historical_crawler(
|
|||
network = Network.zksync_era_testnet
|
||||
elif blockchain_type == AvailableBlockchainType.ZKSYNC_ERA:
|
||||
network = Network.zksync_era
|
||||
elif blockchain_type == AvailableBlockchainType.ZKSYNC_ERA_SEPOLIA:
|
||||
network = Network.zksync_era_sepolia
|
||||
elif blockchain_type == AvailableBlockchainType.ARBITRUM_NOVA:
|
||||
network = Network.arbitrum_nova
|
||||
elif blockchain_type == AvailableBlockchainType.ARBITRUM_SEPOLIA:
|
||||
|
@ -74,6 +76,14 @@ def historical_crawler(
|
|||
network = Network.xai
|
||||
elif blockchain_type == AvailableBlockchainType.XAI_SEPOLIA:
|
||||
network = Network.xai_sepolia
|
||||
elif blockchain_type == AvailableBlockchainType.AVALANCHE:
|
||||
network = Network.avalanche
|
||||
elif blockchain_type == AvailableBlockchainType.AVALANCHE_FUJI:
|
||||
network = Network.avalanche_fuji
|
||||
elif blockchain_type == AvailableBlockchainType.BLAST:
|
||||
network = Network.blast
|
||||
elif blockchain_type == AvailableBlockchainType.BLAST_SEPOLIA:
|
||||
network = Network.blast_sepolia
|
||||
else:
|
||||
raise Exception("Unsupported blockchain type provided")
|
||||
|
||||
|
|
|
@ -160,6 +160,20 @@ if MOONSTREAM_NODE_AVALANCHE_FUJI_A_EXTERNAL_URI == "":
|
|||
"MOONSTREAM_NODE_AVALANCHE_FUJI_A_EXTERNAL_URI env variable is not set"
|
||||
)
|
||||
|
||||
MOONSTREAM_NODE_BLAST_A_EXTERNAL_URI = os.environ.get(
|
||||
"MOONSTREAM_NODE_BLAST_A_EXTERNAL_URI", ""
|
||||
)
|
||||
if MOONSTREAM_NODE_BLAST_A_EXTERNAL_URI == "":
|
||||
raise Exception("MOONSTREAM_NODE_BLAST_A_EXTERNAL_URI env variable is not set")
|
||||
|
||||
MOONSTREAM_NODE_BLAST_SEPOLIA_A_EXTERNAL_URI = os.environ.get(
|
||||
"MOONSTREAM_NODE_BLAST_SEPOLIA_A_EXTERNAL_URI", ""
|
||||
)
|
||||
if MOONSTREAM_NODE_BLAST_SEPOLIA_A_EXTERNAL_URI == "":
|
||||
raise Exception(
|
||||
"MOONSTREAM_NODE_BLAST_SEPOLIA_A_EXTERNAL_URI env variable is not set"
|
||||
)
|
||||
|
||||
MOONSTREAM_CRAWL_WORKERS = 4
|
||||
MOONSTREAM_CRAWL_WORKERS_RAW = os.environ.get("MOONSTREAM_CRAWL_WORKERS")
|
||||
try:
|
||||
|
|
|
@ -62,6 +62,8 @@ subscription_id_by_blockchain = {
|
|||
"xai_sepolia": "xai_sepolia_smartcontract",
|
||||
"avalanche": "avalanche_smartcontract",
|
||||
"avalanche_fuji": "avalanche_fuji_smartcontract",
|
||||
"blast": "blast_smartcontract",
|
||||
"blast_sepolia": "blast_sepolia_smartcontract",
|
||||
}
|
||||
|
||||
blockchain_by_subscription_id = {
|
||||
|
@ -79,6 +81,8 @@ blockchain_by_subscription_id = {
|
|||
"xai_sepolia_blockchain": "xai_sepolia",
|
||||
"avalanche_blockchain": "avalanche",
|
||||
"avalanche_fuji_blockchain": "avalanche_fuji",
|
||||
"blast_blockchain": "blast",
|
||||
"blast_sepolia_blockchain": "blast_sepolia",
|
||||
"ethereum_smartcontract": "ethereum",
|
||||
"polygon_smartcontract": "polygon",
|
||||
"mumbai_smartcontract": "mumbai",
|
||||
|
@ -93,6 +97,8 @@ blockchain_by_subscription_id = {
|
|||
"xai_sepolia_smartcontract": "xai_sepolia",
|
||||
"avalanche_smartcontract": "avalanche",
|
||||
"avalanche_fuji_smartcontract": "avalanche_fuji",
|
||||
"blast_smartcontract": "blast",
|
||||
"blast_sepolia_smartcontract": "blast_sepolia",
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -11,3 +11,6 @@ ignore_missing_imports = True
|
|||
|
||||
[mypy-tqdm.*]
|
||||
ignore_missing_imports = True
|
||||
|
||||
[mypy-moonworm.*]
|
||||
ignore_missing_imports = True
|
||||
|
|
|
@ -33,6 +33,8 @@ export MOONSTREAM_NODE_XAI_A_EXTERNAL_URI="https://<connection_path_uri_to_node>
|
|||
export MOONSTREAM_NODE_XAI_SEPOLIA_A_EXTERNAL_URI="https://<connection_path_uri_to_node>"
|
||||
export MOONSTREAM_NODE_AVALANCHE_A_EXTERNAL_URI="https://<connection_path_uri_to_node>"
|
||||
export MOONSTREAM_NODE_AVALANCHE_FUJI_A_EXTERNAL_URI="https://<connection_path_uri_to_node>"
|
||||
export MOONSTREAM_NODE_BLAST_A_EXTERNAL_URI="https://<connection_path_uri_to_node>"
|
||||
export MOONSTREAM_NODE_BLAST_SEPOLIA_A_EXTERNAL_URI="https://<connection_path_uri_to_node>"
|
||||
|
||||
# AWS environment variables
|
||||
export MOONSTREAM_S3_SMARTCONTRACTS_BUCKET="<AWS_S3_bucket_for_smart_contracts>"
|
||||
|
|
|
@ -37,7 +37,7 @@ setup(
|
|||
"bugout>=0.2.13",
|
||||
"chardet",
|
||||
"fastapi",
|
||||
"moonstreamdb>=0.3.11",
|
||||
"moonstreamdb>=0.3.12",
|
||||
"moonstream>=0.1.1",
|
||||
"moonworm[moonstream]>=0.6.2",
|
||||
"humbug",
|
||||
|
|
Ładowanie…
Reference in New Issue