We classify mainnet users based solely on their on-chain activity and provide additional tooling for exploratory data analysis.
This project uses on-chain Ethereum mainnet transactions to classify wallets base on 6-predefined different buckets/sub-ecosystems: Airdrop Farmer, NFT Collectooor, Snipoor, Shitcoinooor, EVM Enjoyoor, and NPCs. Users are able to enter an address as an input and receive a score for each of the pre-defined areas.
The scoring methodology is calculated based on their interactions with predefined popular contracts (i.e. Shitcoinoooors are interacting with known shitcoins, NFT Collectoooors are interacting with OpenSea contracts). We then rank them relative to other users and the output is a normalised rank of how they compare relative to the rest of the users during that time period.
We retrieved the Ethereum transactions (1000 blocks at a time) with cryo/RETH, filtered out all native transfers (we have a simplifying assumption here that a transaction with input data and non-zero input value is a native transaction), identified the top 20 contracts each week, then applied some additional filtering to capture more relevant addresses. We then vectorised the smart-contract interactions into sparse matrices and ranked users against eachother for a given time period. This (should have been) served up in a nice frontend, however we ran out of time to populate and test the solution.
The hackiest thing during this hackathon: Since we're dealing with almost 1 terrabyte of data, I was having to monitor my disk-space and delete the raw files as we were wrangling them into something more useful to ensure that new files being saved and not crashing my laptop hehe!
Data Retrieval - We utilised RETH + cryo to retrieve the dataset of all Ethereum transactions from genesis. Data wrangling - We utilised Python3 to clean and transform the data into something manageable Frontend - We utilise Nuxt.js, Vue.js and Chart.js to build the frontend. Backend - We use Nuxt.js and Python