diff --git a/mev_inspect/block.py b/mev_inspect/block.py index 821f031..b4d7d6a 100644 --- a/mev_inspect/block.py +++ b/mev_inspect/block.py @@ -12,7 +12,13 @@ cache_directory = "./cache" ## Creates a block object, either from the cache or from the chain itself ## Note that you need to pass in the provider, not the web3 wrapped provider object! ## This is because only the provider allows you to make json rpc requests -def create_from_block_number(block_number: int, base_provider) -> Block: +def create_from_block_number( + block_number: int, base_provider, should_cache: bool +) -> Block: + if not should_cache: + w3 = Web3(base_provider) + return fetch_block(w3, base_provider, block_number) + cache_path = _get_cache_path(block_number) if cache_path.is_file(): diff --git a/scripts/inspect_block.py b/scripts/inspect_block.py index 6d1e9c6..2cf3dd8 100644 --- a/scripts/inspect_block.py +++ b/scripts/inspect_block.py @@ -28,29 +28,41 @@ def cli(): @cli.command() @click.argument("block_number", type=int) @click.argument("rpc") -def inspect_block(block_number: int, rpc: str): +@click.option("--cache/--no-cache", default=True) +def inspect_block(block_number: int, rpc: str, cache: bool): base_provider = Web3.HTTPProvider(rpc) - _inspect_block(base_provider, block_number) + + if not cache: + click.echo("Skipping cache") + + _inspect_block(base_provider, block_number, should_cache=cache) @cli.command() @click.argument("after_block", type=int) @click.argument("before_block", type=int) @click.argument("rpc") -def inspect_many_blocks(after_block: int, before_block: int, rpc: str): +@click.option("--cache/--no-cache", default=True) +def inspect_many_blocks(after_block: int, before_block: int, rpc: str, cache: bool): base_provider = Web3.HTTPProvider(rpc) + + if not cache: + click.echo("Skipping cache") + for block_number in range(after_block + 1, before_block): _inspect_block( base_provider, block_number, should_print_stats=False, should_write_classified_traces=False, + should_cache=cache, ) def _inspect_block( base_provider, block_number: int, + should_cache: bool, should_print_stats: bool = True, should_write_classified_traces: bool = True, should_write_swaps: bool = True, @@ -63,7 +75,10 @@ def _inspect_block( click.echo(block_message) click.echo(dashes) - block_data = block.create_from_block_number(block_number, base_provider) + block_data = block.create_from_block_number( + block_number, base_provider, should_cache + ) + click.echo(f"Total traces: {len(block_data.traces)}") total_transactions = len( diff --git a/scripts/poetry/inspect.py b/scripts/poetry/inspect.py index 4f273ce..df6979b 100644 --- a/scripts/poetry/inspect.py +++ b/scripts/poetry/inspect.py @@ -10,7 +10,12 @@ import click @click.option( "-r", "--rpc", help="rpc endpoint, this needs to have parity style traces" ) -def inspect(block_number: str, rpc: str): +@click.option( + "--cache/--no-cache", + help="whether to read / write to the cache", + default=True, +) +def inspect(block_number: str, rpc: str, cache: bool): check_call( [ "docker", @@ -22,17 +27,21 @@ def inspect(block_number: str, rpc: str): "inspect-block", block_number, rpc, + "--cache" if cache else "--no-cache", ] ) @click.command() -@click.option("--after-block", type=str, help="look at blocks after this number") -@click.option("--before-block", type=str, help="look at blocks before this number") +@click.argument("after_block", type=str) +@click.argument("before_block", type=str) +@click.argument("rpc") @click.option( - "-r", "--rpc", help="rpc endpoint, this needs to have parity style traces" + "--cache/--no-cache", + help="whether to read / write to the cache", + default=True, ) -def inspect_many(after_block: str, before_block: str, rpc: str): +def inspect_many(after_block: str, before_block: str, rpc: str, cache: bool): check_call( [ "docker", @@ -45,5 +54,6 @@ def inspect_many(after_block: str, before_block: str, rpc: str): after_block, before_block, rpc, + "--cache" if cache else "--no-cache", ] )