Checking Ethereum’s Total Supply

Abstract: In this piece we attempt to calculate the total Ethereum supply and then check this figure by summing up the balances in each Ethereum account. We were able to conduct this exercise and it took our node around 63 hours to perform the calculation. Our basic check of the Ethereum supply did yield a successful result, reasonably consistent with the known issuance formulas, which provides a degree of positive assurance over the Ethereum supply.

Overview

In the last few years there has been some debate about the Ethereum supply. Questions often focus on issues such as: is the current Ethereum supply known with sufficient precision? Is the future supply known? or, can users audit the Ethereum supply? This debate has been re-invigorated by the release of EIP-1559, an upgrade which includes a token burn mechanism, which some in the Ethereum community claim makes Ethereum “ultrasound money”, due to the lower net issuance rate, thereby usurping Bitcoin’s “sound money” claim.

In the case of Bitcoin, calculating and then checking the total supply is reasonably easy and it can be done to a high degree of precision. All one needs to do is calculate the mining rewards and then run a simple command (gettxoutsetinfo), which takes around one minute, to audit the supply. We have even created a service that automatically runs this check each block and sends out alerts if there are unexpected changes in coin supply. In Ethereum, this process is far more complicated and time consuming, but we will try to conduct the equivalent processes and discuss the issues involved.

Calculating Ethereum’s Supply

The first step in checking the supply is calculating the expected supply. This is the total number of Ethereum coins ever created, using the net issuance rules. Ethereum nodes should have correctly implemented the issuance rules and therefore enforce them each block, such that the total Ethereum supply never breaches the expected level. As far as we can tell, in Ethereum, there are five major areas of net issuance to consider:

In the below table we have attempted to calculate the Ethereum supply from the above principals, at block height 13,773,036, which was mined on 9 December 2021, at 20:05 UTC. We ignored the issuance realted to staking rewards.

ETH Supply at height 13,773,036

     
Initial Token Offering   60,000,000
Other genesis issuance   12,009,990
Total pre-mine   72,009,990
     
Mining rewards Reward Amount
Blocks 0 – 4,369,999 5 ETH 21,849,995
Blocks 4,370,000 – 7,279,999 3 ETH 8,729,997
Blocks 7,280,000 – 13,773,036 2 ETH 12,986,072
Total ordinary mining rewards   43,566,064
Uncle rewards (Etherscan) Uncles: 1,208,900 2,968,400
Rewards to uncle publishers (estimate)   119,134
Total uncle rewards   3,087,534
Total mining rewards   46,653,598
     
EIP 1559 token burn (Etherscan)   (1,152,941)
TOTAL SUPPLY   117,510,647

Source: BitMEX Research, Etherscan

Notes: EIP-1559 burn and Uncle rewards calculated from Etherscan data. Rewards to uncle publishers is based on an approximate back of the envelope calculation from BitMEX Research. The above supply excludes Eth2 staking rewards.

Uncles

The first area of significant complexity we came across was the uncle rewards. Despite writing this blog for over four years, this is not a topic we have covered yet. An uncle is when the block header of a block with sufficient proof of work, which did not make it into the main chain, is included in the blockchain. When Ethereum launched, one of the common criticisms about Bitcoin was that mining was “all or nothing” – miners either found the winning block and earnt large rewards, or they did not and they earnt nothing. This blunt difference was said to be a weakness and therefore Ethereum invented uncles, to spread the rewards more “fairly”. If you find an uncle block you still get some rewards. This complexity will be removed when proof of work mining is switched off, because Ethereum’s proof of stake system does not have uncles.

In our view, there is a problem with uncles. Ethereum nodes don’t actually validate the full uncle blocks (perhaps because this would be too burdensome), only the block headers. Therefore uncle blocks could include conflicting transactions and the uncle block system does not appear to contribute to consensus and is mostly pointless.

