Ethereum style Smart-Contracts are generally acknowledged to be the future of blockchain technology. Since Ethereum has been running for nearly 3 years and its data is public I decided to look at the raw data to see what insights can be gleaned about Smart-Contract usage.
The metrics I found are fascinating, when you look at things at a high level they look very good but the numbers get highly skewed when you dig deeper. It seems like most of the Smart-Contracts are rarely ever used — 94% were called less than 10 times.
Let’s start with the basics. Here is a chart showing the number of new Smart-Contracts created each quarter.
Even though the price of Ether going up has increased the cost of creating new Smart-Contracts, the rate at which Smart-Contracts are being created is actually increasing so obviously there is a lot of interest in the developer community.
What about the ratio of Smart-Contract transactions vs regular Ether based payments ? Here is a stacked chart showing the ratio over time. The numbers on the bar give the number of transactions invoking Smart-Contracts as a percentage of the total number of transactions in each quarter.
I would have expected the percentage to keep increasing but it is maintaining a healthy ratio of around 40%.
But it gets a lot more fascinating when you dig deeper.
I wanted to see how the volume of the transactions is spread across the Smart-Contracts. I was expecting some variation of the 80/20 rule that is 20% of the Smart-Contracts account for 80% of the transaction volume. But things are way more skewed.
As you can see percentages are meaningless when trying to do the comparison because they are so low.
Here is a chart with the number (instead of %) of contracts that account for 20%, 50% and 80% of the Smart-Contract transactions.
Diving deeper into just the number of Smart-Contracts that account for 20% and 50% of the Smart-Contract Transaction Volume.
You can see how skewed things are , most of the time just 1 or 2 contracts accounted for 20% of the volume and except for the last quarter less than 20 contracts accounted for 50% of the volume.
This made me wonder about the volume numbers of the majority of contracts. Here are some interesting stats across the entire time frame from Q3’15 to Q1’18.
94% of the contracts were called less than 10 times
5% of the contracts were called between 10 and 100 times
So only 1% of the Smart-Contracts were even called more than 100 times. This looks like most of the Smart-Contracts are really just people trying things out.
There is one aspect of the Smart-Contracts that are not covered correctly by these numbers. In Ethereum you could create thousands of Smart-Contracts with the same code, while all of them are conceptually related, inside Ethereum they are treated as distinct Smart-Contracts with a distinct Contract Address.
I am working on repeating the above analysis with each distinct piece of code being treated as a separate Contract, maybe then the number of transactions will be spread out more evenly.
Some of the other data points I plan to track down for a follow up post.
Thoughts ?
I started a geth node, waited for it to fully sync and then using some custom geth code, dumped out the transactions. The time for each transaction is assumed to be the the processing time of the block containing the transaction.