feat: add support for punk snipes
This commit is contained in:
parent
f31430da30
commit
377137d9c8
@ -27,7 +27,8 @@ 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_bid_acceptances, get_punk_bids
|
from mev_inspect.punks import get_punk_bid_acceptances, get_punk_bids, get_punk_snipes
|
||||||
|
from mev_inspect.schemas import punk_snipe
|
||||||
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
|
||||||
@ -93,10 +94,10 @@ async def inspect_block(
|
|||||||
write_liquidations(inspect_db_session, liquidations)
|
write_liquidations(inspect_db_session, liquidations)
|
||||||
|
|
||||||
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")
|
|
||||||
|
|
||||||
punk_bid_acceptances = get_punk_bid_acceptances(classified_traces)
|
punk_bid_acceptances = get_punk_bid_acceptances(classified_traces)
|
||||||
logger.info(f"Block: {block_number} -- Found {len(punk_bid_acceptances)} punk bids")
|
|
||||||
|
punk_snipes = get_punk_snipes(punk_bids, punk_bid_acceptances)
|
||||||
|
logger.info(f"Block: {block_number} -- Found {len(punk_snipes)} punk snipes")
|
||||||
|
|
||||||
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,6 +1,4 @@
|
|||||||
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,
|
||||||
Classification,
|
Classification,
|
||||||
@ -8,9 +6,34 @@ from mev_inspect.schemas.traces import (
|
|||||||
)
|
)
|
||||||
from mev_inspect.schemas.punk_bid import PunkBid
|
from mev_inspect.schemas.punk_bid import PunkBid
|
||||||
from mev_inspect.schemas.punk_accept_bid import PunkBidAcceptance
|
from mev_inspect.schemas.punk_accept_bid import PunkBidAcceptance
|
||||||
|
from mev_inspect.schemas.punk_snipe import PunkSnipe
|
||||||
from mev_inspect.traces import get_traces_by_transaction_hash
|
from mev_inspect.traces import get_traces_by_transaction_hash
|
||||||
|
|
||||||
|
|
||||||
|
def get_punk_snipes(
|
||||||
|
punk_bids: List[PunkBid], punk_bid_acceptances: List[PunkBidAcceptance]
|
||||||
|
) -> List[PunkSnipe]:
|
||||||
|
punk_snipe_list = []
|
||||||
|
|
||||||
|
for punk_bid in punk_bids:
|
||||||
|
for punk_bid_acceptance in punk_bid_acceptances:
|
||||||
|
if punk_bid.punk_index == punk_bid_acceptance.punk_index:
|
||||||
|
if punk_bid.amount > punk_bid_acceptance.min_price:
|
||||||
|
punk_snipe = PunkSnipe(
|
||||||
|
block_number=punk_bid.block_number,
|
||||||
|
transaction_hash=punk_bid.transaction_hash,
|
||||||
|
trace_address=punk_bid.trace_address,
|
||||||
|
from_address=punk_bid.from_address,
|
||||||
|
punk_index=punk_bid.punk_index,
|
||||||
|
min_acceptance_price=punk_bid_acceptance.min_price,
|
||||||
|
acceptance_price=punk_bid.amount,
|
||||||
|
)
|
||||||
|
|
||||||
|
punk_snipe_list.append(punk_snipe)
|
||||||
|
|
||||||
|
return punk_snipe_list
|
||||||
|
|
||||||
|
|
||||||
def get_punk_bid_acceptances(traces: List[ClassifiedTrace]) -> List[PunkBidAcceptance]:
|
def get_punk_bid_acceptances(traces: List[ClassifiedTrace]) -> List[PunkBidAcceptance]:
|
||||||
punk_bid_acceptances = []
|
punk_bid_acceptances = []
|
||||||
|
|
||||||
@ -39,8 +62,8 @@ def _get_punk_bid_acceptances_for_transaction(
|
|||||||
transaction_hash=trace.transaction_hash,
|
transaction_hash=trace.transaction_hash,
|
||||||
trace_address=trace.trace_address,
|
trace_address=trace.trace_address,
|
||||||
from_address=trace.from_address,
|
from_address=trace.from_address,
|
||||||
punk_index=trace.inputs["punk_index"],
|
punk_index=trace.inputs["punkIndex"],
|
||||||
min_price=trace.inputs["min_price"],
|
min_price=trace.inputs["minPrice"],
|
||||||
)
|
)
|
||||||
|
|
||||||
punk_bid_acceptances.append(punk_accept_bid)
|
punk_bid_acceptances.append(punk_accept_bid)
|
||||||
@ -72,8 +95,8 @@ def _get_punk_bids_for_transaction(traces: List[ClassifiedTrace]) -> List[PunkBi
|
|||||||
block_number=trace.block_number,
|
block_number=trace.block_number,
|
||||||
trace_address=trace.trace_address,
|
trace_address=trace.trace_address,
|
||||||
from_address=trace.from_address,
|
from_address=trace.from_address,
|
||||||
punk_index=trace.inputs["punk_index"],
|
punk_index=trace.inputs["punkIndex"],
|
||||||
value=trace.value,
|
amount=trace.value,
|
||||||
)
|
)
|
||||||
|
|
||||||
punk_bids.append(punk_bid)
|
punk_bids.append(punk_bid)
|
||||||
|
13
mev_inspect/schemas/punk_snipe.py
Normal file
13
mev_inspect/schemas/punk_snipe.py
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
from typing import List
|
||||||
|
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
class PunkSnipe(BaseModel):
|
||||||
|
block_number: int
|
||||||
|
transaction_hash: str
|
||||||
|
trace_address: List[int]
|
||||||
|
from_address: str
|
||||||
|
punk_index: int
|
||||||
|
min_acceptance_price: int
|
||||||
|
acceptance_price: int
|
Loading…
x
Reference in New Issue
Block a user