There are two rewards associated with uncles:

  • A reward for the successful miner who included uncle(s) in their block, the publisher. This is the normal block reward multiplied by the number of uncles in the block, divided by 32. Therefore, if a recent block contains one uncle, the miner would earn 0.0625 ETH. The maximum number of uncles allowed in each public block is two.
  • The miner of the uncle block itself also earns a reward, which is determined by the following formula:

Where Block height is the height of the block which includes the uncle. This means the uncle reward depends on the distance between the uncle block and the block which publishes the uncle. There is also a protocol rule limiting this distance to six, as far as we remember. 

While the above rules are not too complicated, one cannot conduct a basic calculation when estimating the total coin issuance related to uncles. In order to calculate this number, you need to scan through the entire history of uncles. Rather than attempting this, we just took the number from Etherscan as of 9 December 2021. As for the uncle rewards attributable to publishers, we did perform a basic calculation to estimate this, which results in an approximate value of 119,000 ETH. If we were to calculate it properly the figure is likely to be different.

EIP-1559 token burn

The amount of tokens burnt due to EIP-1559 is also not something one can calculate easily as it depends on network conditions. Therefore it requires one to scan through all of the transactions. Again, rather than attempting a calculation ourselves, we took the number from Etherscan, as of 9 December 2021. This gave us around 1.15 million Ethereum.

Eth 2.0 staking rewards

Calculating the net issuance in Eth 2.0, related to staking, is highly complex, as several metrics can impact the issuance rate. In our piece published in September 2021, we believe we covered all of the issuance and penalties currently implemented. There are of course many variables here, depending on various network conditions. However, there is a main principle, which is that inflation is approximately proportional to the square root of the number of coins at stake. For the purposes of this note, we have excluded the net issuance related to staking from our analysis. As far as we know, our node would be unable to check the Eth2 staking rewards anyway.

Auditing the Supply

The above methodologies are calculations of the expected supply. This does not check or verify that these expected rules are being followed. In order to do this, one would need to scan through each Ethereum account and sum up all the account balances to get a grand total. This number should then be less than or equal to the expected amount, thereby providing assurances as to the integrity of the Ethereum issuance mechanics.

According to the following Tweet, using Geth, this audit or check can be conducted as follows:

We therefore ran the following command, at block zero, as follows.

geth dump --iterative --nocode --nostorage --incompletes 0| jq ".balance" | tr -d \" | paste -sd+ | bc

The command took around one and a half minutes to run. It should also be noted that we were required to disable the node in order to conduct this calculation.

The total supply of Ethereum at height zero was therefore around 72 million ETH, or more precisely: 72,009,990.499,480,000,000,000,000 ETH. This aligns up exactly with the community expectations for the pre-mine, a positive result.

The next step was of course to use this methodology to audit the current Ethereum supply. It should be noted that this methodology cannot be used to audit the Ethereum supply at any given block height using a “normal node”, because as we explained in our recent piece on Ethereum’s blocksize, a normal Ethereum node prunes old versions of the Ethereum state and it is the state which is needed to know the balance of each account. To audit the total balances at any point in the past, one would need to retain these old states and the node would generate many terabytes of data.

We therefore ran the following command, at block 13,770,036, which was mined on 9 December 2021, a state which our node had not pruned.

geth dump --iterative --nocode --nostorage --incompletes 13773036| jq ".balance" | tr -d \" | paste -sd+ | bc

This calculation took an astonishing 63 hours and 5 minutes to complete, a considerable amount of time on our dedicated six core 16GB of RAM machine. This obviously compares somewhat unfavourably to the one minute the equivalent task takes a Bitcoin node to complete. The task was conducted on Geth v1.10.14. This is the latest version of Ethereum, released on 23 December 2021. It should also be noted that the supply figure includes the Ethereum sent to the Eth2 staking contract, but excludes any Eth2 staking rewards.

Note: We are not sure about the incomplete nature of the calculation due to the reported “missing preimages”

