Pass receipts in. Have get_traces_by_transaction_hash return a dict

This commit is contained in:
Luke Van Seters 2021-08-25 11:23:14 -04:00
parent c48031e190
commit 4a35a07a1c
3 changed files with 19 additions and 11 deletions

View File

@ -2,6 +2,7 @@ from typing import List
from mev_inspect.schemas.classified_traces import ClassifiedTrace
from mev_inspect.schemas.miner_payments import MinerPayment
from mev_inspect.schemas.receipts import Receipt
from mev_inspect.traces import get_traces_by_transaction_hash
from mev_inspect.transfers import (
filter_transfers,
@ -10,11 +11,14 @@ from mev_inspect.transfers import (
def get_miner_payments(
miner_address: str, traces: List[ClassifiedTrace]
miner_address: str, traces: List[ClassifiedTrace], receipts: List[Receipt]
) -> List[MinerPayment]:
miner_payments = []
for transaction_hash, transaciton_traces in get_traces_by_transaction_hash(traces):
traces_by_transaction_hash = get_traces_by_transaction_hash(traces)
for receipt in receipts:
transaciton_traces = traces_by_transaction_hash[receipt.transaction_hash]
eth_transfers = get_eth_transfers(transaciton_traces)
miner_eth_transfers = filter_transfers(
eth_transfers, to_address=miner_address.lower()
@ -27,7 +31,7 @@ def get_miner_payments(
if total_eth_transfer_payment > 0:
miner_payments.append(
MinerPayment(
transaction_hash=transaction_hash,
transaction_hash=receipt.transaction_hash,
total_eth_transfer_payment=total_eth_transfer_payment,
)
)

View File

@ -1,5 +1,5 @@
from itertools import groupby
from typing import Iterator, List, Tuple
from typing import Dict, List
from mev_inspect.schemas.classified_traces import ClassifiedTrace
@ -36,10 +36,12 @@ def get_child_traces(
def get_traces_by_transaction_hash(
traces: List[ClassifiedTrace],
) -> Iterator[Tuple[str, List[ClassifiedTrace]]]:
) -> Dict[str, List[ClassifiedTrace]]:
get_transaction_hash = lambda trace: trace.transaction_hash
for transaction_hash, transaction_traces in groupby(
sorted(traces, key=get_transaction_hash),
key=get_transaction_hash,
):
yield transaction_hash, list(transaction_traces)
return {
transaction_hash: list(traces)
for transaction_hash, traces in groupby(
sorted(traces, key=get_transaction_hash),
key=get_transaction_hash,
)
}

View File

@ -104,7 +104,9 @@ def _inspect_block(
delete_classified_traces_for_block(db_session, block_number)
write_classified_traces(db_session, classified_traces)
miner_payments = get_miner_payments(block_data.miner, classified_traces)
miner_payments = get_miner_payments(
block_data.miner, classified_traces, block_data.receipts
)
click.echo("Miner payments:")
click.echo(json.dumps([p.dict() for p in miner_payments], indent=4))