Tokenized money market funds in stablecoin reserves
What it is
Tracking tokenized money market funds in stablecoin reserves means checking the fund shares an issuer holds as reserves against its reserve record, valuing the fund tokens at the fund’s net asset value (NAV).
Stablecoin issuers and issuance platforms need the reserve figure they report to match what the reserve wallets hold, with any gap found before the report goes out.
Goldsky keeps the reserve wallets’ fund-token balances current and runs a scheduled check against your reserve ledger, while investing the cash, custody, the NAV and the report stay with you and your providers.
You can track tokenized reserves two ways: stream reserve balances into your database with Turbo Pipelines and check them with a scheduled Compose task, or run one scheduled Compose task that reads the balances itself.
Who it’s for
Stablecoin issuers, banks and brands with their own stablecoin, and issuance platforms that hold reserves in tokenized money market funds.
How tokenized money market funds in reserves are tracked
The diagram follows reserve cash from its investment in a tokenized money fund to the reserve report, and shows who does each step. Your setup may differ.
Ways to track tokenized money market funds in reserves
The pipeline re-reads a balance whenever a reserve wallet moves and keeps it in your database; the scheduled task reads balances only at each check and stores nothing between runs.
- Best for
- Reserve wallets that move often, with balances kept in your database
- Best for
- A few reserve wallets, read at each scheduled check
- Products
- Compose
| Usual setupOption 1: Stream balances, check with a task | Option 2: Scheduled task only | |
|---|---|---|
| Best for | Reserve wallets that move often, with balances kept in your database | A few reserve wallets, read at each scheduled check |
| Products | TurboCompose | Compose |
Invest reserve cash in a tokenized money fund
Issuers often keep part of their reserves in a money market fund, and a tokenized fund records each share as a token on the chain.
Your treasury buys fund shares under its reserve policy and records the purchase in the reserve ledger. If the ledger and the purchase disagree from the start, every later check shows a gap that isn’t real.
Hold the fund tokens in reserve wallets
The shares are only as safe as the keys to the wallets they sit in, so a custodian usually controls those wallets.
Your custody provider holds the reserve wallets under your approval policy, and you keep the list of which wallets count as reserves. Where the fund keeps the position in its own records instead of onchain wallets, the balance has to come from the fund, and a wallet you leave off the list is reserves that never get counted.
Keep reserve balances current
Handled by Goldsky TurboThe check is only as good as the balances it reads, so each reserve wallet’s holding has to be up to date.
Each time a reserve wallet sends or receives fund tokens, its balance is read from the chain at that block and stored. Reading balances only at report time leaves no way to see when a holding changed.
With Goldsky, a Turbo Pipelines transform watches fund-token transfers to and from the wallets in a dynamic table, calls
Read contract state in SQL (opens in a new tab)balanceOfat that block with_gs_eth_call(), and upserts one row per wallet and fund in your database.Get the fund’s NAV for the cut-off
A fund token is worth its share of the fund, so you need the net asset value (NAV) per share to turn a balance into money.
The fund administrator or a pricing provider publishes NAV per share for each valuation date. Using a NAV from a different date than the balances values the reserves at the wrong price, and the gap shows up in the report.
Check holdings at NAV against the reserve ledger
Handled by Goldsky ComposeThe reserve ledger is the figure you report, so it has to match what the wallets hold at the day’s price.
On a schedule, the holdings are multiplied by NAV per share, added up and compared with the ledger, and any difference above your tolerance is flagged. Running the check only before a report leaves a gap undiscovered for weeks.
A Compose task on a
Fetch figures in a task (opens in a new tab)crontrigger fetches the holdings, the NAV and your ledger figure, does the sum in TypeScript and posts any gap to your alert endpoint. Compose traces every input and output of the run.Resolve gaps and report reserves
The reserve report is what holders, auditors and regulators read, so every gap has to be explained before it goes out.
Your team looks into each flagged gap, fixes the ledger or the wallet list, and publishes the figure. A report sent with a gap nobody explained is the one auditors ask about first.
What to know about streaming reserve balances
- Goldsky runs the pipeline and the task; you own the database, the reserve ledger and the API the task reads them from.
- A balance is re-read only when its wallet sends or receives fund tokens, and the table holds one row per wallet and fund, replaced on each change.
- Reorg corrections update the same balance rows, keyed on wallet and fund token.
- Every check the task runs is logged with the figures it read, which gives reviewers a record of each comparison.
Invest reserve cash in a tokenized money fund
Issuers often keep part of their reserves in a money market fund, and a tokenized fund records each share as a token on the chain.
Your treasury buys fund shares under its reserve policy and records the purchase in the reserve ledger. If the ledger and the purchase disagree from the start, every later check shows a gap that isn’t real.
Hold the fund tokens in reserve wallets
The shares are only as safe as the keys to the wallets they sit in, so a custodian usually controls those wallets.
Your custody provider holds the reserve wallets under your approval policy, and you keep the list of which wallets count as reserves. Where the fund keeps the position in its own records instead of onchain wallets, the balance has to come from the fund, and a wallet you leave off the list is reserves that never get counted.
Run the check on a schedule
Handled by Goldsky ComposeReserves are checked at fixed times, so a gap can’t sit unnoticed between reports.
Pick a schedule that matches how often your reserves move and how often you publish. A schedule looser than your reporting means a report can go out on figures nobody checked.
Goldsky Compose runs the task on a
Schedule a task with cron (opens in a new tab)crontrigger set in the app’s manifest, and resumes a run that was interrupted without repeating the calls it already made.Read each reserve wallet’s fund-token balance
Handled by Goldsky ComposeThe check needs what the reserve wallets hold right now.
For each reserve wallet and fund token, the task reads the balance from the token contract on the chain. A wallet or chain left out of the task’s list is reserves that never get counted.
The task calls
Read contracts in a task (opens in a new tab)balanceOfon each fund token withreadContract, a view call that costs no gas, over the Edge RPC endpoints that Compose’s built-in chains use.Get the fund’s NAV for the cut-off
A fund token is worth its share of the fund, so you need the net asset value (NAV) per share to turn a balance into money.
The fund administrator or a pricing provider publishes NAV per share for each valuation date. Using a NAV from a different date than the balances values the reserves at the wrong price, and the gap shows up in the report.
Compare holdings at NAV with the reserve ledger
Handled by Goldsky ComposeThe reserve ledger is the figure you report, so it has to match what the wallets hold at the day’s price.
The holdings are multiplied by NAV per share, added up and compared with the ledger figure for the same cut-off. Different cut-off times on each side produce a gap that isn’t real.
Compose’s
Make auditable HTTP requests (opens in a new tab)fetchgets the NAV from your provider and the ledger figure from your API, with retries, and records each request and response on the run.Alert on a gap
Handled by Goldsky ComposeA difference above your tolerance needs a person to look at it before the next report.
The alert carries the holdings, NAV, ledger figure and difference, so whoever picks it up can start without rerunning the check. An alert with only “mismatch” in it sends someone back to the raw data.
With Goldsky, the same task posts the gap to your alert endpoint when the difference passes your tolerance, and the run’s trace keeps every figure it used.
Post alerts with fetch (opens in a new tab)Resolve gaps and report reserves
The reserve report is what holders, auditors and regulators read, so every gap has to be explained before it goes out.
Your team looks into each flagged gap, fixes the ledger or the wallet list, and publishes the figure. A report sent with a gap nobody explained is the one auditors ask about first.
What to know about checking reserves with a scheduled task
- Balances are read at each run, so a move between runs shows up only at the next check.
- Nothing keeps a balance history; the task’s logs record what each run read.
- All the logic lives in one TypeScript codebase that your engineers own.
What you control
- Your team
- Invest reserve cash in a tokenized money fund
- Resolve gaps and report reserves
- Your providers
- Custodian
- Fund administrator
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 track supply and reserves
- Proof of reserves for stablecoinsKeep a per-chain record of mints, burns and supply, and check it against reserves.
- Stablecoin mint and redemption monitoringRecord every mint and redemption of a stablecoin as it happens, on every chain.
- Continuous proof of reservesCompare onchain supply with reported reserves on a schedule, then publish the ratio or alert on a gap.
- 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.
- Month-end stablecoin supply for reserve reportsProduce the month-end supply across all chains that the monthly reserve report and its examination need.
- Stablecoin redemption spike alertsAlert when redemption requests in a single 24-hour period pass 10% of a brand’s outstanding issuance, the point at which the OCC must be told within 24 hours.
- MiCA daily usage cap for stablecoinsTrack the quarterly average of daily transactions and their value against the 1M transactions and €200M a day limits, and warn well before an issuer must stop issuing.
- Supply data for stablecoin issuance platformsGive an issuance platform one view of supply across every coin and chain it runs.
- Stablecoin depeg and manipulation alertsAlert the issuer when its coin trades off peg in its own pools or pool activity looks like manipulation, on every chain it runs on.
Track tokenized money market funds in stablecoin reserves 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.