diff --git a/mev_inspect/block.py b/mev_inspect/block.py index b8f26dc..0079fca 100644 --- a/mev_inspect/block.py +++ b/mev_inspect/block.py @@ -4,6 +4,7 @@ from typing import Any, Dict, List from web3 import Web3 from mev_inspect.schemas import Block, Trace, TraceType +from mev_inspect.schemas.receipts import Receipt cache_directory = "./cache" @@ -46,6 +47,9 @@ def fetch_block(w3, base_provider, block_number: int) -> Block: block_receipts_raw = base_provider.make_request( "eth_getBlockReceipts", [block_number] ) + receipts: List[Receipt] = [ + Receipt(**receipt) for receipt in block_receipts_raw["result"] + ] ## Trace the whole block, return those calls traces_json = w3.parity.trace_block(block_number) @@ -63,7 +67,7 @@ def fetch_block(w3, base_provider, block_number: int) -> Block: return Block( block_number=block_number, data=block_data, - receipts=block_receipts_raw, + receipts=receipts, traces=traces, logs=block_logs, transaction_hashes=transaction_hashes, diff --git a/mev_inspect/schemas/blocks.py b/mev_inspect/schemas/blocks.py index 7eb1096..03ed0bf 100644 --- a/mev_inspect/schemas/blocks.py +++ b/mev_inspect/schemas/blocks.py @@ -4,6 +4,8 @@ from typing import Dict, List, Optional from pydantic import validator from mev_inspect.utils import hex_to_int + +from .receipts import Receipt from .utils import CamelModel, Web3Model @@ -60,7 +62,7 @@ class Block(Web3Model): traces: List[Trace] data: dict logs: List[dict] - receipts: dict + receipts: List[Receipt] transaction_hashes: List[str] txs_gas_data: Dict[str, dict] diff --git a/mev_inspect/schemas/receipts.py b/mev_inspect/schemas/receipts.py new file mode 100644 index 0000000..7cbba0e --- /dev/null +++ b/mev_inspect/schemas/receipts.py @@ -0,0 +1,5 @@ +from .utils import CamelModel + + +class Receipt(CamelModel): + pass