Stablecoin holder concentration reporting
What is stablecoin holder concentration reporting?
Stablecoin holder concentration reporting is listing, for each day, the wallets that hold a large share of a token’s supply and the wallets that redeemed the most, a view also called the holder distribution or top holders.
Issuers watch it because a few large holders redeeming at once put the most pressure on reserves, and the OCC’s PS-01 report asks for every wallet above 2% of supply and the top 20 redeemers.
Goldsky loads every transfer and burn from the token’s first block into your warehouse, and your team sums each day-end balance and ranks the wallets there.
You can build holder concentration reports two ways: load every transfer into your warehouse with Turbo Pipelines and total balances there, or query a subgraph that keeps a running balance for each holder.
Who needs stablecoin holder concentration reporting?
Stablecoin issuers, banks issuing branded coins, and the issuance platforms that run tokens for them.
How stablecoin holder concentration reports work
The diagram follows one day of transfers from the chain to the list of top wallets your team reports, and shows who does each step. Your setup may differ.
Ways to report stablecoin holder concentration
Your warehouse queries sum balances from every transfer on every chain; a subgraph’s mapping keeps a running balance for each holder, and your daily job reads them at the cutoff block.
- Best for
- Holder figures on every chain, traceable to each transfer
- Products
- Turbo
- What you run
- The destination: your database, queue or bucket, or a Postgres database Goldsky hosts
- What you write
- Pipeline YAML and SQL; TypeScript transforms when needed
- Where your data lives
- In your own database or systems
- How results reach you
- Pushed to you
- Best for
- One EVM token deployment, with balances from a hosted API
- Products
- Subgraphs
- What you run
- Nothing; Goldsky runs indexing, storage and the API
- What you write
- A schema and mapping handlers, or a no-code or low-code config for simple contracts
- Where your data lives
- Hosted by Goldsky
- How results reach you
- You query; changes are pushed
| Usual setupOption 1: Stream to your warehouse | Option 2: Hosted subgraph | |
|---|---|---|
| Best for | Holder figures on every chain, traceable to each transfer | One EVM token deployment, with balances from a hosted API |
| Products | Turbo | Subgraphs |
| What you run | The destination: your database, queue or bucket, or a Postgres database Goldsky hosts | Nothing; Goldsky runs indexing, storage and the API |
| What you write | Pipeline YAML and SQL; TypeScript transforms when needed | A schema and mapping handlers, or a no-code or low-code config for simple contracts |
| Where your data lives | In your own database or systems | Hosted by Goldsky |
| How results reach you | Pushed to you | You query; changes are pushed |
Let tokens change hands
Holdings move with every transfer, mint and redemption, so concentration can change within a day.
A redemption usually shows as a transfer to the issuer’s redemption address followed by a burn. Unless you know which addresses those are, redemptions look like ordinary transfers.
Load every transfer from the first block
Handled by Goldsky TurboA wallet’s balance on any day is the sum of every transfer in and out of it before then.
The history has to start at the token’s first block and keep up with new blocks, with no gap. One missing day leaves every later balance wrong.
A Turbo Pipelines source filtered to your token’s address can start at the earliest block and carry on live, decoding each transfer with
Learn about EVM sources and backfills (opens in a new tab)_gs_log_decode.Land the transfers in your warehouse
Handled by Goldsky TurboBalances are summed from a copy of the history your team can query.
Each transfer and burn lands with its chain, block, time and a stable ID. Corrections after a reorg arrive as their own records, and the warehouse applies them so replaced blocks don’t count.
With Goldsky, the pipeline can write the transfers as Parquet files to an S3-compatible bucket, partitioned by chain and date, ready for your warehouse.
Write events to S3 as Parquet (opens in a new tab)Sum balances at day end
Concentration is measured on each wallet’s balance at the close of the day.
Your team sums every transfer in and out of each wallet up to a fixed daily cutoff, and separately totals what each wallet sent to your redemption addresses that day. The cutoff has to be the same on every chain.
List the largest holders and redeemers
The report names the wallets that hold a large share of supply and those that redeemed the most.
Your team divides each balance by total supply at the same cutoff, lists every wallet above the threshold your report sets, such as 2% for the OCC’s PS-01, and ranks the top redeemers. A supply figure taken at a different time from the balances shifts every percentage.
What to know about building concentration figures in your warehouse
- Goldsky loads the transfers; summing balances and ranking wallets are queries your team writes and owns.
- Each chain’s transfers land with their chain, so totals across chains are a query in your warehouse.
- Corrections after a reorg arrive as records your warehouse applies.
Let tokens change hands
Holdings move with every transfer, mint and redemption, so concentration can change within a day.
A redemption usually shows as a transfer to the issuer’s redemption address followed by a burn. Unless you know which addresses those are, redemptions look like ordinary transfers.
Keep a balance for every holder
Handled by Goldsky SubgraphsA wallet’s balance is the running sum of every transfer in and out of it.
Every transfer adds to one wallet and subtracts from the other, and mints and burns adjust only the real holder. Counting the zero address as a holder skews total supply.
A Goldsky subgraph’s mapping updates a balance record for each holder on every transfer, and can total each wallet’s redemptions the same way.
See a holder registry on subgraphs (opens in a new tab)Read balances at day end
Handled by Goldsky SubgraphsConcentration is measured at the close of each day, not whenever the query happens to run.
Your job finds the day’s last block and queries every balance as it stood then, largest first. Querying the latest state mixes in the next day’s transfers.
The subgraph’s GraphQL API can return records as of a given block, so your daily job reads balances at the cutoff rather than at the chain’s newest block.
Learn about hosted subgraphs (opens in a new tab)Store each day’s results
The report needs a dated record of each day’s list that won’t change when balances do.
Your job writes the day’s balances and redemptions to your warehouse or database. Without a stored copy, you can’t show later what the list looked like on a given day.
List the largest holders and redeemers
The report names the wallets that hold a large share of supply and those that redeemed the most.
Your team divides each balance by total supply at the same cutoff, lists every wallet above the threshold your report sets, such as 2% for the OCC’s PS-01, and ranks the top redeemers. A supply figure taken at a different time from the balances shifts every percentage.
What to know about holder concentration from a subgraph
- One subgraph covers one chain, so a token on several chains needs one for each and a step of yours to combine them.
- The mapping code keeps the running balances, so a mistake in it carries into every balance until it’s fixed and the subgraph reindexes.
- Day-end balances come from querying at the day’s last block; storing each day’s results is your step.
What you control
- Your team
- Sum balances at day end
- List the largest holders and redeemers
Security and deployment
- SOC 2 Type IIIndependently audited security controls.
- Dedicated infrastructureSingle-tenant options for production workloads.
- Data residencyCloud, on-premises or co-located.
More use cases that report to regulators
- GENIUS Act stablecoin reporting dataFile the weekly OCC PS-01 report from daily per-chain supply, freeze and holder data.
- MiCA stablecoin reporting dataReport holder counts, issuance and volumes each quarter for asset-referenced tokens above €100M in issue, and for EMTs in non-EU currencies.
- CFTC digital collateral reporting dataReport totals of BTC, ETH and USDC held as margin, per asset and account class, each week during an FCM’s first three months under the CFTC pilot.
- NCUA stablecoin reporting dataReport supply, mint and burn, and holder figures for a stablecoin issued by a credit union subsidiary under the NCUA’s proposed rules.
- Basel cryptoasset disclosure dataRead a bank’s cryptoasset holdings at the period-end block so it can classify them and complete its Basel disclosure tables.
Use cases built the same way
- Daily stablecoin supply by chain for PS-01 reportsKeep the daily per-chain supply, issued, redeemed, issuer-held, frozen and lost figures that feed the weekly OCC PS-01 report.
- Supply data for stablecoin issuance platformsGive an issuance platform one view of supply across every coin and chain it runs.
- Onchain data for finance and BI reportingLoad onchain activity into the warehouse so finance and BI teams can report on it.
- Crypto fair-value pricing from DEX tradesFeed DEX trade prices into principal-market fair-value marks and the VWAPs used to check them.
Report stablecoin holder concentration with Goldsky
We’ll map it to your systems and show you what Goldsky runs, so your team builds the product, not the pipelines underneath it.