How to Check Token Supply

1.1 Importance of Token Supply Research

In previous lessons we’ve touched on the importance of understanding Token Supply. However, due to many variables that should be included in its calculation, we must return and dive deep into this concept.

Considering that token is the lifeblood of a crypto project, it's hard to overestimate how important it is to have adequate and truthful values of what is available to purchase from the secondary market, what is locked and how many tokens are burned.

Investors should also have a clear understanding when a large amount of token supply is unlocked and ready to hit the market.

1.2 Questions which has to be asked

Let's summarize the parameters we need to know in order to find Circulating Supply of a token.

First, we need to know the Maximum Total Supply if it is applicable. Is there a limit on how many coins can be minted? Is the token inflationary, deflationary or disinflationary by nature?

Second, how many tokens have been minted so far? Is it equal to the Maximum Total Supply? How many of them were burned? By answering these questions we can calculate the Total Supply of a token.

Third, how many tokens are locked in vesting contracts? How many tokens are lying dormant on addresses that belong to the team? Which addresses belong to the team anyway?

By combining answers to the questions above we can calculate the Circulating Supply of a token.

1.3 Limitations of the research

Typical issues that arise while calculating the Circulating Supply come from not being able to spot all addresses that are controlled by the team. Another limitation appears when a token has a floating number of tokens, and it constantly changes.

Currently these limitations are dealt with by asking a crypto project to provide the API endpoint for these values. However, it is far from perfect as information uploaded to this endpoint can be forged.

By utilizing tools described in previous lessons you will be able to overcome some of the limitations. And in the further sections you will be able to see the full cycle of gathering all relevant data.

2.1 Max Total Supply

In the best case scenario Max Total Supply is capped, and the mint functionality is disabled. An example of such a case can be the BarnBridge Governance token.

But what if this parameter always changes? What if the token has a rebase function, and it changes its amount depending on various factors? In such a case the best we can do is to give the amount of tokens we get from calling “Contract” > Read Contract” > “totalSupply” method.

2.2 Inflation - what it is and how to check it

Inflation in token supply means how many new tokens have been minted over a year. Inflation can be introduced in many ways - through gradual token minting, through releasing locked tokens or by rebasing the token.

Inflation can also change depending on tokenomics design. For example, UNI, a Uniswap Governance Token, has a 4 year cap on the amount of tokens. However, after 4 years the cap is removed, and a steady rate of inflation is implemented.

It’s not easy to collect inflation data, and for the purposes of this tutorial we just need to acknowledge if a token has inflation or not. However, if you want to calculate the rate of inflation, you can take Circulating Supply of a token a year ago (through Wayback Machine or CoinMarketCap’s “Historical Data”), and compare it to the current value. The formula is following: Inflation % Rate = (2023 Supply / 2022 Supply ) - 1

2.3 Deflation - what are the mechanisms of it

The opposite process of token supply being gradually cut is called deflation. Most common way to do that is to burn tokens, either through destroying part of operational fees or manually moving tokens to an inaccessible contract.

In some cases inflation and deflation can walk hand in hand - and the main example is Ethereum. It has no maximum supply, but an update called EIP-1559 has introduced a mechanism to burn a part of each fee users pay.

By having both forces in place, the protocol has dynamic supply that can increase or decrease the total amount of tokens depending on the market conditions and block space demand.

2.4: Disinflation

The last term that you have to consider is disinflation. It is the rarer case, when a token has inflation, but it decreases over time. The most prominent example of such a mechanism is Bitcoin, which cuts inflation in half every 4 years. Many other forks of Bitcoin also use such an approach, hoping that the scarcity of an asset will increase faster than the cuts in inflation.

3.1 Total Supply and its limitations

As we discussed in lesson number 2, the standard definition of a Total supply is the amount of printed tokens minus all burned tokens. The goal of this metric is to see how many tokens are there in existence.

This should be a very straightforward metric, yet even at this stage there are issues with calculating it. The most common problem arises when a user tries to see Total Supply from blockchain explorer.

Lets see an example by opening a list of token holders of Ankr, a decentralized RPC protocol:

In the totalSupply method we see that there are 10 billion ANKR tokens in existence. However, by checking the list of holders we can notice that 2.4% of all of the tokens are located on Null Address, meaning they are burned. Therefore we can calculate that the Total Supply of ANKR is at most 9.76 billion.

3.2 Collecting data from token holders

But what if there are multiple burn addresses for one token? How to collect them all? The problem with burn addresses is that they are almost infinite in number - and developers can choose any of them to send their tokens to.

However, you can search in blockchain explorer for “Null Address:” to see the most used addresses, or go through the smart contract “burn” method if there is one in the smart contract you are exploring.

With having a list of such addresses, now you can go through the token holders list and collect all tokens burned. Sometimes it is easier to do it by hand, and in other cases - by downloading the CSV file of all the holders and searching through it. But once again, be wary of the limits imposed by blockchain explorer on the amount of positions within this file.

