diff --git a/listener b/listener index 02b4e11..e468db7 100755 --- a/listener +++ b/listener @@ -18,7 +18,7 @@ case "$1" in --quiet \ --pidfile $PIDFILE \ --make-pidfile \ - --startas /bin/bash -- -c "poetry run python listener.py $2" + --startas /bin/bash -- -c "poetry run python listener.py" echo "." ;; stop) @@ -42,7 +42,7 @@ case "$1" in --quiet \ --pidfile $PIDFILE \ --make-pidfile \ - --startas /bin/bash -- -c "poetry run python listener.py $2" + --startas /bin/bash -- -c "poetry run python listener.py" echo "." ;; diff --git a/listener.py b/listener.py index 5c8afc3..38c6ac3 100644 --- a/listener.py +++ b/listener.py @@ -5,6 +5,8 @@ import sys import dramatiq from aiohttp_retry import ExponentialRetry, RetryClient +from web3 import Web3, HTTPProvider +import traceback from mev_inspect.block import get_latest_block_number from mev_inspect.concurrency import coro @@ -61,10 +63,17 @@ async def run(): queue_name=HIGH_PRIORITY_QUEUE, priority=HIGH_PRIORITY, ) - - type_e = convert_str_to_enum(sys.argv[1]) + + w3 = Web3(HTTPProvider(rpc)) + res = w3.provider.make_request('trace_block', ['earliest']) + if 'error' in res and res['error']['message'] == 'the method trace_block does not exist/is not available': + type_e = RPCType.geth + else: + type_e = RPCType.parity + base_provider = get_base_provider(rpc, type=type_e) + # type_e = convert_str_to_enum(sys.argv[1]) inspector = MEVInspector(rpc, type_e) - base_provider = get_base_provider(rpc) + while not killer.kill_now: await inspect_next_block( diff --git a/mev b/mev index 64927cb..a2f09df 100755 --- a/mev +++ b/mev @@ -43,7 +43,7 @@ case "$1" in redis ;; listener) - kubectl exec -ti deploy/mev-inspect -- ./listener $2 $3 + kubectl exec -ti deploy/mev-inspect -- ./listener $2 ;; block-list) echo "Backfilling blocks from stdin" diff --git a/mev_inspect/block.py b/mev_inspect/block.py index 0ab3fc9..cf9cf98 100644 --- a/mev_inspect/block.py +++ b/mev_inspect/block.py @@ -10,6 +10,7 @@ from mev_inspect.schemas.blocks import Block from mev_inspect.schemas.receipts import Receipt from mev_inspect.schemas.traces import Trace, TraceType from mev_inspect.utils import RPCType, hex_to_int +from mev_inspect.geth_poa_middleware import geth_poa_middleware logger = logging.getLogger(__name__) _calltype_mapping = { @@ -33,16 +34,15 @@ async def get_latest_block_number(base_provider) -> int: async def create_from_block_number( w3: Web3, - type: RPCType, block_number: int, trace_db_session: Optional[orm.Session], ) -> Block: + type = RPCType.geth if geth_poa_middleware in w3.provider.middlewares else RPCType.parity if type == RPCType.geth: block_json = await w3.eth.get_block(block_number) else: block_json = dict() - block_timestamp, receipts, traces, base_fee_per_gas = await asyncio.gather( _find_or_fetch_block_timestamp(w3, block_number, trace_db_session), _find_or_fetch_block_receipts( @@ -116,7 +116,7 @@ async def _find_or_fetch_block_traces( existing_block_traces = _find_block_traces(trace_db_session, block_number) if existing_block_traces is not None: return existing_block_traces - + if type == RPCType.geth: # Translate to parity format traces = await geth_get_tx_traces_parity_format(w3.provider, block_json) diff --git a/mev_inspect/inspect_block.py b/mev_inspect/inspect_block.py index e7afd62..45689ca 100644 --- a/mev_inspect/inspect_block.py +++ b/mev_inspect/inspect_block.py @@ -61,7 +61,6 @@ logger = logging.getLogger(__name__) async def inspect_block( inspect_db_session: orm.Session, w3: Web3, - type: RPCType, trace_classifier: TraceClassifier, block_number: int, trace_db_session: Optional[orm.Session], @@ -71,7 +70,6 @@ async def inspect_block( inspect_db_session, w3, trace_classifier, - type, block_number, block_number + 1, trace_db_session, @@ -83,7 +81,6 @@ async def inspect_many_blocks( inspect_db_session: orm.Session, w3: Web3, trace_classifier: TraceClassifier, - type: RPCType, after_block_number: int, before_block_number: int, trace_db_session: Optional[orm.Session], @@ -110,7 +107,6 @@ async def inspect_many_blocks( w3=w3, block_number=block_number, trace_db_session=trace_db_session, - type=type, ) logger.info(f"Block: {block_number} -- Total traces: {len(block.traces)}") diff --git a/mev_inspect/inspector.py b/mev_inspect/inspector.py index 38c90f6..593ca03 100644 --- a/mev_inspect/inspector.py +++ b/mev_inspect/inspector.py @@ -60,7 +60,6 @@ class MEVInspector: return await inspect_block( inspect_db_session, self.w3, - self.type, self.trace_classifier, block, trace_db_session=trace_db_session,