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.classified_traces import ClassifiedTrace
|
||||||
from mev_inspect.schemas.miner_payments import MinerPayment
|
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.traces import get_traces_by_transaction_hash
|
||||||
from mev_inspect.transfers import (
|
from mev_inspect.transfers import (
|
||||||
filter_transfers,
|
filter_transfers,
|
||||||
@ -10,11 +11,14 @@ from mev_inspect.transfers import (
|
|||||||
|
|
||||||
|
|
||||||
def get_miner_payments(
|
def get_miner_payments(
|
||||||
miner_address: str, traces: List[ClassifiedTrace]
|
miner_address: str, traces: List[ClassifiedTrace], receipts: List[Receipt]
|
||||||
) -> List[MinerPayment]:
|
) -> List[MinerPayment]:
|
||||||
miner_payments = []
|
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)
|
eth_transfers = get_eth_transfers(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()
|
||||||
@ -27,7 +31,7 @@ def get_miner_payments(
|
|||||||
if total_eth_transfer_payment > 0:
|
if total_eth_transfer_payment > 0:
|
||||||
miner_payments.append(
|
miner_payments.append(
|
||||||
MinerPayment(
|
MinerPayment(
|
||||||
transaction_hash=transaction_hash,
|
transaction_hash=receipt.transaction_hash,
|
||||||
total_eth_transfer_payment=total_eth_transfer_payment,
|
total_eth_transfer_payment=total_eth_transfer_payment,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from itertools import groupby
|
from itertools import groupby
|
||||||
from typing import Iterator, List, Tuple
|
from typing import Dict, List
|
||||||
|
|
||||||
from mev_inspect.schemas.classified_traces import ClassifiedTrace
|
from mev_inspect.schemas.classified_traces import ClassifiedTrace
|
||||||
|
|
||||||
@ -36,10 +36,12 @@ def get_child_traces(
|
|||||||
|
|
||||||
def get_traces_by_transaction_hash(
|
def get_traces_by_transaction_hash(
|
||||||
traces: List[ClassifiedTrace],
|
traces: List[ClassifiedTrace],
|
||||||
) -> Iterator[Tuple[str, List[ClassifiedTrace]]]:
|
) -> Dict[str, List[ClassifiedTrace]]:
|
||||||
get_transaction_hash = lambda trace: trace.transaction_hash
|
get_transaction_hash = lambda trace: trace.transaction_hash
|
||||||
for transaction_hash, transaction_traces in groupby(
|
return {
|
||||||
sorted(traces, key=get_transaction_hash),
|
transaction_hash: list(traces)
|
||||||
key=get_transaction_hash,
|
for transaction_hash, traces in groupby(
|
||||||
):
|
sorted(traces, key=get_transaction_hash),
|
||||||
yield transaction_hash, list(transaction_traces)
|
key=get_transaction_hash,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
@ -104,7 +104,9 @@ def _inspect_block(
|
|||||||
delete_classified_traces_for_block(db_session, block_number)
|
delete_classified_traces_for_block(db_session, block_number)
|
||||||
write_classified_traces(db_session, classified_traces)
|
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("Miner payments:")
|
||||||
click.echo(json.dumps([p.dict() for p in miner_payments], indent=4))
|
click.echo(json.dumps([p.dict() for p in miner_payments], indent=4))
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user