feat: change to "punk bid acceptance" and get punk bid acceptances

This commit is contained in:
Robert Miller 2021-11-17 21:51:56 -05:00
parent 96d2171daa
commit 1de1570939
5 changed files with 22 additions and 18 deletions

View File

@ -5,7 +5,7 @@ from mev_inspect.schemas.traces import (
from mev_inspect.schemas.classifiers import (
ClassifierSpec,
PunkBidClassifier,
PunkAcceptBidClassifier,
PunkBidAcceptanceClassifier,
)
CRYPTO_PUNKS_SPEC = ClassifierSpec(
@ -14,7 +14,7 @@ CRYPTO_PUNKS_SPEC = ClassifierSpec(
valid_contract_addresses=["0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB"],
classifiers={
"enterBidForPunk(uint)": PunkBidClassifier,
"acceptBidForPunk(uint,uint)": PunkAcceptBidClassifier,
"acceptBidForPunk(uint,uint)": PunkBidAcceptanceClassifier,
},
)

View File

@ -27,7 +27,7 @@ from mev_inspect.crud.liquidations import (
write_liquidations,
)
from mev_inspect.miner_payments import get_miner_payments
from mev_inspect.punks import get_punk_bids
from mev_inspect.punks import get_punk_bid_acceptances, get_punk_bids
from mev_inspect.swaps import get_swaps
from mev_inspect.transfers import get_transfers
from mev_inspect.liquidations import get_liquidations
@ -95,6 +95,9 @@ async def inspect_block(
punk_bids = get_punk_bids(classified_traces)
logger.info(f"Block: {block_number} -- Found {len(punk_bids)} punk bids")
punk_bid_acceptances = get_punk_bid_acceptances(classified_traces)
logger.info(f"Block: {block_number} -- Found {len(punk_bid_acceptances)} punk bids")
miner_payments = get_miner_payments(
block.miner, block.base_fee_per_gas, classified_traces, block.receipts
)

View File

@ -1,4 +1,5 @@
from typing import List
from mev_inspect.schemas import punk_accept_bid
from mev_inspect.schemas.traces import (
ClassifiedTrace,
@ -6,34 +7,34 @@ from mev_inspect.schemas.traces import (
DecodedCallTrace,
)
from mev_inspect.schemas.punk_bid import PunkBid
from mev_inspect.schemas.punk_accept_bid import PunkAcceptBid
from mev_inspect.schemas.punk_accept_bid import PunkBidAcceptance
from mev_inspect.traces import get_traces_by_transaction_hash
def get_punk_accept_bids(traces: List[ClassifiedTrace]) -> List[PunkAcceptBid]:
punk_accept_bids = []
def get_punk_bid_acceptances(traces: List[ClassifiedTrace]) -> List[PunkBidAcceptance]:
punk_bid_acceptances = []
for _, transaction_traces in get_traces_by_transaction_hash(traces).items():
punk_accept_bids += _get_punk_accept_bids_for_transaction(
punk_bid_acceptances += _get_punk_bid_acceptances_for_transaction(
list(transaction_traces)
)
return punk_accept_bids
return punk_bid_acceptances
def _get_punk_accept_bids_for_transaction(
def _get_punk_bid_acceptances_for_transaction(
traces: List[ClassifiedTrace],
) -> List[PunkAcceptBid]:
) -> List[PunkBidAcceptance]:
ordered_traces = list(sorted(traces, key=lambda t: t.trace_address))
punk_accept_bids = []
punk_bid_acceptances = []
for trace in ordered_traces:
if not isinstance(trace, DecodedCallTrace):
continue
elif trace.classification == Classification.punk_accept_bid:
punk_accept_bid = PunkAcceptBid(
punk_accept_bid = PunkBidAcceptance(
block_number=trace.block_number,
transaction_hash=trace.transaction_hash,
trace_address=trace.trace_address,
@ -42,9 +43,9 @@ def _get_punk_accept_bids_for_transaction(
min_price=trace.inputs["min_price"],
)
punk_accept_bids.append(punk_accept_bid)
punk_bid_acceptances.append(punk_accept_bid)
return punk_accept_bids
return punk_bid_acceptances
def get_punk_bids(traces: List[ClassifiedTrace]) -> List[PunkBid]:

View File

@ -6,7 +6,7 @@ from pydantic import BaseModel
from .traces import Classification, DecodedCallTrace, Protocol
from .transfers import Transfer
from .punk_bid import PunkBid
from .punk_accept_bid import PunkAcceptBid
from .punk_accept_bid import PunkBidAcceptance
class Classifier(ABC):
@ -27,14 +27,14 @@ class PunkBidClassifier(Classifier):
raise NotImplementedError()
class PunkAcceptBidClassifier(Classifier):
class PunkBidAcceptanceClassifier(Classifier):
@staticmethod
def get_classification() -> Classification:
return Classification.punk_accept_bid
@staticmethod
@abstractmethod
def get_accept_bid(trace: DecodedCallTrace) -> PunkAcceptBid:
def get_accept_bid(trace: DecodedCallTrace) -> PunkBidAcceptance:
raise NotImplementedError()

View File

@ -3,7 +3,7 @@ from typing import List
from pydantic import BaseModel
class PunkAcceptBid(BaseModel):
class PunkBidAcceptance(BaseModel):
block_number: int
transaction_hash: str
trace_address: List[int]