Pass receipts in. Have get_traces_by_transaction_hash return a dict
This commit is contained in:
parent
c48031e190
commit
4a35a07a1c
@ -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,
|
||||
)
|
||||
)
|
||||
|
@ -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,
|
||||
)
|
||||
}
|
||||
|
@ -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))
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user