The result from the above audit returns the following: 117,517,111.849,631,382,298,107,434 ETH or 117.5 million ETH. 

Ethereum Total Supply

The “audit” gave us a pretty decent result, very close to the 117.5 million ETH we calculated in the table above. As the summary result table below indicates, this is a miss by only 6,464 ETH. Unfortunately this miss is in the wrong direction, in that the audited balance is greater than the expected balance. However, this miss is easily explained by errors or approximations in our calculation methodology for the expected value. Third party data providers such as Etherscan, Coinmetrics, and Messari have performed similar expected supply calculations which they update daily. These providers probably have a more accurate figure than us and their results are also closer to the audited figure. In the case of Messari and Coinmetrics the miss is in the correct direction.

Ethereum total supply data as of 9 Dec 2021

Etherscan (reported)** 117,874,279
Less Eth2 staking rewards (BitMEX Research Estimate)(358,000)
Etherscan (excl Eth2 staking rewards) 117,516,279
Coinmetrics**117,518,100
Messari (outstanding)**117,518,130
Messari (circulating)*118,660,010
  
BitMEX Expected value (height 13,773,036) 117,510,647
BitMEX Research “audited” supply (height 13,773,036) 117,517,111
Difference 6,464

Notes: *We are unsure what the “Messari (circulating)” metric relates to. **The figures from third party providers are reported as of 9 December 2021 and there is ambiguity as to the day end, while around 6,000 ETH may have been issued on that day, therefore figures within around 6,000 should be considered a good match.

Sources: BitMEX Research, Etherscan, Coinmetrics, Messari

Economic Opinions On Supply

As for the claim that Ethereum is ultrasound money and superior to Bitcoin’s sound money status, due to the lower expected percentage inflation rate, this is not something we agree with. In our view a token with a low annual inflation rate or even deflation is not important when it comes to evaluating monetary soundness, at least in the context of Bitcoin. Stock in a company which regularly conducts share buy-backs from sustainable profits, such that the count of outstanding shares decreases over time, is not sound money either. These buy-backs may well be positive for the price of the shares of the company, just as Ethereum’s low projected inflation rate is probably a positive for the price of Ethereum. However, we do not think it has much to do with the concept of sound money, at least with respect to how we understand it.

The below diagram may be helpful in thinking about sound money in the context of cryptocurrency, where higher levels of the pyramid represent a more nuanced and constructive understanding of sound money, at least in our view. EIP-1559 is likely to mean Ethereum performs well in level two in the below pyramid of understanding, however these lower levels may only represent an elementary or weak view of what sound money means. Ethereum actually probably scores pretty well on the lower four levels of the pyramid. As for the known future supply, Ethereum may not score that well, due to the level of variance in some of the issuance formulas, although these variations could be useful and necessary programmatic stability and security mechanisms. Anyway, in our view it is only the top level of the pyramid that is absolutely critical. At this level, Ethereum is somewhat unproven. 

Bitcoin’s Sound Money Characteristics – Pyramid of Understanding

Conclusion

In general, this topic is not seen as particularly important in the Ethereum community or among Ethereum developers. This discussion on the Ethereum supply only seems to only crop up in discussions with so-called Bitcoin maximilists criticising Ethereum over the lack of strong features in this area. Ethereum developers have had other priorities, therefore summing up the supply is difficult and highly inefficient, taking our node over 63 hours to run the check. It is probably fair to assume that if this was optimised and included as a default option in the software, the summation would be much faster.

Despite the long amount of time the calculation took, our audit of the Ethereum supply did yield a result constituent with the known issuance formulas, which provides positive assurance over the Ethereum supply. In our view, whatever your view of Ethereum, whether it’s ultrasound money, a defi platform, a public company or somewhere inbetween, being able to effectively check the supply is probably a good feature and developers could focus more on this area. However, we do not share the view that the lack of precision or the significant time it takes to verify the Ethereum supply is a critical factor when evaluating Ethereum from an economic perspective.