diff --git a/mev_inspect/block.py b/mev_inspect/block.py index 83f61bf..17dcf0b 100644 --- a/mev_inspect/block.py +++ b/mev_inspect/block.py @@ -71,6 +71,7 @@ async def _fetch_block(w3, base_provider, block_number: int, retries: int = 0) - return Block( block_number=block_number, + block_timestamp=block_json["timestamp"], miner=block_json["miner"], base_fee_per_gas=base_fee_per_gas, traces=traces, @@ -82,6 +83,7 @@ def _find_block( trace_db_session: orm.Session, block_number: int, ) -> Optional[Block]: + block_timestamp = _find_block_timestamp(trace_db_session, block_number) traces = _find_traces(trace_db_session, block_number) receipts = _find_receipts(trace_db_session, block_number) base_fee_per_gas = _find_base_fee(trace_db_session, block_number) @@ -96,6 +98,7 @@ def _find_block( return Block( block_number=block_number, + block_timestamp=block_timestamp, miner=miner_address, base_fee_per_gas=base_fee_per_gas, traces=traces, @@ -103,6 +106,22 @@ def _find_block( ) +def _find_block_timestamp( + trace_db_session: orm.Session, + block_number: int, +) -> Optional[int]: + result = trace_db_session.execute( + "SELECT block_timestamp FROM block_timestamps WHERE block_number = :block_number", + params={"block_number": block_number}, + ).one_or_none() + + if result is None: + return None + else: + (block_timestamp,) = result + return block_timestamp + + def _find_traces( trace_db_session: orm.Session, block_number: int, diff --git a/mev_inspect/schemas/blocks.py b/mev_inspect/schemas/blocks.py index 2f8f2e6..c3dd3d7 100644 --- a/mev_inspect/schemas/blocks.py +++ b/mev_inspect/schemas/blocks.py @@ -38,6 +38,7 @@ class CallAction(Web3Model): class Block(Web3Model): block_number: int + block_timestamp: int miner: str base_fee_per_gas: int traces: List[Trace]