kopia lustrzana https://github.com/bugout-dev/moonstream
49 wiersze
1.3 KiB
Python
49 wiersze
1.3 KiB
Python
|
import logging
|
||
|
|
||
|
import boto3 # type: ignore
|
||
|
from web3 import Web3
|
||
|
|
||
|
from .settings import (
|
||
|
MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI,
|
||
|
MOONSTREAM_INTERNAL_HOSTED_ZONE_ID,
|
||
|
MOONSTREAM_NODE_ETHEREUM_IPC_PORT,
|
||
|
)
|
||
|
|
||
|
logger = logging.getLogger(__name__)
|
||
|
|
||
|
|
||
|
def fetch_web3_provider_ip():
|
||
|
r53 = boto3.client("route53")
|
||
|
r53_response = r53.list_resource_record_sets(
|
||
|
HostedZoneId=MOONSTREAM_INTERNAL_HOSTED_ZONE_ID,
|
||
|
StartRecordName=f"{MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI}.",
|
||
|
StartRecordType="A",
|
||
|
)
|
||
|
try:
|
||
|
r53_records = r53_response["ResourceRecordSets"]
|
||
|
if r53_records[0]["Name"] != f"{MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI}.":
|
||
|
return None
|
||
|
|
||
|
record_value = r53_records[0]["ResourceRecords"][0]["Value"]
|
||
|
except Exception as e:
|
||
|
logger.error(e)
|
||
|
return None
|
||
|
|
||
|
return record_value
|
||
|
|
||
|
|
||
|
if not MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI.replace(".", "").isnumeric():
|
||
|
web3_provider_ip = fetch_web3_provider_ip()
|
||
|
if web3_provider_ip is None:
|
||
|
raise ValueError("Unable to extract web3 provider IP")
|
||
|
else:
|
||
|
web3_provider_ip = MOONSTREAM_ETHEREUM_WEB3_PROVIDER_URI
|
||
|
|
||
|
moonstream_web3_provider = Web3(
|
||
|
Web3.HTTPProvider(f"http://{web3_provider_ip}:{MOONSTREAM_NODE_ETHEREUM_IPC_PORT}")
|
||
|
)
|
||
|
|
||
|
|
||
|
def yield_web3_provider() -> Web3:
|
||
|
return moonstream_web3_provider
|