From 32e494db033cb8ccaf76e37dd36b170b2ecf5a86 Mon Sep 17 00:00:00 2001 From: mfnatiq Date: Mon, 6 Oct 2025 22:12:17 +0800 Subject: [PATCH 1/5] first draft --- src/evm/utils.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/evm/utils.py diff --git a/src/evm/utils.py b/src/evm/utils.py new file mode 100644 index 0000000..81d75a2 --- /dev/null +++ b/src/evm/utils.py @@ -0,0 +1,45 @@ +import os +from dotenv import load_dotenv +import requests + +address = '0x8D6F070e5e3F73758426007dA680324C10C2869C' +startblock = 0 + +load_dotenv() +ETHERSCAN_API_KEY = os.getenv("ETHERSCAN_API_KEY") + +txn_list = [] + +offset = 1000 + +done = False + +while not done: + print(f'querying from startblock {startblock}') + query = f""" + https://api.etherscan.io/v2/api + ?chainid=999 + &module=account + &action=txlist + &address={address} + &startblock={startblock} + &endblock=latest + &page=1 + &offset={offset} + &sort=asc + &apikey={ETHERSCAN_API_KEY} + """ + + resp = requests.get(query.replace("\n", "").replace(" ", "")) + + results = resp.json()['result'] + txn_list.extend(results) + + if len(results) == offset: + # set next startblock + startblock = max(int(r['blockNumber']) for r in results) - 1 + else: + done = True + +swap_txns = [t for t in txn_list if ('swap' in t['functionName'] or 'Swap' in t['functionName']) and t['isError'] == '0'] +breakpoint() From f5b689420703962871801934d91e9500f64aa55a Mon Sep 17 00:00:00 2001 From: fnatiq Date: Tue, 7 Oct 2025 21:28:19 +0800 Subject: [PATCH 2/5] fetch address --- src/evm/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/evm/utils.py b/src/evm/utils.py index 81d75a2..a97f566 100644 --- a/src/evm/utils.py +++ b/src/evm/utils.py @@ -2,7 +2,7 @@ from dotenv import load_dotenv import requests -address = '0x8D6F070e5e3F73758426007dA680324C10C2869C' +ADDRESS = os.getenv("ADDRESS") startblock = 0 load_dotenv() @@ -21,7 +21,7 @@ ?chainid=999 &module=account &action=txlist - &address={address} + &address={ADDRESS} &startblock={startblock} &endblock=latest &page=1 From 1fd662d9724124d9f3d09444e5fbf03ece0a4f69 Mon Sep 17 00:00:00 2001 From: fnatiq Date: Tue, 7 Oct 2025 21:31:12 +0800 Subject: [PATCH 3/5] get info --- src/evm/utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/evm/utils.py b/src/evm/utils.py index a97f566..0e97730 100644 --- a/src/evm/utils.py +++ b/src/evm/utils.py @@ -2,10 +2,10 @@ from dotenv import load_dotenv import requests -ADDRESS = os.getenv("ADDRESS") startblock = 0 load_dotenv() +ADDRESS = os.getenv("ADDRESS") ETHERSCAN_API_KEY = os.getenv("ETHERSCAN_API_KEY") txn_list = [] @@ -42,4 +42,6 @@ done = True swap_txns = [t for t in txn_list if ('swap' in t['functionName'] or 'Swap' in t['functionName']) and t['isError'] == '0'] + +swap_txns_info = [(s['hash'], s['functionName']) for s in swap_txns] breakpoint() From b01799e9f4b39ac66e35db0e9923efde6a7cb6a6 Mon Sep 17 00:00:00 2001 From: fnatiq Date: Tue, 7 Oct 2025 21:36:01 +0800 Subject: [PATCH 4/5] txn mapping check --- src/evm/utils.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/evm/utils.py b/src/evm/utils.py index 0e97730..5dc4012 100644 --- a/src/evm/utils.py +++ b/src/evm/utils.py @@ -43,5 +43,10 @@ swap_txns = [t for t in txn_list if ('swap' in t['functionName'] or 'Swap' in t['functionName']) and t['isError'] == '0'] -swap_txns_info = [(s['hash'], s['functionName']) for s in swap_txns] +from collections import defaultdict +txns_mapping = defaultdict(list) + +for txn in swap_txns: + txns_mapping[txn['functionName']].append(txn['hash']) + breakpoint() From e811c2b362d040004ad2a88938a2a0c472862d26 Mon Sep 17 00:00:00 2001 From: fnatiq Date: Sun, 12 Oct 2025 21:26:22 +0800 Subject: [PATCH 5/5] wip --- src/evm/utils.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/evm/utils.py b/src/evm/utils.py index 5dc4012..1eca784 100644 --- a/src/evm/utils.py +++ b/src/evm/utils.py @@ -49,4 +49,8 @@ for txn in swap_txns: txns_mapping[txn['functionName']].append(txn['hash']) +for func, hashes in txns_mapping.items(): + print(f'function name {func}:') + print(f'txn hashes: {hashes}\n') + breakpoint()