feat: change to "punk bid acceptance" and get punk bid acceptances
This commit is contained in:
parent
96d2171daa
commit
1de1570939
@ -5,7 +5,7 @@ from mev_inspect.schemas.traces import (
|
|||||||
from mev_inspect.schemas.classifiers import (
|
from mev_inspect.schemas.classifiers import (
|
||||||
ClassifierSpec,
|
ClassifierSpec,
|
||||||
PunkBidClassifier,
|
PunkBidClassifier,
|
||||||
PunkAcceptBidClassifier,
|
PunkBidAcceptanceClassifier,
|
||||||
)
|
)
|
||||||
|
|
||||||
CRYPTO_PUNKS_SPEC = ClassifierSpec(
|
CRYPTO_PUNKS_SPEC = ClassifierSpec(
|
||||||
@ -14,7 +14,7 @@ CRYPTO_PUNKS_SPEC = ClassifierSpec(
|
|||||||
valid_contract_addresses=["0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB"],
|
valid_contract_addresses=["0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB"],
|
||||||
classifiers={
|
classifiers={
|
||||||
"enterBidForPunk(uint)": PunkBidClassifier,
|
"enterBidForPunk(uint)": PunkBidClassifier,
|
||||||
"acceptBidForPunk(uint,uint)": PunkAcceptBidClassifier,
|
"acceptBidForPunk(uint,uint)": PunkBidAcceptanceClassifier,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ from mev_inspect.crud.liquidations import (
|
|||||||
write_liquidations,
|
write_liquidations,
|
||||||
)
|
)
|
||||||
from mev_inspect.miner_payments import get_miner_payments
|
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.swaps import get_swaps
|
||||||
from mev_inspect.transfers import get_transfers
|
from mev_inspect.transfers import get_transfers
|
||||||
from mev_inspect.liquidations import get_liquidations
|
from mev_inspect.liquidations import get_liquidations
|
||||||
@ -95,6 +95,9 @@ async def inspect_block(
|
|||||||
punk_bids = get_punk_bids(classified_traces)
|
punk_bids = get_punk_bids(classified_traces)
|
||||||
logger.info(f"Block: {block_number} -- Found {len(punk_bids)} punk bids")
|
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(
|
miner_payments = get_miner_payments(
|
||||||
block.miner, block.base_fee_per_gas, classified_traces, block.receipts
|
block.miner, block.base_fee_per_gas, classified_traces, block.receipts
|
||||||
)
|
)
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from typing import List
|
from typing import List
|
||||||
|
from mev_inspect.schemas import punk_accept_bid
|
||||||
|
|
||||||
from mev_inspect.schemas.traces import (
|
from mev_inspect.schemas.traces import (
|
||||||
ClassifiedTrace,
|
ClassifiedTrace,
|
||||||
@ -6,34 +7,34 @@ from mev_inspect.schemas.traces import (
|
|||||||
DecodedCallTrace,
|
DecodedCallTrace,
|
||||||
)
|
)
|
||||||
from mev_inspect.schemas.punk_bid import PunkBid
|
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
|
from mev_inspect.traces import get_traces_by_transaction_hash
|
||||||
|
|
||||||
|
|
||||||
def get_punk_accept_bids(traces: List[ClassifiedTrace]) -> List[PunkAcceptBid]:
|
def get_punk_bid_acceptances(traces: List[ClassifiedTrace]) -> List[PunkBidAcceptance]:
|
||||||
punk_accept_bids = []
|
punk_bid_acceptances = []
|
||||||
|
|
||||||
for _, transaction_traces in get_traces_by_transaction_hash(traces).items():
|
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)
|
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],
|
traces: List[ClassifiedTrace],
|
||||||
) -> List[PunkAcceptBid]:
|
) -> List[PunkBidAcceptance]:
|
||||||
ordered_traces = list(sorted(traces, key=lambda t: t.trace_address))
|
ordered_traces = list(sorted(traces, key=lambda t: t.trace_address))
|
||||||
|
|
||||||
punk_accept_bids = []
|
punk_bid_acceptances = []
|
||||||
|
|
||||||
for trace in ordered_traces:
|
for trace in ordered_traces:
|
||||||
if not isinstance(trace, DecodedCallTrace):
|
if not isinstance(trace, DecodedCallTrace):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
elif trace.classification == Classification.punk_accept_bid:
|
elif trace.classification == Classification.punk_accept_bid:
|
||||||
punk_accept_bid = PunkAcceptBid(
|
punk_accept_bid = PunkBidAcceptance(
|
||||||
block_number=trace.block_number,
|
block_number=trace.block_number,
|
||||||
transaction_hash=trace.transaction_hash,
|
transaction_hash=trace.transaction_hash,
|
||||||
trace_address=trace.trace_address,
|
trace_address=trace.trace_address,
|
||||||
@ -42,9 +43,9 @@ def _get_punk_accept_bids_for_transaction(
|
|||||||
min_price=trace.inputs["min_price"],
|
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]:
|
def get_punk_bids(traces: List[ClassifiedTrace]) -> List[PunkBid]:
|
||||||
|
@ -6,7 +6,7 @@ from pydantic import BaseModel
|
|||||||
from .traces import Classification, DecodedCallTrace, Protocol
|
from .traces import Classification, DecodedCallTrace, Protocol
|
||||||
from .transfers import Transfer
|
from .transfers import Transfer
|
||||||
from .punk_bid import PunkBid
|
from .punk_bid import PunkBid
|
||||||
from .punk_accept_bid import PunkAcceptBid
|
from .punk_accept_bid import PunkBidAcceptance
|
||||||
|
|
||||||
|
|
||||||
class Classifier(ABC):
|
class Classifier(ABC):
|
||||||
@ -27,14 +27,14 @@ class PunkBidClassifier(Classifier):
|
|||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
|
||||||
class PunkAcceptBidClassifier(Classifier):
|
class PunkBidAcceptanceClassifier(Classifier):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_classification() -> Classification:
|
def get_classification() -> Classification:
|
||||||
return Classification.punk_accept_bid
|
return Classification.punk_accept_bid
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def get_accept_bid(trace: DecodedCallTrace) -> PunkAcceptBid:
|
def get_accept_bid(trace: DecodedCallTrace) -> PunkBidAcceptance:
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ from typing import List
|
|||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
class PunkAcceptBid(BaseModel):
|
class PunkBidAcceptance(BaseModel):
|
||||||
block_number: int
|
block_number: int
|
||||||
transaction_hash: str
|
transaction_hash: str
|
||||||
trace_address: List[int]
|
trace_address: List[int]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user