Function for child liquidation check
This commit is contained in:
parent
052e1f6c8d
commit
887d8c0a6a
@ -58,6 +58,18 @@ def get_received_amount(trace: DecodedCallTrace) -> int:
|
|||||||
return received_amount
|
return received_amount
|
||||||
|
|
||||||
|
|
||||||
|
def is_child_of_liquidation(
|
||||||
|
trace: ClassifiedTrace, parent_liquidations: List[List[int]]
|
||||||
|
) -> bool:
|
||||||
|
|
||||||
|
return any(
|
||||||
|
[
|
||||||
|
is_child_trace_address(trace.trace_address, parent)
|
||||||
|
for parent in parent_liquidations
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_liquidations(
|
def get_liquidations(
|
||||||
traces: List[ClassifiedTrace],
|
traces: List[ClassifiedTrace],
|
||||||
) -> List[Liquidation]:
|
) -> List[Liquidation]:
|
||||||
@ -71,12 +83,7 @@ def get_liquidations(
|
|||||||
if (
|
if (
|
||||||
trace.classification == Classification.liquidate
|
trace.classification == Classification.liquidate
|
||||||
and isinstance(trace, DecodedCallTrace)
|
and isinstance(trace, DecodedCallTrace)
|
||||||
and not any(
|
and not is_child_of_liquidation(trace, parent_liquidations)
|
||||||
[
|
|
||||||
is_child_trace_address(trace.trace_address, parent)
|
|
||||||
for parent in parent_liquidations
|
|
||||||
]
|
|
||||||
)
|
|
||||||
):
|
):
|
||||||
|
|
||||||
parent_liquidations.append(trace.trace_address)
|
parent_liquidations.append(trace.trace_address)
|
||||||
@ -93,6 +100,10 @@ def get_liquidations(
|
|||||||
assert isinstance(child, DecodedCallTrace)
|
assert isinstance(child, DecodedCallTrace)
|
||||||
received_amount = get_received_amount(child)
|
received_amount = get_received_amount(child)
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
received_amount = 0
|
||||||
|
|
||||||
liquidations.append(
|
liquidations.append(
|
||||||
Liquidation(
|
Liquidation(
|
||||||
liquidated_user=trace.inputs["_user"],
|
liquidated_user=trace.inputs["_user"],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user