Some interesting Ethereum stats

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

  1. ~5B events so far. I expected more. Ethereum has existed for 10 years at this point.
  2. 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.
  3. 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.
  4. 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

  1. The top 5 contracts have emitted 30.49% of all events in the last year. And this dominance seems to be increasing.
  2. Going from top 5 to top 25 just increased the % from 30.49% to 37.46%.
  3. 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

  1. 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.
  2. 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.
  3. 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

  1. The top 5 kinds of events make up 70% of all events. This goes up to 84% for the top 25 kinds of events.
  2. 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

  1. Lots of churn again. Only 9% of event types emitted in the last year has been emitted atleast 1000 times.
  2. 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

  1. The events dataset isnt super large. Neither the ingestion rate nor the total size of the data is huge.
  2. 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.
  3. 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.
  4. 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.
  5. Surprised with wrapped ETH being the top contract. Need to dig deeper into how it is being used.
  6. 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?