Compound logic
This commit is contained in:
parent
9883680dfa
commit
072c4df36c
@ -21,28 +21,37 @@ class CompoundLiquidationClassifier(LiquidationClassifier):
|
||||
child_traces: List[ClassifiedTrace],
|
||||
) -> Optional[Liquidation]:
|
||||
|
||||
liquidator = liquidation_trace.from_address
|
||||
liquidated = liquidation_trace.inputs["borrower"]
|
||||
debt_token_address = liquidation_trace.to_address
|
||||
debt_purchase_amount = liquidation_trace.value
|
||||
received_token_address = liquidation_trace.inputs["cTokenCollateral"]
|
||||
received_amount = 0
|
||||
|
||||
|
||||
debt_transfer = _get_debt_transfer(
|
||||
liquidator, child_transfers
|
||||
)
|
||||
|
||||
received_transfer = _get_received_transfer(
|
||||
liquidator, child_transfers
|
||||
)
|
||||
|
||||
seize_trace = _get_seize_call(child_traces)
|
||||
|
||||
if seize_trace is not None and seize_trace.inputs is not None:
|
||||
if debt_transfer is not None:
|
||||
debt_token_address = debt_transfer.token_address
|
||||
debt_purchase_amount = debt_transfer.amount
|
||||
|
||||
liquidator = seize_trace.inputs["liquidator"]
|
||||
if received_transfer is not None:
|
||||
received_token_address = received_transfer.token_address
|
||||
received_amount = received_transfer.amount
|
||||
|
||||
(debt_token_address, debt_purchase_amount) = _get_debt_data(
|
||||
liquidator, child_transfers
|
||||
)
|
||||
|
||||
if debt_purchase_amount == 0:
|
||||
return None
|
||||
|
||||
(received_token_address, received_amount) = _get_received_data(
|
||||
liquidator, child_transfers
|
||||
)
|
||||
|
||||
if received_amount == 0:
|
||||
return None
|
||||
elif seize_trace is not None and seize_trace.inputs is not None:
|
||||
received_amount = seize_trace.inputs['seizeTokens']
|
||||
|
||||
return Liquidation(
|
||||
liquidated_user=liquidation_trace.inputs["borrower"],
|
||||
liquidated_user=liquiated,
|
||||
debt_token_address=debt_token_address,
|
||||
liquidator_user=liquidator,
|
||||
debt_purchase_amount=debt_purchase_amount,
|
||||
@ -54,6 +63,7 @@ class CompoundLiquidationClassifier(LiquidationClassifier):
|
||||
block_number=liquidation_trace.block_number,
|
||||
error=liquidation_trace.error,
|
||||
)
|
||||
|
||||
return None
|
||||
|
||||
|
||||
@ -222,24 +232,19 @@ def _get_seize_call(traces: List[ClassifiedTrace]) -> Optional[ClassifiedTrace]:
|
||||
return trace
|
||||
return None
|
||||
|
||||
|
||||
def _get_received_data(
|
||||
def _get_received_transfer(
|
||||
liquidator: str, child_transfers: List[Transfer]
|
||||
) -> Tuple[str, int]:
|
||||
"""Look for and return payment for liquidation"""
|
||||
|
||||
) -> Optional[Transfer]:
|
||||
"""Get transfer from compound to liquidator"""
|
||||
for transfer in child_transfers:
|
||||
if transfer.to_address == liquidator:
|
||||
return transfer.token_address, transfer.amount
|
||||
|
||||
return liquidator, 0
|
||||
return transfer
|
||||
return None
|
||||
|
||||
|
||||
def _get_debt_data(liquidator: str, child_transfers: List[Transfer]) -> Tuple[str, int]:
|
||||
def _get_debt_transfer(liquidator: str, child_transfers: List[Transfer]) -> Optional[Transfer]:
|
||||
"""Get transfer from liquidator to compound"""
|
||||
|
||||
for transfer in child_transfers:
|
||||
if transfer.from_address == liquidator:
|
||||
return transfer.token_address, transfer.amount
|
||||
|
||||
return liquidator, 0
|
||||
return transfer
|
||||
return None
|
||||
|
Loading…
x
Reference in New Issue
Block a user