Some interesting Ethereum stats
14/07/2025
I’ve been using Dune a lot lately to parse and understand blockchain data. Then I started thinking: just how hard is it to build something similar? The data has to be absurdly huge right?
So I started running some basic queries to figure out just how large the dataset most relevant to me is: the events
dataset. Those queries snowballed and now I have some interesting data.
What are events?
Events are essentially logs a smart contract can generate when a transaction happens. Its an easy way to figure out if something particular happened in a smart contract.
contract TestContract {
event TestEvent(uint256 indexed testNumber, bool thisHappened);
function test(uint256 someNumber) {
// ..... random stuff happening
emit TestEvent(someNumber, true);
}
}
Look at the example contract TestContract
above. Lets assume an instance of this contract was deployed to some address. Whenever a transaction calls the test()
function of this instance it will emit a TestEvent
event with certain data in it. A user seeing this event now knows that this method was invoked with someNumber
data. So events are just logs. You can read any contracts code and figure out what events you need to answer your questions about it.
Some bookkeeping
- All time(~10 years): block 1(Jul-30-2015 03:26:28 PM +UTC) - block 22910232(Jul-13-2025 12:23:11 PM +UTC)
- Last 3 years: block 15134200(Jul-13-2022 12:14:10 PM +UTC) - block 22910232(Jul-13-2025 12:23:11 PM +UTC)
- Last 1 year: block 20297540(Jul-13-2024 12:18:47 PM +UTC) - block 22910232(Jul-13-2025 12:23:11 PM +UTC)
How large is the events dataset?
Time period | Number of events | % of all time |
---|---|---|
All time | 5,090,893,628 | 100% |
Last 3 years | 3,003,448,986 | 59% |
Last 1 year | 1,179,935,209 | 23.18% |
Observations
- ~5B events so far. I expected more. Ethereum has existed for 10 years at this point.
- The last 3 years has generated 59% of all events. The last 1 year alone has generated 23% of all events. Looks like the rate of events being generated is increasing.
- Lets use data from the last 1 year to extrapolate. 1.2B events/year. This means 38 events/sec. Thats not a lot. This is assuming every block generates similar quantities of events.
- Blocks are generated every ~12 seconds. Lets assume there is a burst of events to be ingested then. 11 seconds of waiting followed by 38*12=456 events to be ingested on the 12th second. Thats very doable.
Which contracts are generating these events?
All time
Contract address | What is that contract | Number of events | % of events from all time |
---|---|---|---|
0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 | Wrapped Ether (WETH) | 644,369,101 | 12.66% |
0xdac17f958d2ee523a2206206994597c13d831ec7 | Tether USD (USDT) | 343,702,825 | 6.75% |
0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 | USDC (USDC) | 166,957,115 | 3.28% |
0x06450dee7fd2fb8e39061434babcfc05599a6fb8 | XEN Crypto (XEN) | 99,471,430 | 1.95% |
0x6b175474e89094c44da98b954eedeac495271d0f | Dai Stablecoin (DAI) | 27,202,708 | 0.53% |
Last 3 years
Contract address | What is that contract | Number of events | % of events from last 3 years |
---|---|---|---|
0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 | Wrapped Ether (WETH) | 457,038,993 | 15.22% |
0xdac17f958d2ee523a2206206994597c13d831ec7 | Tether USD (USDT) | 188,852,979 | 6.29% |
0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 | USDC (USDC) | 118,551,079 | 3.95% |
0x06450dee7fd2fb8e39061434babcfc05599a6fb8 | XEN Crypto (XEN) | 99,471,430 | 3.31% |
0x000000000022d473030f116ddee9f6b43ac78ba3 | Uniswap | 15,423,769 | 0.51% |
Last 1 year
Contract address | What is that contract | Number of events | % of events from last 1 year |
---|---|---|---|
0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 | Wrapped Ether (WETH) | 174,277,402 | 14.77% |
0xdac17f958d2ee523a2206206994597c13d831ec7 | Tether USD (USDT) | 83,732,011 | 7.10% |
0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 | USDC (USDC) | 62,861,906 | 5.33% |
0x06450dee7fd2fb8e39061434babcfc05599a6fb8 | XEN Crypto (XEN) | 30,848,301 | 2.61% |
0x3328f7f4a1d1c57c35df56bbf0c9dcafca309c49 | Banana Gun | 8,049,314 | 0.68% |
Dominance of top contracts
Top grouping | % of events from all time | % of events from last 3 years | % of events from last 1 year |
---|---|---|---|
Top 25 | 30.52% | 35.03% | 37.46% |
Top 10 | 26.93% | 31.19% | 33.00% |
Top 5 | 25.18% | 29.28% | 30.49% |
Observations
- The top 5 contracts have emitted 30.49% of all events in the last year. And this dominance seems to be increasing.
- Going from top 5 to top 25 just increased the % from 30.49% to 37.46%.
- The top 4 contracts have been surprisingly consistent. I wasn’t even aware of XEN.
How many active contracts are there?
Time period | Number of contracts which generated atleast 1 event | Number of contracts which generated atleast 1000 events |
---|---|---|
All time | 9,138,211 | 204,825 |
Last 3 years | 3,406,955 | 151,008 |
Last 1 year | 1,311,857 | 59,085 |
Observations
- There is huge churn in contract usage if you consider any contract with atleast 1 event emitted as active. Of 9M contracts with some activity, only 3.4M has been active in the last 3 years. Only 1.3M has been active in the last 1 year. Thats churn of 63% from all time to last 3 years. And churn of 62% from the last 3 years to last 1 year.
- Only looking at contracts which generated > 1000 events in a time period turned out to be a good idea. The vast majority of contracts are either deployed for testing purposes or never took off. In the last 1 year only 4.5% of contracts with atleast 1 event in it scaled to 1000 events.
- I’m not sure if this alone is a good proxy for contract activity. There can be many contracts which run as part of a bigger system which don’t emit events. Might need to dig deeper into other datasets like traces for a better idea.
What kind of events are being generated?
All time
Event signature | What is that event | Number of events | % of events from all time |
---|---|---|---|
0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef | Transfer(address,address,uint256) | 2,531,927,872 | 49.73% |
0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 | Approval(address,address,uint256) | 364,209,724 | 7.15% |
0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1 | Sync(uint112,uint112) | 270,682,752 | 5.32% |
0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822 | Swap(address,uint256,uint256,uint256,uint256,address) | 265,723,663 | 5.22% |
0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c | Deposit(address,uint256) | 144,625,293 | 2.84% |
Last 3 years
Event signature | What is that event | Number of events | % of events from all time |
---|---|---|---|
0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef | Transfer(address,address,uint256) | 1,435,034,644 | 47.78% |
0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 | Approval(address,address,uint256) | 226,150,410 | 7.53% |
0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1 | Sync(uint112,uint112) | 175,159,060 | 5.83% |
0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822 | Swap(address,uint256,uint256,uint256,uint256,address) | 174,379,186 | 5.81% |
0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c | Deposit(address,uint256) | 98,240,267 | 3.27% |
Last 1 year
Event signature | What is that event | Number of events | % of events from all time |
---|---|---|---|
0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef | Transfer(address,address,uint256) | 572,678,763 | 48.53% |
0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 | Approval(address,address,uint256) | 78,876,308 | 6.68% |
0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1 | Sync(uint112,uint112) | 62,425,975 | 5.29% |
0xd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822 | Swap(address,uint256,uint256,uint256,uint256,address) | 61,644,306 | 5.22% |
0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62 | TransferSingle(address,address,address,uint256,uint256) | 50,657,944 | 4.29% |
Dominance of top event signatures
Top grouping | % of events from all time | % of events from last 3 years | % of events from last 1 year |
---|---|---|---|
Top 25 | 81.28% | 84.64% | 84.18% |
Top 10 | 77.65% | 80.30% | 80.17% |
Top 5 | 70.27% | 70.22% | 70.03% |
Observations
- The top 5 kinds of events make up 70% of all events. This goes up to 84% for the top 25 kinds of events.
- The top 4 events are the same through all time periods. ERC20 token events for the top 2 and uniswap events for the next two. Looks like most activity is just token transfers and swaps.
How many active event types are there?
Time period | Number of event types which were generated atleast 1 time | Number of event types which were generated atleast 1000 times |
---|---|---|
All time | 365,143 | 16,707 |
Last 3 years | 102,419 | 9,296 |
Last 1 year | 51,076 | 4,644 |
Observations
- Lots of churn again. Only 9% of event types emitted in the last year has been emitted atleast 1000 times.
- Many events are only emitted once or very few times. eg. a contract upgrade event. I dont have enough data to make any conclusion here.
Final observations
- The events dataset isnt super large. Neither the ingestion rate nor the total size of the data is huge.
- The vast majority of data is emitted by a small % of contracts. Just tracking the top 25 contracts gets you 37% of all data. Unless you are building a product where every single address needs to be tracked you can prune away data from a lot of addresses.
- The vast majority of data is of a very specific kind of event. Just tracking the top 25 event signatures gets you 84% of all data. Again you can prune away a lot of data and get away with it.
- I’m kinda disappointed with how ethereum seems to be used. It just seems to be a lot of stablecoin transfers and swaps. And a ton of other erc20 tokens.
- Surprised with wrapped ETH being the top contract. Need to dig deeper into how it is being used.
- I have more questions than answers now. What % of addresses are sending and receiving these tokens? How many are active? Do other chains show similar patterns of usage?