Added pydantic serialization, naming changes
This commit is contained in:
parent
170ab07e2f
commit
71b7c99c17
@ -1,6 +1,6 @@
|
|||||||
|
import json
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from mev_inspect.schemas.utils import to_json
|
|
||||||
from mev_inspect.models.classified_traces import ClassifiedTraceModel
|
from mev_inspect.models.classified_traces import ClassifiedTraceModel
|
||||||
from mev_inspect.schemas.classified_traces import ClassifiedTrace
|
from mev_inspect.schemas.classified_traces import ClassifiedTrace
|
||||||
|
|
||||||
@ -36,7 +36,7 @@ def write_classified_traces(
|
|||||||
"abi_name": trace.abi_name,
|
"abi_name": trace.abi_name,
|
||||||
"function_name": trace.function_name,
|
"function_name": trace.function_name,
|
||||||
"function_signature": trace.function_signature,
|
"function_signature": trace.function_signature,
|
||||||
"inputs": to_json(trace.inputs),
|
"inputs": json.loads(trace.json(include={"inputs"}))["inputs"],
|
||||||
"from_address": trace.from_address,
|
"from_address": trace.from_address,
|
||||||
"to_address": trace.to_address,
|
"to_address": trace.to_address,
|
||||||
"gas": trace.gas,
|
"gas": trace.gas,
|
||||||
|
@ -25,13 +25,10 @@ class Protocol(Enum):
|
|||||||
|
|
||||||
|
|
||||||
class ClassifiedTrace(Trace):
|
class ClassifiedTrace(Trace):
|
||||||
|
|
||||||
transaction_hash: str
|
transaction_hash: str
|
||||||
block_number: int
|
block_number: int
|
||||||
trace_address: List[int]
|
trace_address: List[int]
|
||||||
classification: Classification
|
classification: Classification
|
||||||
|
|
||||||
# Optional
|
|
||||||
error: Optional[str]
|
error: Optional[str]
|
||||||
to_address: Optional[str]
|
to_address: Optional[str]
|
||||||
from_address: Optional[str]
|
from_address: Optional[str]
|
||||||
@ -54,7 +51,6 @@ class ClassifiedTrace(Trace):
|
|||||||
|
|
||||||
|
|
||||||
class CallTrace(ClassifiedTrace):
|
class CallTrace(ClassifiedTrace):
|
||||||
|
|
||||||
to_address: str
|
to_address: str
|
||||||
from_address: str
|
from_address: str
|
||||||
|
|
||||||
@ -62,8 +58,6 @@ class CallTrace(ClassifiedTrace):
|
|||||||
class DecodedCallTrace(CallTrace):
|
class DecodedCallTrace(CallTrace):
|
||||||
inputs: Dict[str, Any]
|
inputs: Dict[str, Any]
|
||||||
abi_name: str
|
abi_name: str
|
||||||
|
|
||||||
# Optional
|
|
||||||
protocol: Optional[Protocol]
|
protocol: Optional[Protocol]
|
||||||
gas: Optional[int]
|
gas: Optional[int]
|
||||||
gas_used: Optional[int]
|
gas_used: Optional[int]
|
||||||
|
@ -15,25 +15,6 @@ def to_original_json_dict(model: BaseModel) -> dict:
|
|||||||
return json.loads(model.json(by_alias=True, exclude_unset=True))
|
return json.loads(model.json(by_alias=True, exclude_unset=True))
|
||||||
|
|
||||||
|
|
||||||
def to_json(d):
|
|
||||||
if isinstance(d, dict):
|
|
||||||
tmp = {}
|
|
||||||
for key, value in d.items():
|
|
||||||
if isinstance(value, bytes):
|
|
||||||
tmp[key] = value.hex()
|
|
||||||
if isinstance(value, tuple):
|
|
||||||
res = []
|
|
||||||
for val in value:
|
|
||||||
if isinstance(val, bytes):
|
|
||||||
res.append(val.hex())
|
|
||||||
else:
|
|
||||||
res.append(val)
|
|
||||||
tmp[key] = res
|
|
||||||
|
|
||||||
d.update(tmp)
|
|
||||||
return json.dumps(d)
|
|
||||||
|
|
||||||
|
|
||||||
class Web3Model(BaseModel):
|
class Web3Model(BaseModel):
|
||||||
"""BaseModel that handles web3's unserializable objects"""
|
"""BaseModel that handles web3's unserializable objects"""
|
||||||
|
|
||||||
|
@ -17,8 +17,8 @@ def make_transfer_trace(
|
|||||||
to_address: str,
|
to_address: str,
|
||||||
token_address: str,
|
token_address: str,
|
||||||
amount: int,
|
amount: int,
|
||||||
action: dict = {},
|
action={},
|
||||||
subtraces: int = 0,
|
subtraces=0,
|
||||||
):
|
):
|
||||||
return CallTrace(
|
return CallTrace(
|
||||||
transaction_hash=transaction_hash,
|
transaction_hash=transaction_hash,
|
||||||
@ -47,8 +47,8 @@ def make_swap_trace(
|
|||||||
abi_name: str,
|
abi_name: str,
|
||||||
recipient_address: str,
|
recipient_address: str,
|
||||||
recipient_input_key: str,
|
recipient_input_key: str,
|
||||||
action: dict = {},
|
action={},
|
||||||
subtraces: int = 0,
|
subtraces=0,
|
||||||
):
|
):
|
||||||
return DecodedCallTrace(
|
return DecodedCallTrace(
|
||||||
transaction_hash=transaction_hash,
|
transaction_hash=transaction_hash,
|
||||||
@ -89,8 +89,8 @@ def make_many_unknown_traces(
|
|||||||
block_number: int,
|
block_number: int,
|
||||||
transaction_hash: str,
|
transaction_hash: str,
|
||||||
trace_addresses: List[List[int]],
|
trace_addresses: List[List[int]],
|
||||||
action: dict = {},
|
action={},
|
||||||
subtraces: int = 0,
|
subtraces=0,
|
||||||
) -> List[ClassifiedTrace]:
|
) -> List[ClassifiedTrace]:
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user