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 = []
for transaction_hash, transaciton_traces in get_traces_by_transaction_hash(traces):
eth_transfers = get_eth_transfers(list(transaciton_traces))
miner_eth_transfers = filter_transfers( miner_eth_transfers = filter_transfers(
eth_transfers, to_address=miner_address.lower() eth_transfers, to_address=miner_address.lower()
) )
total_eth_transfer_payment = sum(
eth_by_transaction: Dict[str, int] = {} transfer.amount for transfer in miner_eth_transfers
for transfer in miner_eth_transfers:
existing_amount = eth_by_transaction.get(transfer.transaction_hash, 0)
eth_by_transaction[transfer.transaction_hash] = (
existing_amount + transfer.amount
) )
return [ if total_eth_transfer_payment > 0:
miner_payments.append(
MinerPayment( MinerPayment(
transaction_hash=transaction_hash, transaction_hash=transaction_hash,
total_eth_transfer_payment=eth_amount, 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)