3.3 Using queries to collect data

If going through the file looks too cumbersome and you’re looking for more elegant ways to collect data from blockchain, there is a way to extract whatever you want using GraphQL queries through services like https://graphql.bitquery.io/ .

After a quick registration you will be given an interface with a builder to construct custom queries. And though it is beneficial to know GraphQL to realize the full potential of such a tool, for the purpose of this course we will use only the simple queries. You may find an example of a script that would give you the sum of all the LooksRare tokens that were transferred on Ethereum network to the three most commonly used burn addresses.

{

ethereum(network: ethereum) {

burnt: transfers(

currency: {is: "0xf4d2888d29d722226fafa5d9b24f9164c092421e"}

receiver: {in: ["0x0000000000000000000000000000000000000000", "0x000000000000000000000000000000000000dEaD", "0x0000000000000000000000000000000000000001"]}

) {

amount

}

}

}


You can modify this script by changing “network: ethereum” to the blockchain you would like to explore; currency: {is: “0x…”} to the address of a token you are investigating, and add or remove potential burn addresses in the “receiver” line.

You can also use the “Explore” page in the upper part of the screen to see other queries that people are constructing, and adapt them to your liking.

3.4 Combining the findings

Now we know that Total Supply should represent all the tokens minted minus all the tokens burned. We know that blockchain explorers often ignore the last part - and we have to take the matter of calculating the burned tokens in our own hands. And no matter the method you use, now you are prepared to make the best estimate possible.

The last, but not least thing to remember is that tokens can be burned on many chains. This means that if there are multiple networks that a project uses, you might need to go through all of them. Here is an example on why it is important:

https://bscscan.com/token/0xf307910a4c7bbc79691fd374889b36d8531b08e3#balances

Remember we looked at ANKR token holders on Ethereum and saw that about 240m tokens were sent to the burn address there. However, ANKR is represented on multiple networks, including Binance Smart Chain. And by checking BscScan, we can see that another 200m of tokens were burned there, totalling the number of ANKR moved out Total Supply to 440m.

4.1 Issues with Circulating Supply

While understanding the Max Total Supply and Total Supply is not that hard, Circulating Supply is the most confusing term among three. The problem arises from the fact that all current methods of calculating Circulating Supply are rough approximations due to the pseudonymous nature of blockchains.

For example, CoinGecko defines Circulating Supply as Total Supply - Team tokens - Foundation tokens - Locked tokens. And though this is a viable way to approximate the supply in circulation, it is not always possible to identify all wallets that belong to the team, or identify all the tokens locked. Moreover, in situations where tokens are distributed through staking or mining, Circulating Supply will be roughly equal to the Total Supply.

To add insult to injury, tokens that belong to the team and foundation may not be locked - and therefore can (and do) enter the circulating supply at any point. So another method of calculating this metric is to focus only on truly locked tokens - those within smart contracts with cliffs or vesting schedules, or Liquidity Pools with no owners.

4.2 Looking at the Example

To learn more about the process, let’s look at the Covalent token (CQT). In their Circulating Supply we see three three addresses extracted from the Total Supply.

After checking all three contracts, we can conclude that two of them are multisig contracts with 2-of-2 signatures required to execute transactions. Both signatures are the same on both contracts. Details can be found in graphic interfaces of multisigs:

https://app.safe.global/settings/setup?safe=eth:0x220B7eebD8974Aa9dcFF93371BC554e03236E57E

https://app.safe.global/settings/setup?safe=eth:0xBf7A6ED78f9399F4299A8d000a83DB84beafBcFd

The third contract in the list is not verified and we can’t read the content of its code. However, we can look at the deployer of this contract, and see that the deployer is the same address that acts as an owner of the previous two multisigs.

https://etherscan.io/tx/0xf403a9c09ee158defe431969249abfeeb80aa620fe20ad7315f6ad20a2579d63

4.3 Rechecking Circulating Supply

So far - so good. But are there any additions that could improve the number? Are these the only contracts where control of the tokens belong to the team?

First, we should check if there are any burned tokens. We can go through the list of token holders, and find any noticeable amount of tokens on the Null Addresses. We could also recheck it by querying the https://graphql.bitquery.io/ as discussed earlier. And the result will show that there are no significant amounts of tokens that have been burned.

Another thing we need to check is whether CoinGecko has all of the addresses controlled by the Covalent team. To do that, we, once again, should check the contracts that are among the highest holders of CQT. None of them appear to be owned by the contract deployer, and even a multisig called Covalent: Delegator has different ownership by 2-of-3 signatures.

It is always useful to do a recheck of Circulating Supply metric as it is then used to create a Market Cap of a token - simply by multiplying the supply by the token’s price.

Last updated