Publish tokenized fund NAVs and marks onchain
What it is
Publishing a tokenized fund’s NAV onchain means writing the net asset value per unit, as the fund administrator strikes it, to each chain the fund is issued on; the contract that holds it is often called a NAV oracle.
Asset managers and tokenization platforms publish it because wallets, lending markets and other contracts that hold the fund can only read a value that’s on the chain.
A Goldsky Compose task fetches each new NAV on a schedule and sends one signed update per chain, recording every call; the NAV itself stays with your administrator.
Who it’s for
Asset managers and tokenization platforms whose funds are held in wallets and used by lending markets on one or more chains.
How a tokenized fund’s NAV gets onchain
The diagram follows one NAV from the administrator’s strike to the apps that read it on each chain, and shows who does each step. Your setup may differ.
Strike the NAV
The NAV per unit is the fund’s official value, and only the administrator calculates it.
Your fund administrator values the fund’s assets, for a fund or exchange-traded product holding crypto-assets often at a licensed benchmark’s daily reference price, and publishes the NAV with the time it applies to. If the endpoint can return a value that hasn’t been signed off, the chain can show it too.
Set up a contract for the NAV on each chain
Apps can only read the NAV from a contract on their own chain, so each chain needs one that stores it.
Deploy a contract on each chain that stores the latest NAV and its date, and lets only your publishing wallet update it. If anyone can write to it, anyone can change the NAV the apps read.
Fetch the new NAV on schedule
Handled by Goldsky ComposeThe chain shows a NAV only when someone writes it there, so a job has to pick up each new value as the administrator publishes it.
The job runs as often as the NAV changes, usually hourly or daily, and has to cope with the source being briefly unavailable. If a run fails and nobody is alerted, the chain keeps showing an old NAV.
With Goldsky, a Compose task with a
Call external APIs from a task (opens in a new tab)crontrigger calls your administrator’s endpoint throughcontext.fetch, which retries a failed call with backoff before it gives up.Pause publishing when the NAV is wrong
If the source has a known problem, writing its value onchain spreads the error to every app that reads it.
Agree a flag your operations team can set at the source to stop publishing, and have the job skip the write, without raising an error, while it’s set. Pausing this way needs no code change and no redeploy.
Publish to each chain
Handled by Goldsky ComposeHolders and apps on every chain should see the same NAV, so each new value is written to the contract on each chain.
Each chain is written separately, so one that’s slow or failing doesn’t hold up the others, and the next run catches it up. The value is scaled to the contract’s decimal format before it’s written.
Goldsky Compose sends one
Send transactions from a task (opens in a new tab)wallet.writeContractcall per chain from the same task, run together withPromise.allSettled, so a failure on one chain doesn’t stop the rest.Confirm each update on the chain
Handled by Goldsky ComposeAn update is in place once enough blocks sit on top of it, and a reorg can drop one that looked done.
Wait for the confirmations you set before treating the update as published, and send it again if a reorg removes it. Otherwise apps can go on reading the previous NAV with nobody aware it was replaced.
A Compose write can wait for a set number of
Handle confirmations and reorgs (opens in a new tab)confirmationsand, withonReorgset toreplay, sends the transaction again with a fresh nonce if a reorg drops it.Keep a record of every update
Handled by Goldsky ComposeIf an app or an auditor asks why a value was on the chain, the answer has to come from records of what was read and written.
The record ties each value on the chain to the source response it came from, the time it was read and the transaction that wrote it. Without it, rebuilding one update means searching logs on each side by hand.
Every call a Compose task makes, including each fetch from your source and each transaction it sends, is logged for auditing. If a run is interrupted, calls that already finished aren’t repeated, so a write isn’t sent twice.
How Compose logs each call (opens in a new tab)Apps read the NAV
Wallets, lending markets and other contracts value the fund from the contract on their chain.
A contract that follows a standard price-feed interface, such as
AggregatorV3Interface, can be read by existing integrations without changes. Apps should check the value’s date and treat an old one as stale.
What you control
- Your team
- Set up a contract for the NAV on each chain
- Pause publishing when the NAV is wrong
- Your providers
- 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 publish data onchain
- Tokenized private credit marksPublish valuations of private credit vaults and loans onchain.
- Index values published onchainPublish benchmark index values onchain for funds and products that track them.
- Credit ratings published onchainPublish credit ratings onchain for tokenized instruments.
- Crypto fund NAV calculation from onchain holdingsValue a fund’s wallet and vault positions at the cut-off so the administrator can compute and report NAV.
Use cases built the same way
- Continuous proof of reservesCompare onchain supply with reported reserves on a schedule, then publish the ratio or alert on a gap.
- Prediction market creation and resolutionCreate and resolve prediction markets automatically, with every write retried and traced.
- Run your own oracle price feedPush prices and other data to contracts on many chains.
- VRF and verifiable randomness for smart contractsDeliver signed random values to contracts for prize draws, lottery allocations and random selection, checkable by anyone.
Publish a tokenized fund’s NAV onchain 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.