Removed type parameter, now infers through trace_block call

This commit is contained in:
ZigaMr 2022-05-23 01:33:55 +02:00
parent 19c80bd963
commit 4253928021
6 changed files with 18 additions and 14 deletions

View File

@ -18,7 +18,7 @@ case "$1" in
--quiet \ --quiet \
--pidfile $PIDFILE \ --pidfile $PIDFILE \
--make-pidfile \ --make-pidfile \
--startas /bin/bash -- -c "poetry run python listener.py $2" --startas /bin/bash -- -c "poetry run python listener.py"
echo "." echo "."
;; ;;
stop) stop)
@ -42,7 +42,7 @@ case "$1" in
--quiet \ --quiet \
--pidfile $PIDFILE \ --pidfile $PIDFILE \
--make-pidfile \ --make-pidfile \
--startas /bin/bash -- -c "poetry run python listener.py $2" --startas /bin/bash -- -c "poetry run python listener.py"
echo "." echo "."
;; ;;

View File

@ -5,6 +5,8 @@ import sys
import dramatiq import dramatiq
from aiohttp_retry import ExponentialRetry, RetryClient 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.block import get_latest_block_number
from mev_inspect.concurrency import coro from mev_inspect.concurrency import coro
@ -61,10 +63,17 @@ async def run():
queue_name=HIGH_PRIORITY_QUEUE, queue_name=HIGH_PRIORITY_QUEUE,
priority=HIGH_PRIORITY, 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) inspector = MEVInspector(rpc, type_e)
base_provider = get_base_provider(rpc)
while not killer.kill_now: while not killer.kill_now:
await inspect_next_block( await inspect_next_block(

2
mev
View File

@ -43,7 +43,7 @@ case "$1" in
redis redis
;; ;;
listener) listener)
kubectl exec -ti deploy/mev-inspect -- ./listener $2 $3 kubectl exec -ti deploy/mev-inspect -- ./listener $2
;; ;;
block-list) block-list)
echo "Backfilling blocks from stdin" echo "Backfilling blocks from stdin"

View File

@ -10,6 +10,7 @@ from mev_inspect.schemas.blocks import Block
from mev_inspect.schemas.receipts import Receipt from mev_inspect.schemas.receipts import Receipt
from mev_inspect.schemas.traces import Trace, TraceType from mev_inspect.schemas.traces import Trace, TraceType
from mev_inspect.utils import RPCType, hex_to_int from mev_inspect.utils import RPCType, hex_to_int
from mev_inspect.geth_poa_middleware import geth_poa_middleware
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
_calltype_mapping = { _calltype_mapping = {
@ -33,16 +34,15 @@ async def get_latest_block_number(base_provider) -> int:
async def create_from_block_number( async def create_from_block_number(
w3: Web3, w3: Web3,
type: RPCType,
block_number: int, block_number: int,
trace_db_session: Optional[orm.Session], trace_db_session: Optional[orm.Session],
) -> Block: ) -> Block:
type = RPCType.geth if geth_poa_middleware in w3.provider.middlewares else RPCType.parity
if type == RPCType.geth: if type == RPCType.geth:
block_json = await w3.eth.get_block(block_number) block_json = await w3.eth.get_block(block_number)
else: else:
block_json = dict() block_json = dict()
block_timestamp, receipts, traces, base_fee_per_gas = await asyncio.gather( 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_timestamp(w3, block_number, trace_db_session),
_find_or_fetch_block_receipts( _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) existing_block_traces = _find_block_traces(trace_db_session, block_number)
if existing_block_traces is not None: if existing_block_traces is not None:
return existing_block_traces return existing_block_traces
if type == RPCType.geth: if type == RPCType.geth:
# Translate to parity format # Translate to parity format
traces = await geth_get_tx_traces_parity_format(w3.provider, block_json) traces = await geth_get_tx_traces_parity_format(w3.provider, block_json)

View File

@ -61,7 +61,6 @@ logger = logging.getLogger(__name__)
async def inspect_block( async def inspect_block(
inspect_db_session: orm.Session, inspect_db_session: orm.Session,
w3: Web3, w3: Web3,
type: RPCType,
trace_classifier: TraceClassifier, trace_classifier: TraceClassifier,
block_number: int, block_number: int,
trace_db_session: Optional[orm.Session], trace_db_session: Optional[orm.Session],
@ -71,7 +70,6 @@ async def inspect_block(
inspect_db_session, inspect_db_session,
w3, w3,
trace_classifier, trace_classifier,
type,
block_number, block_number,
block_number + 1, block_number + 1,
trace_db_session, trace_db_session,
@ -83,7 +81,6 @@ async def inspect_many_blocks(
inspect_db_session: orm.Session, inspect_db_session: orm.Session,
w3: Web3, w3: Web3,
trace_classifier: TraceClassifier, trace_classifier: TraceClassifier,
type: RPCType,
after_block_number: int, after_block_number: int,
before_block_number: int, before_block_number: int,
trace_db_session: Optional[orm.Session], trace_db_session: Optional[orm.Session],
@ -110,7 +107,6 @@ async def inspect_many_blocks(
w3=w3, w3=w3,
block_number=block_number, block_number=block_number,
trace_db_session=trace_db_session, trace_db_session=trace_db_session,
type=type,
) )
logger.info(f"Block: {block_number} -- Total traces: {len(block.traces)}") logger.info(f"Block: {block_number} -- Total traces: {len(block.traces)}")

View File

@ -60,7 +60,6 @@ class MEVInspector:
return await inspect_block( return await inspect_block(
inspect_db_session, inspect_db_session,
self.w3, self.w3,
self.type,
self.trace_classifier, self.trace_classifier,
block, block,
trace_db_session=trace_db_session, trace_db_session=trace_db_session,