Skip to main content

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.

Your business, step 1: Invest reserve cashReserves go into a tokenized money fund
Your business, step 2: CustodianHold the fund tokensIn reserve wallets your custodian controls
Your business, step 4: Fund administratorSupply the fund’s NAVPrice per share for the cut-off
Goldsky, step 3: TurboKeep reserve balances currentRe-read whenever a reserve wallet moves
Your business, step 6: Report reservesGaps resolved before the reserve report
Goldsky, step 5: ComposeCheck the reserve recordHoldings at NAV against your reserve ledger
  • Goldsky
  • Your provider

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
Products
TurboCompose
Best for
A few reserve wallets, read at each scheduled check
Products
Compose

Option 1: Track tokenized stablecoin reserves by streaming balances and checking them on a schedule

A pipeline keeps each reserve wallet’s fund-token balance current in your database, re-reading it whenever the wallet moves. A scheduled task then values the holdings at the fund’s NAV and checks them against your reserve ledger.

When to stream reserve balances and check them with a task

Your reserves sit in several wallets or funds that move often, and you want current balances in your own database for other reports as well as a scheduled check.

What you’ll need

  • Goldsky Turbo
  • Goldsky Compose
  • A custody provider that holds the fund tokens in reserve wallets
  • A NAV provider, such as the fund administrator
  • A database for the reserve wallet list and balances
  • An API that serves current holdings and your reserve ledger figure
  • An alert endpoint that reaches your treasury team
  1. 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.

  2. 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.

  3. Keep reserve balances current

    Handled by Goldsky Turbo

    The 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 balanceOf at that block with _gs_eth_call(), and upserts one row per wallet and fund in your database.

    Read contract state in SQL (opens in a new tab)
  4. 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.

  5. Check holdings at NAV against the reserve ledger

    Handled by Goldsky Compose

    The 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 cron trigger 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.

    Fetch figures in a task (opens in a new tab)
  6. 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.

Option 2: Track tokenized stablecoin reserves with a scheduled task

One TypeScript task that Goldsky hosts runs on a schedule, reads each reserve wallet’s fund-token balance from the chain, fetches the fund’s NAV and your ledger figure, and compares them. There’s no pipeline or database to set up.

When to check tokenized reserves with a scheduled task

You hold the fund tokens in a few reserve wallets, and a balance read at each check is enough without keeping balances in a database.

What you’ll need

  • Goldsky Compose
  • A custody provider that holds the fund tokens in reserve wallets
  • A NAV provider, such as the fund administrator
  • An API that serves your reserve ledger figure
  • An alert endpoint that reaches your treasury team
  1. 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.

  2. 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.

  3. Run the check on a schedule

    Handled by Goldsky Compose

    Reserves 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 cron trigger set in the app’s manifest, and resumes a run that was interrupted without repeating the calls it already made.

    Schedule a task with cron (opens in a new tab)
  4. Read each reserve wallet’s fund-token balance

    Handled by Goldsky Compose

    The 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 balanceOf on each fund token with readContract, a view call that costs no gas, over the Edge RPC endpoints that Compose’s built-in chains use.

    Read contracts in a task (opens in a new tab)
  5. 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.

  6. Compare holdings at NAV with the reserve ledger

    Handled by Goldsky Compose

    The 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 fetch gets the NAV from your provider and the ledger figure from your API, with retries, and records each request and response on the run.

    Make auditable HTTP requests (opens in a new tab)
  7. Alert on a gap

    Handled by Goldsky Compose

    A 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)
  8. 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.

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.

© Endless Sky Inc. All rights reserved.

PrivacyTermsSecurity

System status