When Solana had downtime in September there was a lot of questions asked by holders across social media. Did this mean an exodus from Solana? Would people unstake and sell up? But there was no practical way for regular users to see what was really happening.
I decided to roll my own set of metrics, and then decided to add more stats to answer questions I had that I couldn't see on other sites
- What is the average size of stake across the network?
- How is it distributed?
- Do some validators attract whales while others mostly attract hobbiests?
- Is the stake for ____ validator growing or shrinking?
- How long has that validator been active?
What it does
It downloads all current stake accounts from Solana via RPC. It then crunches the data to provide a set of accessible reports that allow people to see a breakdown of stakes by epoch and validator, as well as seeing the change over time.
How we built it
I used Laravel scheduler, jobs + queues to download the stake accounts to a database, then analyze the data and cache to Redis. I also supplemented the data with statistics from validators.app and stakeview.app to provide more context - for example the validator's names, logos, datacentres and APY.
Challenges we ran into
There are a lot of stake accounts! I also haven't yet accounted for stake accounts that undelegated then re-delegated to a different validator, but on analyzing the data this appears to be a small minority of accounts. I am to fix this discrepancy in a future update
Accomplishments that we're proud of
It's fast and fairly simple to understand
What we learned
As I get older a 'quick weekend project' rapidly expands to fill all available time 😳
What's next for Solana Staking Economy
- Wallet connectors to stake directly with listed validators
- Maps and more reporting on (de)centralization
- Stake pools 😅