Aave ETH liquidations fixed
This commit is contained in:
parent
d917ae72de
commit
3fabcccad1
1728
mev_inspect/abis/aave/LendingPoolCore.json
Normal file
1728
mev_inspect/abis/aave/LendingPoolCore.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -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
11513
tests/blocks/10384319.json
Normal file
File diff suppressed because one or more lines are too long
@ -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]
|
||||
):
|
||||
|
Loading…
x
Reference in New Issue
Block a user