Aave ETH liquidations fixed

This commit is contained in:
atharvamitragotri 2022-10-06 00:52:49 +05:30
parent d917ae72de
commit 3fabcccad1
4 changed files with 13304 additions and 2 deletions

File diff suppressed because it is too large Load Diff

View File

@ -47,9 +47,9 @@ class AaveLiquidationClassifier(LiquidationClassifier):
debt_token_address=debt_token_address,
liquidator_user=liquidator,
debt_purchase_amount=debt_purchase_amount,
protocol=Protocol.aave,
received_amount=received_amount,
received_token_address=received_token_address,
protocol=Protocol.aave,
transaction_hash=liquidation_trace.transaction_hash,
trace_address=liquidation_trace.trace_address,
block_number=liquidation_trace.block_number,
@ -74,6 +74,20 @@ class AaveTransferClassifier(TransferClassifier):
)
class AaveEthTransferClassifier(TransferClassifier):
@staticmethod
def get_transfer(trace: DecodedCallTrace) -> Transfer:
return Transfer(
block_number=trace.block_number,
transaction_hash=trace.transaction_hash,
trace_address=trace.trace_address,
amount=trace.inputs["_amount"],
to_address=trace.to_address,
from_address=trace.inputs["_user"],
token_address=trace.inputs["_reserve"],
)
AAVE_SPEC = ClassifierSpec(
abi_name="AaveLendingPool",
protocol=Protocol.aave,
@ -82,6 +96,14 @@ AAVE_SPEC = ClassifierSpec(
},
)
AAVE_ETHTRANSFER_SPEC = ClassifierSpec(
abi_name="LendingPoolCore",
protocol=Protocol.aave,
classifiers={
"transferToReserve(address,address,uint256)": AaveEthTransferClassifier,
},
)
ATOKENS_SPEC = ClassifierSpec(
abi_name="aTokens",
protocol=Protocol.aave,
@ -90,4 +112,8 @@ ATOKENS_SPEC = ClassifierSpec(
},
)
AAVE_CLASSIFIER_SPECS: List[ClassifierSpec] = [AAVE_SPEC, ATOKENS_SPEC]
AAVE_CLASSIFIER_SPECS: List[ClassifierSpec] = [
AAVE_SPEC,
ATOKENS_SPEC,
AAVE_ETHTRANSFER_SPEC,
]

11513
tests/blocks/10384319.json Normal file

File diff suppressed because one or more lines are too long

View File

@ -9,6 +9,7 @@ from tests.utils import load_test_block
def test_single_weth_liquidation(trace_classifier: TraceClassifier):
transaction_hash = (
"0xb7575eedc9d8cfe82c4a11cd1a851221f2eafb93d738301995ac7103ffe877f7"
)
@ -62,6 +63,11 @@ def test_single_liquidation(trace_classifier: TraceClassifier):
classified_traces = trace_classifier.classify(block.traces)
result = get_liquidations(classified_traces)
print("Liquidation result:")
print(result)
print("Defined liquidation:")
print(liquidations)
for liquidation in liquidations:
assert liquidation in result
@ -190,6 +196,35 @@ def test_liquidations_with_eth_transfer(trace_classifier: TraceClassifier):
assert liquidation in result
def test_single_eth_liquidation(trace_classifier: TraceClassifier):
transaction_hash = (
"0x1ba93cb9471dad0843e04f3565314e6d2f3281168f57410ca138cc4065047797"
)
block_number = 10384319
liquidations = [
Liquidation(
liquidated_user="0x6cf4e3764b4e295d58f90e6cfcea2b3144f2bdbd",
liquidator_user="0x467927774b59f7cb023863b07960669f958ec19a",
debt_token_address=ETH_TOKEN_ADDRESS,
debt_purchase_amount=15225889288137910,
received_amount=15656880507938246456,
received_token_address="0x0d8775f648430679a709e98d2b0cb6250d2887ef",
protocol=Protocol.aave,
transaction_hash=transaction_hash,
trace_address=[],
block_number=block_number,
)
]
block = load_test_block(block_number)
classified_traces = trace_classifier.classify(block.traces)
result = get_liquidations(classified_traces)
for liquidation in liquidations:
assert liquidation in result
def _assert_equal_list_of_liquidations(
actual_liquidations: List[Liquidation], expected_liquidations: List[Liquidation]
):