The Chain Knows Exactly How Many Tokens Exist. Circulating Supply Is Somebody’s Answer to a Different Question.

A blockchain publishes how many tokens exist. It does not publish how many are circulating, because there is no such field anywhere on it. Circulating supply is a figure somebody produces off the chain by deciding which tokens should not count, and on most tracking sites that somebody is the project itself.
That is not a scandal and it is not a conspiracy. It is the documented process, and there is a decent reason for it. But it does mean the two numbers sitting next to each other on a coin page have completely different pedigrees, and only one of them was measured.
What follows is where each number actually comes from, the one call that settles the measurable half, and a worked example on the token this site follows where the published figure is out by a factor of roughly fifty nine thousand.
One of these questions has an on-chain answer
Ask a Solana node how many $CATE exist and it answers immediately, for free, without an account. On 18 August 2026 it returned 964,168,304.874682 tokens.
Look at that number for a second. It is not round. It has six decimal places, because the token is defined with six decimal places, and the chain reports the raw integer count of the smallest unit rather than a tidied headline. Nobody rounded it for your benefit and nobody chose it. It is simply what the mint account says right now, and it is the same answer for everyone who asks.
Now ask the same node how many of those tokens are circulating. There is nothing to ask. The mint account holds a supply figure, a decimals figure, and two authority slots that are both empty on this token. That is the whole record. There is no field for tokens the team promised not to sell, no field for tokens locked in a vesting contract, no field for coins somebody lost the keys to.
The chain cannot store that, and the reason is worth understanding rather than skipping. A chain records where tokens are. It has no way of knowing what anybody intends to do with them. A wallet holding fifty million tokens looks identical whether it belongs to a founder under a four year lock, an exchange holding customer balances, or somebody who bought them this morning and will sell them this afternoon. Working out which is which is a judgment about human intent, and judgment is not something a ledger can perform.
So somebody has to supply the other number
Since the chain will not answer it, the tracking sites had to build a process. They are open about what that process is, and it is worth reading in their own words rather than through anybody’s summary.
CoinMarketCap’s own interface carries two different sentences for the same field, and which one you see depends on how the figure arrived. When the number has been checked, the page says the team “has verified the project’s circulating supply to be as follows”. When it has not, the page says something considerably more revealing: “The CMC team has not verified the project’s circulating supply. However, according to the project, its self-reported CS and self-reported MC are as follows.”
Read that again, because it is the whole article in one sentence. The site has a built in state for a supply figure that arrived from the project and was never independently checked, and it has a label ready to print next to it. Self-reported is not an accusation there. It is a product feature, because a large share of the numbers genuinely do arrive that way.
This is the part most explainers leave out. They will tell you that circulating supply excludes locked and reserved tokens, which is true, and then move on as though the exclusion happens automatically. It does not. Somebody has to say which addresses are locked, and the somebody best placed to know is the team holding them.

Total supply is not automatically safer
Here is where it gets genuinely surprising, and where the usual explanation of these terms quietly breaks.
You might reasonably assume that circulating supply is the soft, editorial number and total supply is the hard one read off the chain. On a coin page, that is not necessarily so. CoinMarketCap’s interface also carries this line: “If this data has not been submitted by the project or verified by the CMC team, total supply shows – -.” The same sentence exists for max supply.
So on that page, total supply is also something that gets submitted or verified, and when neither has happened the field is left blank rather than filled in from a node. That is a defensible design for a site covering thousands of assets across dozens of chains, many of which have no single authoritative supply to read. But it means the phrase “total supply” on a tracking site and the phrase “total supply” on a chain are not guaranteed to be the same kind of object, even when they agree.
The practical consequence is small but sharp. A supply figure on an aggregator page is a claim with a chain of custody behind it, and the page usually tells you what that chain was if you look for the annotation. A supply figure from a node is a reading. When the two disagree, the reading is not automatically right about what is circulating, but it is always right about what exists.
| The number | Where it actually comes from | What can make it wrong |
|---|---|---|
| Supply on the mint account | Read from the chain by any node, on request | Nothing, but it answers “exists”, not “circulates” |
| Total supply on a tracking site | Submitted by the project or verified by the site’s team | Never submitted, or submitted once and never revised |
| Circulating supply | A deduction laid on top, deciding which holdings do not count | Locked lists supplied by the party holding the tokens |
| Max supply | Submitted or verified, same route as total supply | Blank when neither has happened |
What this looks like on the token this site follows
$CATE is an unusually clean demonstration, because the failure here is not a small drift. It is a different asset entirely.
Search for this token’s supply on the two largest tracking sites and here is what you find. CoinGecko has no entry for the Solana mint at all. We asked its public interface for the token by contract address on 18 August 2026 and it returned “coin not found”, and the pool data carries an empty aggregator identifier, which is the same fact from the other direction. There is no circulating supply published there because there is no listing there.
CoinMarketCap does carry a page under the CateCoin name, and it is not this token. That page describes an asset on BNB Smart Chain, contract beginning 0xe4fae3, with a circulating supply of about 57.27 trillion out of a 60 trillion total. This site has written before about the several unrelated tokens sharing this name, and this is the same collision showing up in the supply column instead of the price column.
Put the two side by side and the gap is not a rounding error. The Solana mint holds about 964.17 million tokens. The figure you would find by searching the name is about 57.27 trillion. That is roughly fifty nine thousand times larger, and it belongs to a different asset on a different chain that this project has no connection to.
The lesson generalises well beyond this one collision. A supply figure is only meaningful once you know which contract address it describes. The name on the page is not an identifier. The contract address is.

