From 98cb1ffcaec528eb0a52e6040012156fd5a60909 Mon Sep 17 00:00:00 2001 From: Robert Miller Date: Tue, 29 Jun 2021 11:08:05 -0400 Subject: [PATCH] Create processor class, fix signature matching in utils --- processor.py | 15 +++++++++++---- testing_file.py | 8 +++++++- utils.py | 11 +++++++++-- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/processor.py b/processor.py index b8cfd4c..87be050 100644 --- a/processor.py +++ b/processor.py @@ -1,6 +1,13 @@ +class Processor: + def __init__(self, base_provider, inspectors) -> None: + self.base_provider = base_provider + self.inspectors = inspectors -def get_transaction_evaluations(block_data): - for transaction_hash in block_data.transaction_hashes: - calls = block_data.get_filtered_calls(transaction_hash) - print(calls) \ No newline at end of file + def get_transaction_evaluations(self, block_data): + for transaction_hash in block_data.transaction_hashes: + calls = block_data.get_filtered_calls(transaction_hash) + + for inspector in self.inspectors: + inspector.inspect(calls) + # print(calls) \ No newline at end of file diff --git a/testing_file.py b/testing_file.py index c98b1f4..9b65098 100644 --- a/testing_file.py +++ b/testing_file.py @@ -1,3 +1,4 @@ +from processor import Processor from web3.providers import base from inspector_uniswap import UniswapInspector import block @@ -17,4 +18,9 @@ base_provider = Web3.HTTPProvider(args.rpc) block_data = block.createFromBlockNumber(args.block_number[0], base_provider) ## Build a Uniswap inspector -uniswap_inspector = UniswapInspector(base_provider) \ No newline at end of file +uniswap_inspector = UniswapInspector(base_provider) + +## Create a processor, pass in an ARRAY of inspects +processor = Processor(base_provider, [uniswap_inspector, uniswap_inspector]) + +processor.get_transaction_evaluations(block_data) \ No newline at end of file diff --git a/utils.py b/utils.py index 90b4ffd..2559918 100644 --- a/utils.py +++ b/utils.py @@ -1,6 +1,7 @@ +from hexbytes.main import HexBytes def check_call_for_signature(call, signatures): - if (call.action.input == None): + if (call['action']['input'] == None): return False ## By default set this to False @@ -8,7 +9,13 @@ def check_call_for_signature(call, signatures): ## Iterate over all signatures, and if our call matches any of them set it to True for signature in signatures: - if call.action.input.startsWith(signature): + # print("Desired signature:", str(signature)) + # print("Actual", HexBytes(call['action']['input'])) + + if HexBytes(call['action']['input']).startswith((signature)): + ## Note that we are turning the input into hex bytes here, which seems to be fine + ## Working with strings was doing weird things + print("hit") signature_present_boolean = True return signature_present_boolean \ No newline at end of file