Use last written miner payment block as max written block

This commit is contained in:
Luke Van Seters 2021-09-13 21:09:00 -04:00
parent 040e08912a
commit f089dfe709
2 changed files with 23 additions and 2 deletions

View File

@ -1,5 +1,7 @@
import json import json
from typing import List from typing import List, Optional
from sqlalchemy.sql.expression import func
from mev_inspect.models.miner_payments import MinerPaymentModel from mev_inspect.models.miner_payments import MinerPaymentModel
from mev_inspect.schemas.miner_payments import MinerPayment from mev_inspect.schemas.miner_payments import MinerPayment
@ -29,3 +31,11 @@ def write_miner_payments(
db_session.bulk_save_objects(models) db_session.bulk_save_objects(models)
db_session.commit() db_session.commit()
def get_max_miner_payment_block(db_session) -> Optional[int]:
results = db_session.query(func.max(MinerPaymentModel.block_number)).one_or_none()
if results is None:
return None
else:
return int(results[0])

13
run.py
View File

@ -6,6 +6,8 @@ import time
from web3 import Web3 from web3 import Web3
from mev_inspect.block import get_latest_block_number from mev_inspect.block import get_latest_block_number
from mev_inspect.crud.miner_payments import get_max_miner_payment_block
from mev_inspect.db import get_session
from mev_inspect.provider import get_base_provider from mev_inspect.provider import get_base_provider
@ -33,7 +35,7 @@ class GracefulKiller:
self.kill_now = True self.kill_now = True
if __name__ == "__main__": def run():
rpc = os.getenv("RPC_URL") rpc = os.getenv("RPC_URL")
if rpc is None: if rpc is None:
raise RuntimeError("Missing environment variable RPC_URL") raise RuntimeError("Missing environment variable RPC_URL")
@ -41,12 +43,21 @@ if __name__ == "__main__":
logger.info("Starting...") logger.info("Starting...")
killer = GracefulKiller() killer = GracefulKiller()
db_session = get_session()
base_provider = get_base_provider(rpc) base_provider = get_base_provider(rpc)
w3 = Web3(base_provider) w3 = Web3(base_provider)
while not killer.kill_now: while not killer.kill_now:
latest_block_number = get_latest_block_number(w3) latest_block_number = get_latest_block_number(w3)
last_written_block = get_max_miner_payment_block(db_session)
logger.info(f"Latest block: {latest_block_number}") logger.info(f"Latest block: {latest_block_number}")
logger.info(f"Last written block: {last_written_block}")
time.sleep(5) time.sleep(5)
logger.info("Stopping...") logger.info("Stopping...")
if __name__ == "__main__":
run()