SELECT
tx.TO_ADDRESS AS CONTRACT_ADDRESS,
LEFT(tx.TO_ADDRESS, 6) || '...' || RIGHT(tx.TO_ADDRESS, 4) AS SHORT_CONTRACT,
COUNT(*) AS TOTAL_INTERACTIONS
FROM mezo.testnet.FACT_TRANSACTIONS tx
JOIN mezo.testnet.DIM_CONTRACTS dc
ON tx.TO_ADDRESS = dc.ADDRESS
-- Optional: add time filter
-- WHERE tx.BLOCK_TIMESTAMP >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY CONTRACT_ADDRESS, SHORT_CONTRACT
ORDER BY TOTAL_INTERACTIONS DESC
LIMIT 10