Also save ABI name

This commit is contained in:
Luke Van Seters 2021-07-25 21:57:19 -04:00
parent 8a0ead84de
commit 44712f0fc0
3 changed files with 14 additions and 6 deletions

View File

@ -70,6 +70,7 @@ class Processor:
trace_address=trace.trace_address, trace_address=trace.trace_address,
classification=classification, classification=classification,
protocol=spec.protocol, protocol=spec.protocol,
abi_name=spec.abi_name,
function_name=call_data.function_name, function_name=call_data.function_name,
function_signature=signature, function_signature=signature,
intputs=call_data.inputs, intputs=call_data.inputs,
@ -86,6 +87,7 @@ class Processor:
trace_address=trace.trace_address, trace_address=trace.trace_address,
classification=Classification.unknown, classification=Classification.unknown,
protocol=None, protocol=None,
abi_name=None,
function_name=None, function_name=None,
function_signature=None, function_signature=None,
intputs=None, intputs=None,

View File

@ -25,6 +25,7 @@ class ClassifiedTrace(BaseModel):
trace_address: List[int] trace_address: List[int]
classification: Classification classification: Classification
protocol: Optional[Protocol] protocol: Optional[Protocol]
abi_name: Optional[str]
function_name: Optional[str] function_name: Optional[str]
function_signature: Optional[str] function_signature: Optional[str]
inputs: Optional[Dict[str, Any]] inputs: Optional[Dict[str, Any]]

View File

@ -41,6 +41,11 @@ DECODE_SPECS = [
def inspect_block(base_provider, block_number): def inspect_block(base_provider, block_number):
print("Using decode specs:")
for spec in DECODE_SPECS:
print(spec.json(indent=4, exclude_unset=True))
block_data = block.create_from_block_number(block_number, base_provider) block_data = block.create_from_block_number(block_number, base_provider)
print(f"Total traces: {len(block_data.traces)}") print(f"Total traces: {len(block_data.traces)}")
@ -61,16 +66,16 @@ def inspect_block(base_provider, block_number):
stats = {} stats = {}
for trace in classified_traces: for trace in classified_traces:
protocol = trace.protocol abi_name = trace.abi_name
classification = trace.classification.value classification = trace.classification.value
signature = trace.function_signature signature = trace.function_signature
protocol_stats = stats.get(protocol, {}) abi_name_stats = stats.get(abi_name, {})
class_stats = protocol_stats.get(classification, {}) class_stats = abi_name_stats.get(classification, {})
signature_count = protocol_stats.get(signature, 0) signature_count = abi_name_stats.get(signature, 0)
class_stats[signature] = signature_count + 1 class_stats[signature] = signature_count + 1
protocol_stats[classification] = class_stats abi_name_stats[classification] = class_stats
stats[protocol] = protocol_stats stats[abi_name] = abi_name_stats
print(json.dumps(dict(stats.items()), indent=4)) print(json.dumps(dict(stats.items()), indent=4))