feat: add punk classifiers

This commit is contained in:
Robert Miller 2021-11-15 21:08:07 -05:00
parent c5ab2be4e3
commit 5766abb9fe
4 changed files with 53 additions and 0 deletions

View File

@ -4,12 +4,18 @@ from mev_inspect.schemas.traces import (
from mev_inspect.schemas.classifiers import (
ClassifierSpec,
PunkBidClassifier,
PunkAcceptBidClassifier,
)
CRYPTO_PUNKS_SPEC = ClassifierSpec(
abi_name="cryptopunks",
protocol=Protocol.cryptopunks,
valid_contract_addresses=["0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB"],
classifiers={
"enterBidForPunk(uint)": PunkBidClassifier,
"acceptBidForPunk(uint,uint)": PunkAcceptBidClassifier,
},
)
CRYPTOPUNKS_CLASSIFIER_SPECS = [CRYPTO_PUNKS_SPEC]

View File

@ -5,6 +5,8 @@ from pydantic import BaseModel
from .traces import Classification, DecodedCallTrace, Protocol
from .transfers import Transfer
from .punk_bid import Punk_Bid
from .punk_accept_bid import Punk_Accept_Bid
class Classifier(ABC):
@ -14,6 +16,28 @@ class Classifier(ABC):
raise NotImplementedError()
class PunkBidClassifier(Classifier):
@staticmethod
def get_classification() -> Classification:
return Classification.punk_bid
@staticmethod
@abstractmethod
def get_bid(trace: DecodedCallTrace) -> Punk_Bid:
raise NotImplementedError()
class PunkAcceptBidClassifier(Classifier):
@staticmethod
def get_classification() -> Classification:
return Classification.punk_accept_bid
@staticmethod
@abstractmethod
def get_accept_bid(trace: DecodedCallTrace) -> Punk_Accept_Bid:
raise NotImplementedError()
class TransferClassifier(Classifier):
@staticmethod
def get_classification() -> Classification:

View File

@ -0,0 +1,12 @@
from typing import List
from pydantic import BaseModel
class Punk_Accept_Bid(BaseModel):
block_number: int
transaction_hash: str
trace_address: List[int]
from_address: str
punk_index: int
min_price: int

View File

@ -0,0 +1,11 @@
from typing import List
from pydantic import BaseModel
class Punk_Bid(BaseModel):
block_number: int
transaction_hash: str
trace_address: List[int]
from_address: str
punk_index: int
amount: int