Initial work on adding Aave inspector

This commit is contained in:
Milan Cermak 2021-07-25 18:28:21 +02:00
parent 0679592216
commit 2a43ecdfe0
3 changed files with 58 additions and 1 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,53 @@
import json
from typing import Optional
from web3 import Web3
from mev_inspect.config import load_config
from mev_inspect.schemas.blocks import NestedTrace
from mev_inspect.schemas.classifications import Classification, Liquidation
from mev_inspect.utils import check_trace_for_signature
from .base import Inspector
config = load_config()
aave_v2_lending_pool_abi = json.loads(config["ABI"]["AaveLendingPool"])
aave_v2_lending_pool_address = config["ADDRESSES"]["AaveV2LendingPool"].lower()
class AaveInspector(Inspector):
def __init__(self, base_inspector):
super().__init__()
self.w3 = Web3(base_inspector)
self.aave_v2_lendingpool_contract = self.w3.eth.contract(
address=aave_v2_lending_pool_address, abi=aave_v2_lending_pool_abi
)
# https://docs.aave.com/developers/the-core-protocol/lendingpool#liquidationcall
liquidation_call = "liquidationCall(address,address,address,uint256,bool)"
self.liquidation_call_signature = self.w3.sha3(text=liquidation_call)[:4]
self.mev_functions = []
def inspect(self, nested_trace: NestedTrace) -> Optional[Classification]:
trace = nested_trace.trace
# fmt: off
if (
trace.action["to"] == aave_v2_lending_pool_address and
check_trace_for_signature(
trace,
[self.liquidation_call_signature]
)
):
# fmt: on
tx = self.w3.eth.get_transaction(trace.transaction_hash)
_, decoded_input = self.aave_v2_lendingpool_contract.decode_function_input(tx.input)
print(decoded_input)
# TODO: check if decoded_input is correct, create a Liquidation classification?
# what about reducers?
# return Liquidation()
return None

View File

@ -9,6 +9,10 @@ class Classification(BaseModel):
pass
class Liquidation(Classification):
pass
class UnknownClassification(Classification):
trace: Trace
internal_classifications: List[Classification]