kopia lustrzana https://github.com/bugout-dev/moonstream
ZkSync era support for crawlers
rodzic
1b0a8581d3
commit
aa5f0b2891
|
@ -27,6 +27,7 @@ from .settings import (
|
||||||
MOONSTREAM_POLYGON_WEB3_PROVIDER_URI,
|
MOONSTREAM_POLYGON_WEB3_PROVIDER_URI,
|
||||||
MOONSTREAM_WYRM_WEB3_PROVIDER_URI,
|
MOONSTREAM_WYRM_WEB3_PROVIDER_URI,
|
||||||
MOONSTREAM_XDAI_WEB3_PROVIDER_URI,
|
MOONSTREAM_XDAI_WEB3_PROVIDER_URI,
|
||||||
|
MOONSTREAM_ZKSYNC_ERA_TESTNET_WEB3_PROVIDER_URI,
|
||||||
NB_ACCESS_ID_HEADER,
|
NB_ACCESS_ID_HEADER,
|
||||||
NB_DATA_SOURCE_HEADER,
|
NB_DATA_SOURCE_HEADER,
|
||||||
WEB3_CLIENT_REQUEST_TIMEOUT_SECONDS,
|
WEB3_CLIENT_REQUEST_TIMEOUT_SECONDS,
|
||||||
|
@ -70,6 +71,8 @@ def connect(
|
||||||
web3_uri = MOONSTREAM_XDAI_WEB3_PROVIDER_URI
|
web3_uri = MOONSTREAM_XDAI_WEB3_PROVIDER_URI
|
||||||
elif blockchain_type == AvailableBlockchainType.WYRM:
|
elif blockchain_type == AvailableBlockchainType.WYRM:
|
||||||
web3_uri = MOONSTREAM_WYRM_WEB3_PROVIDER_URI
|
web3_uri = MOONSTREAM_WYRM_WEB3_PROVIDER_URI
|
||||||
|
elif blockchain_type == AvailableBlockchainType.ZKSYNC_ERA_TESTNET:
|
||||||
|
web3_uri = MOONSTREAM_ZKSYNC_ERA_TESTNET_WEB3_PROVIDER_URI
|
||||||
else:
|
else:
|
||||||
raise Exception("Wrong blockchain type provided for web3 URI")
|
raise Exception("Wrong blockchain type provided for web3 URI")
|
||||||
|
|
||||||
|
@ -123,6 +126,11 @@ def add_block(db_session, block: Any, blockchain_type: AvailableBlockchainType)
|
||||||
)
|
)
|
||||||
if blockchain_type == AvailableBlockchainType.XDAI:
|
if blockchain_type == AvailableBlockchainType.XDAI:
|
||||||
block_obj.author = block.author
|
block_obj.author = block.author
|
||||||
|
if blockchain_type == AvailableBlockchainType.ZKSYNC_ERA_TESTNET:
|
||||||
|
block_obj.mix_hash = block.get("mixHash", "")
|
||||||
|
block_obj.sha3_uncles = block.get("sha3Uncles", "")
|
||||||
|
block_obj.l1_batch_number = block.get("l1BatchNumber", None)
|
||||||
|
block_obj.l1_batch_timestamp = block.get("l1BatchTimestamp", None)
|
||||||
|
|
||||||
db_session.add(block_obj)
|
db_session.add(block_obj)
|
||||||
|
|
||||||
|
@ -152,6 +160,9 @@ def add_block_transactions(
|
||||||
transaction_type=int(tx["type"], 0) if tx.get("type") is not None else None,
|
transaction_type=int(tx["type"], 0) if tx.get("type") is not None else None,
|
||||||
value=tx.value,
|
value=tx.value,
|
||||||
)
|
)
|
||||||
|
if blockchain_type == AvailableBlockchainType.ZKSYNC_ERA_TESTNET:
|
||||||
|
tx_obj.l1_batch_number = tx.get("l1BatchNumber", None)
|
||||||
|
tx_obj.l1_batch_tx_index = tx.get("l1BatchTxIndex", None)
|
||||||
|
|
||||||
db_session.add(tx_obj)
|
db_session.add(tx_obj)
|
||||||
|
|
||||||
|
|
|
@ -130,6 +130,8 @@ def continuous_crawler(
|
||||||
network = Network.xdai
|
network = Network.xdai
|
||||||
elif blockchain_type == AvailableBlockchainType.WYRM:
|
elif blockchain_type == AvailableBlockchainType.WYRM:
|
||||||
network = Network.wyrm
|
network = Network.wyrm
|
||||||
|
elif blockchain_type == AvailableBlockchainType.ZKSYNC_ERA_TESTNET:
|
||||||
|
network = Network.zksync_era_testnet
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Unknown blockchain type: {blockchain_type}")
|
raise ValueError(f"Unknown blockchain type: {blockchain_type}")
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,7 @@ class SubscriptionTypes(Enum):
|
||||||
MUMBAI_BLOCKCHAIN = "mumbai_smartcontract"
|
MUMBAI_BLOCKCHAIN = "mumbai_smartcontract"
|
||||||
XDAI_BLOCKCHAIN = "xdai_smartcontract"
|
XDAI_BLOCKCHAIN = "xdai_smartcontract"
|
||||||
WYRM_BLOCKCHAIN = "wyrm_smartcontract"
|
WYRM_BLOCKCHAIN = "wyrm_smartcontract"
|
||||||
|
ZKSYNC_ERA_TESTNET_BLOCKCHAIN = "zksync_era_testnet_smartcontract"
|
||||||
|
|
||||||
|
|
||||||
def abi_input_signature(input_abi: Dict[str, Any]) -> str:
|
def abi_input_signature(input_abi: Dict[str, Any]) -> str:
|
||||||
|
@ -139,6 +140,8 @@ def blockchain_type_to_subscription_type(
|
||||||
return SubscriptionTypes.XDAI_BLOCKCHAIN
|
return SubscriptionTypes.XDAI_BLOCKCHAIN
|
||||||
elif blockchain_type == AvailableBlockchainType.WYRM:
|
elif blockchain_type == AvailableBlockchainType.WYRM:
|
||||||
return SubscriptionTypes.WYRM_BLOCKCHAIN
|
return SubscriptionTypes.WYRM_BLOCKCHAIN
|
||||||
|
elif blockchain_type == AvailableBlockchainType.ZKSYNC_ERA_TESTNET:
|
||||||
|
return SubscriptionTypes.ZKSYNC_ERA_TESTNET_BLOCKCHAIN
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Unknown blockchain type: {blockchain_type}")
|
raise ValueError(f"Unknown blockchain type: {blockchain_type}")
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,8 @@ def function_call_crawler(
|
||||||
network = Network.xdai
|
network = Network.xdai
|
||||||
elif blockchain_type == AvailableBlockchainType.WYRM:
|
elif blockchain_type == AvailableBlockchainType.WYRM:
|
||||||
network = Network.wyrm
|
network = Network.wyrm
|
||||||
|
elif blockchain_type == AvailableBlockchainType.ZKSYNC_ERA_TESTNET:
|
||||||
|
network = Network.zksync_era_testnet
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Unknown blockchain type: {blockchain_type}")
|
raise ValueError(f"Unknown blockchain type: {blockchain_type}")
|
||||||
|
|
||||||
|
|
|
@ -114,6 +114,14 @@ MOONSTREAM_WYRM_WEB3_PROVIDER_URI = os.environ.get(
|
||||||
if MOONSTREAM_WYRM_WEB3_PROVIDER_URI == "":
|
if MOONSTREAM_WYRM_WEB3_PROVIDER_URI == "":
|
||||||
raise Exception("MOONSTREAM_WYRM_WEB3_PROVIDER_URI env variable is not set")
|
raise Exception("MOONSTREAM_WYRM_WEB3_PROVIDER_URI env variable is not set")
|
||||||
|
|
||||||
|
MOONSTREAM_ZKSYNC_ERA_TESTNET_WEB3_PROVIDER_URI = os.environ.get(
|
||||||
|
"MOONSTREAM_ZKSYNC_ERA_TESTNET_WEB3_PROVIDER_URI", ""
|
||||||
|
)
|
||||||
|
if MOONSTREAM_ZKSYNC_ERA_TESTNET_WEB3_PROVIDER_URI == "":
|
||||||
|
raise Exception(
|
||||||
|
"MOONSTREAM_ZKSYNC_ERA_TESTNET_WEB3_PROVIDER_URI env variable is not set"
|
||||||
|
)
|
||||||
|
|
||||||
MOONSTREAM_CRAWL_WORKERS = 4
|
MOONSTREAM_CRAWL_WORKERS = 4
|
||||||
MOONSTREAM_CRAWL_WORKERS_RAW = os.environ.get("MOONSTREAM_CRAWL_WORKERS")
|
MOONSTREAM_CRAWL_WORKERS_RAW = os.environ.get("MOONSTREAM_CRAWL_WORKERS")
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -48,6 +48,7 @@ subscription_id_by_blockchain = {
|
||||||
"mumbai": "mumbai_smartcontract",
|
"mumbai": "mumbai_smartcontract",
|
||||||
"xdai": "xdai_smartcontract",
|
"xdai": "xdai_smartcontract",
|
||||||
"wyrm": "wyrm_smartcontract",
|
"wyrm": "wyrm_smartcontract",
|
||||||
|
"zksync_era_testnet": "zksync_era_testnet_smartcontract",
|
||||||
}
|
}
|
||||||
|
|
||||||
blockchain_by_subscription_id = {
|
blockchain_by_subscription_id = {
|
||||||
|
@ -56,11 +57,13 @@ blockchain_by_subscription_id = {
|
||||||
"mumbai_blockchain": "mumbai",
|
"mumbai_blockchain": "mumbai",
|
||||||
"xdai_blockchain": "xdai",
|
"xdai_blockchain": "xdai",
|
||||||
"wyrm_blockchain": "wyrm",
|
"wyrm_blockchain": "wyrm",
|
||||||
|
"zksync_era_testnet_blockchain": "zksync_era_testnet",
|
||||||
"ethereum_smartcontract": "ethereum",
|
"ethereum_smartcontract": "ethereum",
|
||||||
"polygon_smartcontract": "polygon",
|
"polygon_smartcontract": "polygon",
|
||||||
"mumbai_smartcontract": "mumbai",
|
"mumbai_smartcontract": "mumbai",
|
||||||
"xdai_smartcontract": "xdai",
|
"xdai_smartcontract": "xdai",
|
||||||
"wyrm_smartcontract": "wyrm",
|
"wyrm_smartcontract": "wyrm",
|
||||||
|
"zksync_era_testnet_smartcontract": "zksync_era_testnet",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ export MOONSTREAM_POLYGON_WEB3_PROVIDER_URI="https://<connection_path_uri_to_pol
|
||||||
export MOONSTREAM_MUMBAI_WEB3_PROVIDER_URI="https://<connection_path_uri_to_mumbai_node>"
|
export MOONSTREAM_MUMBAI_WEB3_PROVIDER_URI="https://<connection_path_uri_to_mumbai_node>"
|
||||||
export MOONSTREAM_XDAI_WEB3_PROVIDER_URI="https://<connection_path_uri_to_xdai_node>"
|
export MOONSTREAM_XDAI_WEB3_PROVIDER_URI="https://<connection_path_uri_to_xdai_node>"
|
||||||
export MOONSTREAM_WYRM_WEB3_PROVIDER_URI="https://<connection_path_uri_to_wyrm_node>"
|
export MOONSTREAM_WYRM_WEB3_PROVIDER_URI="https://<connection_path_uri_to_wyrm_node>"
|
||||||
|
export MOONSTREAM_ZKSYNC_ERA_TESTNET_WEB3_PROVIDER_URI="https://<connection_path_uri_to_zksync_era_testnet_node>"
|
||||||
export NB_CONTROLLER_ACCESS_ID="<access_uuid_for_moonstream_nodebalancer>"
|
export NB_CONTROLLER_ACCESS_ID="<access_uuid_for_moonstream_nodebalancer>"
|
||||||
|
|
||||||
# AWS environment variables
|
# AWS environment variables
|
||||||
|
|
|
@ -37,7 +37,7 @@ setup(
|
||||||
"bugout>=0.2.8",
|
"bugout>=0.2.8",
|
||||||
"chardet",
|
"chardet",
|
||||||
"fastapi",
|
"fastapi",
|
||||||
"moonstreamdb>=0.3.3",
|
"moonstreamdb>=0.3.4",
|
||||||
"moonstream>=0.1.1",
|
"moonstream>=0.1.1",
|
||||||
"moonstream-entity>=0.0.5",
|
"moonstream-entity>=0.0.5",
|
||||||
"moonworm[moonstream]>=0.6.2",
|
"moonworm[moonstream]>=0.6.2",
|
||||||
|
|
Ładowanie…
Reference in New Issue