clean changes on top upstream
This commit is contained in:
parent
3c9fe3dca9
commit
b45f729237
File diff suppressed because one or more lines are too long
@ -5,7 +5,7 @@ from sqlalchemy import orm
|
|||||||
from web3 import Web3
|
from web3 import Web3
|
||||||
|
|
||||||
from mev_inspect.arbitrages import get_arbitrages
|
from mev_inspect.arbitrages import get_arbitrages
|
||||||
from mev_inspect.block import create_from_block_number
|
from mev_inspect.block import create_from_block_number, get_classified_traces_from_events
|
||||||
from mev_inspect.classifiers.trace import TraceClassifier
|
from mev_inspect.classifiers.trace import TraceClassifier
|
||||||
from mev_inspect.crud.arbitrages import delete_arbitrages_for_blocks, write_arbitrages
|
from mev_inspect.crud.arbitrages import delete_arbitrages_for_blocks, write_arbitrages
|
||||||
from mev_inspect.crud.blocks import delete_blocks, write_blocks
|
from mev_inspect.crud.blocks import delete_blocks, write_blocks
|
||||||
@ -85,152 +85,177 @@ async def inspect_many_blocks(
|
|||||||
trace_db_session: Optional[orm.Session],
|
trace_db_session: Optional[orm.Session],
|
||||||
should_write_classified_traces: bool = True,
|
should_write_classified_traces: bool = True,
|
||||||
):
|
):
|
||||||
all_blocks: List[Block] = []
|
|
||||||
all_classified_traces: List[ClassifiedTrace] = []
|
|
||||||
all_transfers: List[Transfer] = []
|
|
||||||
all_swaps: List[Swap] = []
|
|
||||||
all_arbitrages: List[Arbitrage] = []
|
|
||||||
all_liquidations: List[Liquidation] = []
|
|
||||||
all_sandwiches: List[Sandwich] = []
|
|
||||||
|
|
||||||
all_punk_bids: List[PunkBid] = []
|
|
||||||
all_punk_bid_acceptances: List[PunkBidAcceptance] = []
|
|
||||||
all_punk_snipes: List[PunkSnipe] = []
|
|
||||||
|
|
||||||
all_miner_payments: List[MinerPayment] = []
|
|
||||||
|
|
||||||
all_nft_trades: List[NftTrade] = []
|
|
||||||
|
|
||||||
for block_number in range(after_block_number, before_block_number):
|
|
||||||
block = await create_from_block_number(
|
|
||||||
w3,
|
|
||||||
block_number,
|
|
||||||
trace_db_session,
|
|
||||||
)
|
|
||||||
|
|
||||||
logger.info(f"Block: {block_number} -- Total traces: {len(block.traces)}")
|
|
||||||
|
|
||||||
total_transactions = len(
|
|
||||||
set(
|
|
||||||
t.transaction_hash
|
|
||||||
for t in block.traces
|
|
||||||
if t.transaction_hash is not None
|
|
||||||
)
|
|
||||||
)
|
|
||||||
logger.info(
|
|
||||||
f"Block: {block_number} -- Total transactions: {total_transactions}"
|
|
||||||
)
|
|
||||||
|
|
||||||
classified_traces = trace_classifier.classify(block.traces)
|
|
||||||
logger.info(
|
|
||||||
f"Block: {block_number} -- Returned {len(classified_traces)} classified traces"
|
|
||||||
)
|
|
||||||
|
|
||||||
transfers = get_transfers(classified_traces)
|
|
||||||
logger.info(f"Block: {block_number} -- Found {len(transfers)} transfers")
|
|
||||||
|
|
||||||
swaps = get_swaps(classified_traces)
|
|
||||||
logger.info(f"Block: {block_number} -- Found {len(swaps)} swaps")
|
|
||||||
|
|
||||||
|
count = 0
|
||||||
|
arbitrages_payload = []
|
||||||
|
async for swaps in get_classified_traces_from_events(w3, after_block_number, before_block_number):
|
||||||
arbitrages = get_arbitrages(swaps)
|
arbitrages = get_arbitrages(swaps)
|
||||||
logger.info(f"Block: {block_number} -- Found {len(arbitrages)} arbitrages")
|
count += len(arbitrages)
|
||||||
|
logger.info(f"{count} Found {len(swaps)} swaps and {len(arbitrages)} arbitrages")
|
||||||
|
if len(arbitrages) > 0:
|
||||||
|
for arb in arbitrages:
|
||||||
|
arb_payload = dict()
|
||||||
|
arb_payload['block_number'] = arb.block_number
|
||||||
|
arb_payload['transaction'] = arb.transaction_hash
|
||||||
|
arb_payload['account'] = arb.account_address
|
||||||
|
arb_payload['profit_amt'] = arb.profit_amount
|
||||||
|
arb_payload['token'] = arb.profit_token_address
|
||||||
|
arbitrages_payload.append(arb_payload)
|
||||||
|
count += 1
|
||||||
|
|
||||||
liquidations = get_liquidations(classified_traces)
|
if count >= 100:
|
||||||
logger.info(f"Block: {block_number} -- Found {len(liquidations)} liquidations")
|
print("sending to endpoint now")
|
||||||
|
# resp = requests.post("https://asia-south1-marlin-internal.cloudfunctions.net/mevPolygon/alerts", headers={'Content-type': 'application/json'}, json={"arbitrages": arbitrages_payload})
|
||||||
|
# print("sending to endpoint ", resp.content.decode("utf-8"), flush=True)
|
||||||
|
arbitrages_payload = []
|
||||||
|
count = 0
|
||||||
|
|
||||||
sandwiches = get_sandwiches(swaps)
|
# all_blocks: List[Block] = []
|
||||||
logger.info(f"Block: {block_number} -- Found {len(sandwiches)} sandwiches")
|
# all_classified_traces: List[ClassifiedTrace] = []
|
||||||
|
# all_transfers: List[Transfer] = []
|
||||||
|
# all_swaps: List[Swap] = []
|
||||||
|
# all_arbitrages: List[Arbitrage] = []
|
||||||
|
# all_liquidations: List[Liquidation] = []
|
||||||
|
# all_sandwiches: List[Sandwich] = []
|
||||||
|
|
||||||
punk_bids = get_punk_bids(classified_traces)
|
# all_punk_bids: List[PunkBid] = []
|
||||||
punk_bid_acceptances = get_punk_bid_acceptances(classified_traces)
|
# all_punk_bid_acceptances: List[PunkBidAcceptance] = []
|
||||||
punk_snipes = get_punk_snipes(punk_bids, punk_bid_acceptances)
|
# all_punk_snipes: List[PunkSnipe] = []
|
||||||
logger.info(f"Block: {block_number} -- Found {len(punk_snipes)} punk snipes")
|
|
||||||
|
|
||||||
nft_trades = get_nft_trades(classified_traces)
|
# all_miner_payments: List[MinerPayment] = []
|
||||||
logger.info(f"Block: {block_number} -- Found {len(nft_trades)} nft trades")
|
|
||||||
|
|
||||||
miner_payments = get_miner_payments(
|
# all_nft_trades: List[NftTrade] = []
|
||||||
block.miner, block.base_fee_per_gas, classified_traces, block.receipts
|
|
||||||
)
|
|
||||||
|
|
||||||
all_blocks.append(block)
|
# for block_number in range(after_block_number, before_block_number):
|
||||||
all_classified_traces.extend(classified_traces)
|
# block = await create_from_block_number(
|
||||||
all_transfers.extend(transfers)
|
# w3,
|
||||||
all_swaps.extend(swaps)
|
# block_number,
|
||||||
all_arbitrages.extend(arbitrages)
|
# trace_db_session,
|
||||||
all_liquidations.extend(liquidations)
|
# )
|
||||||
all_sandwiches.extend(sandwiches)
|
|
||||||
|
|
||||||
all_punk_bids.extend(punk_bids)
|
# logger.info(f"Block: {block_number} -- Total traces: {len(block.traces)}")
|
||||||
all_punk_bid_acceptances.extend(punk_bid_acceptances)
|
|
||||||
all_punk_snipes.extend(punk_snipes)
|
|
||||||
|
|
||||||
all_nft_trades.extend(nft_trades)
|
# total_transactions = len(
|
||||||
|
# set(
|
||||||
|
# t.transaction_hash
|
||||||
|
# for t in block.traces
|
||||||
|
# if t.transaction_hash is not None
|
||||||
|
# )
|
||||||
|
# )
|
||||||
|
# logger.info(
|
||||||
|
# f"Block: {block_number} -- Total transactions: {total_transactions}"
|
||||||
|
# )
|
||||||
|
|
||||||
all_miner_payments.extend(miner_payments)
|
# classified_traces = trace_classifier.classify(block.traces)
|
||||||
|
# logger.info(
|
||||||
|
# f"Block: {block_number} -- Returned {len(classified_traces)} classified traces"
|
||||||
|
# )
|
||||||
|
|
||||||
logger.info("Writing data")
|
# transfers = get_transfers(classified_traces)
|
||||||
delete_blocks(inspect_db_session, after_block_number, before_block_number)
|
# logger.info(f"Block: {block_number} -- Found {len(transfers)} transfers")
|
||||||
write_blocks(inspect_db_session, all_blocks)
|
|
||||||
|
|
||||||
if should_write_classified_traces:
|
# swaps = get_swaps(classified_traces)
|
||||||
delete_classified_traces_for_blocks(
|
# logger.info(f"Block: {block_number} -- Found {len(swaps)} swaps")
|
||||||
inspect_db_session, after_block_number, before_block_number
|
|
||||||
)
|
|
||||||
write_classified_traces(inspect_db_session, all_classified_traces)
|
|
||||||
|
|
||||||
delete_transfers_for_blocks(
|
# arbitrages = get_arbitrages(swaps)
|
||||||
inspect_db_session, after_block_number, before_block_number
|
# logger.info(f"Block: {block_number} -- Found {len(arbitrages)} arbitrages")
|
||||||
)
|
|
||||||
write_transfers(inspect_db_session, all_transfers)
|
|
||||||
|
|
||||||
delete_swaps_for_blocks(inspect_db_session, after_block_number, before_block_number)
|
# liquidations = get_liquidations(classified_traces)
|
||||||
write_swaps(inspect_db_session, all_swaps)
|
# logger.info(f"Block: {block_number} -- Found {len(liquidations)} liquidations")
|
||||||
|
|
||||||
delete_arbitrages_for_blocks(
|
# sandwiches = get_sandwiches(swaps)
|
||||||
inspect_db_session, after_block_number, before_block_number
|
# logger.info(f"Block: {block_number} -- Found {len(sandwiches)} sandwiches")
|
||||||
)
|
|
||||||
write_arbitrages(inspect_db_session, all_arbitrages)
|
|
||||||
|
|
||||||
delete_liquidations_for_blocks(
|
# punk_bids = get_punk_bids(classified_traces)
|
||||||
inspect_db_session, after_block_number, before_block_number
|
# punk_bid_acceptances = get_punk_bid_acceptances(classified_traces)
|
||||||
)
|
# punk_snipes = get_punk_snipes(punk_bids, punk_bid_acceptances)
|
||||||
write_liquidations(inspect_db_session, all_liquidations)
|
# logger.info(f"Block: {block_number} -- Found {len(punk_snipes)} punk snipes")
|
||||||
|
|
||||||
delete_sandwiches_for_blocks(
|
# nft_trades = get_nft_trades(classified_traces)
|
||||||
inspect_db_session, after_block_number, before_block_number
|
# logger.info(f"Block: {block_number} -- Found {len(nft_trades)} nft trades")
|
||||||
)
|
|
||||||
write_sandwiches(inspect_db_session, all_sandwiches)
|
|
||||||
|
|
||||||
delete_punk_bids_for_blocks(
|
# miner_payments = get_miner_payments(
|
||||||
inspect_db_session, after_block_number, before_block_number
|
# block.miner, block.base_fee_per_gas, classified_traces, block.receipts
|
||||||
)
|
# )
|
||||||
write_punk_bids(inspect_db_session, all_punk_bids)
|
|
||||||
|
|
||||||
delete_punk_bid_acceptances_for_blocks(
|
# all_blocks.append(block)
|
||||||
inspect_db_session, after_block_number, before_block_number
|
# all_classified_traces.extend(classified_traces)
|
||||||
)
|
# all_transfers.extend(transfers)
|
||||||
write_punk_bid_acceptances(inspect_db_session, all_punk_bid_acceptances)
|
# all_swaps.extend(swaps)
|
||||||
|
# all_arbitrages.extend(arbitrages)
|
||||||
|
# all_liquidations.extend(liquidations)
|
||||||
|
# all_sandwiches.extend(sandwiches)
|
||||||
|
|
||||||
delete_punk_snipes_for_blocks(
|
# all_punk_bids.extend(punk_bids)
|
||||||
inspect_db_session, after_block_number, before_block_number
|
# all_punk_bid_acceptances.extend(punk_bid_acceptances)
|
||||||
)
|
# all_punk_snipes.extend(punk_snipes)
|
||||||
write_punk_snipes(inspect_db_session, all_punk_snipes)
|
|
||||||
|
|
||||||
delete_nft_trades_for_blocks(
|
# all_nft_trades.extend(nft_trades)
|
||||||
inspect_db_session, after_block_number, before_block_number
|
|
||||||
)
|
|
||||||
write_nft_trades(inspect_db_session, all_nft_trades)
|
|
||||||
|
|
||||||
delete_miner_payments_for_blocks(
|
# all_miner_payments.extend(miner_payments)
|
||||||
inspect_db_session, after_block_number, before_block_number
|
|
||||||
)
|
|
||||||
write_miner_payments(inspect_db_session, all_miner_payments)
|
|
||||||
|
|
||||||
update_summary_for_block_range(
|
# logger.info("Writing data")
|
||||||
inspect_db_session,
|
# delete_blocks(inspect_db_session, after_block_number, before_block_number)
|
||||||
after_block_number,
|
# write_blocks(inspect_db_session, all_blocks)
|
||||||
before_block_number,
|
|
||||||
)
|
|
||||||
|
|
||||||
logger.info("Done writing")
|
# if should_write_classified_traces:
|
||||||
|
# delete_classified_traces_for_blocks(
|
||||||
|
# inspect_db_session, after_block_number, before_block_number
|
||||||
|
# )
|
||||||
|
# write_classified_traces(inspect_db_session, all_classified_traces)
|
||||||
|
|
||||||
|
# delete_transfers_for_blocks(
|
||||||
|
# inspect_db_session, after_block_number, before_block_number
|
||||||
|
# )
|
||||||
|
# write_transfers(inspect_db_session, all_transfers)
|
||||||
|
|
||||||
|
# delete_swaps_for_blocks(inspect_db_session, after_block_number, before_block_number)
|
||||||
|
# write_swaps(inspect_db_session, all_swaps)
|
||||||
|
|
||||||
|
# delete_arbitrages_for_blocks(
|
||||||
|
# inspect_db_session, after_block_number, before_block_number
|
||||||
|
# )
|
||||||
|
# write_arbitrages(inspect_db_session, all_arbitrages)
|
||||||
|
|
||||||
|
# delete_liquidations_for_blocks(
|
||||||
|
# inspect_db_session, after_block_number, before_block_number
|
||||||
|
# )
|
||||||
|
# write_liquidations(inspect_db_session, all_liquidations)
|
||||||
|
|
||||||
|
# delete_sandwiches_for_blocks(
|
||||||
|
# inspect_db_session, after_block_number, before_block_number
|
||||||
|
# )
|
||||||
|
# write_sandwiches(inspect_db_session, all_sandwiches)
|
||||||
|
|
||||||
|
# delete_punk_bids_for_blocks(
|
||||||
|
# inspect_db_session, after_block_number, before_block_number
|
||||||
|
# )
|
||||||
|
# write_punk_bids(inspect_db_session, all_punk_bids)
|
||||||
|
|
||||||
|
# delete_punk_bid_acceptances_for_blocks(
|
||||||
|
# inspect_db_session, after_block_number, before_block_number
|
||||||
|
# )
|
||||||
|
# write_punk_bid_acceptances(inspect_db_session, all_punk_bid_acceptances)
|
||||||
|
|
||||||
|
# delete_punk_snipes_for_blocks(
|
||||||
|
# inspect_db_session, after_block_number, before_block_number
|
||||||
|
# )
|
||||||
|
# write_punk_snipes(inspect_db_session, all_punk_snipes)
|
||||||
|
|
||||||
|
# delete_nft_trades_for_blocks(
|
||||||
|
# inspect_db_session, after_block_number, before_block_number
|
||||||
|
# )
|
||||||
|
# write_nft_trades(inspect_db_session, all_nft_trades)
|
||||||
|
|
||||||
|
# delete_miner_payments_for_blocks(
|
||||||
|
# inspect_db_session, after_block_number, before_block_number
|
||||||
|
# )
|
||||||
|
# write_miner_payments(inspect_db_session, all_miner_payments)
|
||||||
|
|
||||||
|
# update_summary_for_block_range(
|
||||||
|
# inspect_db_session,
|
||||||
|
# after_block_number,
|
||||||
|
# before_block_number,
|
||||||
|
# )
|
||||||
|
|
||||||
|
# logger.info("Done writing")
|
||||||
|
@ -8,7 +8,7 @@ from mev_inspect.schemas.traces import Protocol
|
|||||||
class Swap(BaseModel):
|
class Swap(BaseModel):
|
||||||
abi_name: str
|
abi_name: str
|
||||||
transaction_hash: str
|
transaction_hash: str
|
||||||
transaction_position: int
|
transaction_position: Optional[int]
|
||||||
block_number: int
|
block_number: int
|
||||||
trace_address: List[int]
|
trace_address: List[int]
|
||||||
contract_address: str
|
contract_address: str
|
||||||
@ -18,5 +18,5 @@ class Swap(BaseModel):
|
|||||||
token_in_amount: int
|
token_in_amount: int
|
||||||
token_out_address: str
|
token_out_address: str
|
||||||
token_out_amount: int
|
token_out_amount: int
|
||||||
protocol: Protocol
|
protocol: Optional[Protocol]
|
||||||
error: Optional[str]
|
error: Optional[str]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user