import requests
from collections import defaultdict
from datetime import datetime, timedelta

ETHERSCAN_API_KEY = "4KRP6TXGD4QDZAMJNXDQPSYCB1736GPSX1"
ETHERSCAN_URL = "https://api.etherscan.io/api"
USDC_CONTRACT = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"

def get_recent_transfers(contract_address, pages=2, per_page=500):
    all_txs = []
    for page in range(1, pages + 1):
        params = {
            "module": "account",
            "action": "tokentx",
            "contractaddress": contract_address,
            "page": page,
            "offset": per_page,
            "sort": "desc",
            "apikey": ETHERSCAN_API_KEY
        }
        resp = requests.get(ETHERSCAN_URL, params=params)
        txs = resp.json().get("result", [])
        all_txs.extend(txs)
    return all_txs

def main():
    print("Descargando transferencias recientes...")
    transfers = get_recent_transfers(USDC_CONTRACT)

    wallet_counts = defaultdict(int)
    wallet_last_tx = {}

    # Define ventana de días
    days_back = 7
    start_ts = datetime.utcnow() - timedelta(days=days_back)

    for tx in transfers:
        ts = datetime.utcfromtimestamp(int(tx["timeStamp"]))
        if ts < start_ts:
            continue

        wallet = tx["from"].lower()
        wallet_counts[wallet] += 1
        wallet_last_tx[wallet] = ts

    # Filtra por número mínimo de operaciones
    threshold = 10
    frequent_wallets = [w for w, c in wallet_counts.items() if c >= threshold]

    print("Wallets con más de", threshold, "operaciones en los últimos", days_back, "días:")
    for w in frequent_wallets:
        print(f"- {w} ({wallet_counts[w]} txs) última:{wallet_last_tx[w]}")

if __name__ == "__main__":
    main()