A number that was true once keeps getting published
There is a second, quieter failure mode, and it has nothing to do with mistaken identity. A submitted figure can be perfectly accurate on the day it is submitted and then simply stop being revised.
This token launched with one billion tokens. That number was correct on 26 July 2026 and it is still the number a great many places will show you. The chain has moved on. Tokens have been burned steadily since launch, which is to say permanently destroyed, and a node on 18 August 2026 reported 964,168,304.874682 remaining. Roughly 35.83 million tokens, about 3.58% of the launch supply, no longer exist.
The drift is not finished, and that is the point. When we read the same figure for an earlier article on 11 August 2026 it stood at 964,170,083. A week later it was about 1,800 tokens lower. That is a small movement, but it is a movement in one direction that never reverses, and any static copy of the number gets a little more wrong every day it sits there.
Why does a stale figure survive so well? Because nothing forces a correction. There is no event that fires when a burn happens and tells every downstream site to recheck. The figure was submitted once, it looked right, and it will keep being served until a human decides to revisit it. We have written separately about one specific upstream source of the stale billion on this token, which is a launchpad record frozen at creation, and that mechanism explains a good deal of where the figure keeps coming back from.
How to check any Solana token yourself
This needs no account, no paid key and no third party you have to trust. A public node will answer, and the answer takes one request.
curl -s https://api.mainnet-beta.solana.com \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getTokenSupply",
"params":["<MINT_ADDRESS>"]}'
What comes back is an amount in the token’s smallest unit, a decimals value, and a human readable figure that combines the two. That is the supply that exists. It is the number to trust when a page shows you something different and you want to know which one was measured.
Two cautions, both of which matter more than they sound. First, this tells you what exists, not what circulates, and no amount of querying will turn one into the other. If you want circulating supply you are asking for somebody’s judgment, and the honest move is to find out whose and on what basis, rather than to look for a purer source that does not exist.
Second, Solana has two separate token programs, and a token built on the newer one will not appear in tooling that only knows about the older one. $CATE is on the newer program, which is a detail that has already caught out at least one widely repeated wallet safety check, and we covered that trap in how wallets actually get drained. The call above works on both, but plenty of dashboards and scripts do not.
| If you want to know | Ask | Trust level |
|---|---|---|
| How many tokens exist right now | A node, directly | Definitive, and reproducible by anyone |
| Whether more can be created | A node, for the mint authority slot | Definitive, empty slot means no |
| How many are freely tradable | A tracking site, and read the annotation | A claim, sometimes checked, sometimes not |
| Which asset a figure describes | The contract address, never the name | The only identifier that cannot collide |
What to take from this
None of this makes tracking sites untrustworthy. They are solving a genuinely hard problem across thousands of assets, and the annotation telling you a figure is self-reported is them doing the honest thing rather than hiding it. The failure is usually in the reading, not the reporting.
What is worth carrying away is a habit. When you see a supply number, ask which of the two questions it answers. If it is how many exist, a node will confirm or refute it in seconds and there is no reason to accept anybody’s word. If it is how many circulate, there is a person somewhere in that number, and knowing that is not cynicism, it is just reading the label.
And check the contract address before you compare anything at all. On this token, the difference between doing that and not doing it is a factor of fifty nine thousand.
The live supply for this token, read from a node every hour for exactly the reasons above, is on our stats page. If the name collision is what brought you here, the fuller version of that story is in which CateCoin is which.
This site is community run and does not speak for the project. The CoinMarketCap wording quoted above was read from its own published methodology page on 18 August 2026, and every supply figure was read from a public Solana node on the date stated beside it. Nothing here is financial advice.
Official contract address · Solana
Ai66LHZG9MCzg1WKdawwqduVAXpNDUuV8M3uyq5ppump