ADR 009: Supply module
Changelog
- March 21st, 2022: Initial draft;
- March 21st, 2022: First review;
- March 21st, 2022: Second review;
- April 04th, 2022: Third review.
Status
ACCEPTED Implemented
Abstract
This ADR defines the x/supply
module which will expose a set of APIs that can be called by data aggregator websites (such as CoinGecko and CoinMarketCap) in order to fetch updated data about a specific supply.
Context
Currently, inside our CoinGecko and CoinMarketCap some important information about current and total supply are missing or not correctly updated. To solve this, we can implement a series of APIs that read those data from the chain. Data aggregator websites that have the token listed can later use them.
Decision
The APIs will be exposed in a new module called x/supply
that will have the purpose to fetch the given information using different Cosmos SDK modules (namely x/bank
, x/distribution
, x/staking
) and apply some conversions on them in order to display them the best way possible for the client.
Queries
All the following APIs will have a custom param named divider-exponent
that allows to set the divider exponent to be used when returning the values. A divider-exponent
of 0
will identify the whole token amount, while a divider exponent of 3
will return the result divided by 10^3
.
Total Supply
This query will fetch the total supply of a given token denom
.
Current supply
This query will return the circulating supply by subtracting the total vested tokens amount and community pool amount from the total supply of the given token.
Consequences
Positive
- All the chain nodes will expose these APIs automatically after their node updates;
- No state-breaking changes introduced;
- Easily extensible.
Test Cases
- Check API to correctly return the converted total Supply from millionth to non-millionth representation;
- Check API to correctly return the current supply.
References
- Issue #733.