Run grouped by transaction

This commit is contained in:
Luke Van Seters 2021-08-23 13:19:36 -04:00
parent 0b74331235
commit f4bba7c885
2 changed files with 28 additions and 18 deletions

View File

@ -1,32 +1,34 @@
from typing import Dict, List from typing import List
from mev_inspect.schemas.classified_traces import ClassifiedTrace from mev_inspect.schemas.classified_traces import ClassifiedTrace
from mev_inspect.schemas.miner_payments import MinerPayment from mev_inspect.schemas.miner_payments import MinerPayment
from mev_inspect.traces import get_traces_by_transaction_hash
from mev_inspect.transfers import ( from mev_inspect.transfers import (
get_eth_transfers,
filter_transfers, filter_transfers,
get_eth_transfers,
) )
def get_miner_payments( def get_miner_payments(
miner_address: str, traces: List[ClassifiedTrace] miner_address: str, traces: List[ClassifiedTrace]
) -> List[MinerPayment]: ) -> List[MinerPayment]:
eth_transfers = get_eth_transfers(traces) miner_payments = []
miner_eth_transfers = filter_transfers(
eth_transfers, to_address=miner_address.lower()
)
eth_by_transaction: Dict[str, int] = {} for transaction_hash, transaciton_traces in get_traces_by_transaction_hash(traces):
for transfer in miner_eth_transfers: eth_transfers = get_eth_transfers(list(transaciton_traces))
existing_amount = eth_by_transaction.get(transfer.transaction_hash, 0) miner_eth_transfers = filter_transfers(
eth_by_transaction[transfer.transaction_hash] = ( eth_transfers, to_address=miner_address.lower()
existing_amount + transfer.amount )
total_eth_transfer_payment = sum(
transfer.amount for transfer in miner_eth_transfers
) )
return [ if total_eth_transfer_payment > 0:
MinerPayment( miner_payments.append(
transaction_hash=transaction_hash, MinerPayment(
total_eth_transfer_payment=eth_amount, transaction_hash=transaction_hash,
) total_eth_transfer_payment=total_eth_transfer_payment,
for transaction_hash, eth_amount in eth_by_transaction.items() )
] )
return miner_payments

View File

@ -1,3 +1,4 @@
from itertools import groupby
from typing import List from typing import List
from mev_inspect.schemas.classified_traces import ClassifiedTrace from mev_inspect.schemas.classified_traces import ClassifiedTrace
@ -31,3 +32,10 @@ def get_child_traces(
child_traces.append(trace) child_traces.append(trace)
return child_traces return child_traces
def get_traces_by_transaction_hash(
traces: List[ClassifiedTrace],
) -> groupby[str, ClassifiedTrace]:
get_transaction_hash = lambda trace: trace.transaction_hash
return groupby(sorted(traces, key=get_transaction_hash), key=get_transaction_hash)