Tokenized private credit marks
What are tokenized private credit marks?
Tokenized private credit marks are the valuations of the loans behind an onchain private credit vault or note, written to the chain so contracts can read them; the contract is sometimes called a private credit oracle.
Private credit funds and asset managers publish them because the vault’s share price, and any loan that takes the shares as collateral, depends on the latest approved value of the book.
A Goldsky Compose task reads the marks your valuation committee approved and writes them to each chain you use; valuing the loans and approving the marks stay with you.
Who publishes tokenized private credit marks?
Private credit funds and asset managers that run onchain lending vaults or issue tokenized notes backed by a loan book.
How private credit marks get onchain
The diagram follows one set of marks from the valuation of the loans to the vault prices that update on the chain, and shows who does each step. Your setup may differ.
Value the loans
A private credit vault is worth what its loans are worth, and loans have no market price to read.
Your valuation agent marks each loan, or the book as a whole, under the fund’s valuation policy and as of a stated date. Marks without a date can’t be told apart from the ones before them.
Approve the marks
Under the fund’s valuation policy, marks are signed off before anyone relies on them.
Your valuation committee reviews and approves the marks, and only approved marks become available to publish. If draft marks can reach the chain, lenders may act on a value the committee later changes.
Set up a contract for the marks on each chain
Apps can only read the marks 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 marks and its date, and lets only your publishing wallet update it. If anyone can write to it, anyone can change the marks the apps read.
Fetch the approved marks on schedule
Handled by Goldsky ComposeThe chain shows new marks only when someone writes them there, so a job has to pick them up after each approval.
The job reads from a source that returns only approved marks, on a schedule that matches your valuation cycle. If a run fails and nobody is alerted, the old marks stay in place while the book has moved.
A Compose task with a
Call external APIs from a task (opens in a new tab)crontrigger reads the approved marks throughcontext.fetch, which retries a failed call with backoff.Publish the marks to each chain
Handled by Goldsky ComposeVaults and lenders read the marks on their own chain, so each chain gets the same values.
Each chain is written separately, so one failing chain doesn’t block the others, and every update has to stick after a reorg. Wait for the confirmations you set before treating an update as published.
With Goldsky Compose, the task writes each chain with
Handle confirmations and reorgs (opens in a new tab)wallet.writeContract, can wait forconfirmations, and withonReorgset toreplaysends a dropped update again.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)Update vault prices
The vault’s share price and any loan against its shares follow the latest marks.
Vault contracts and lenders read the marks from the contract on their chain. They should check the date of each mark and treat an old one as stale.
Related jobs
Borrowers repay into the pool
A loan waterfall starts from each payment a borrower makes, so every report begins with those payments.
A payment can carry principal, interest and fees in one transfer to the pool’s contracts. In some lending pools the contracts split it on arrival: service fees to the pool manager and the protocol, a management fee out of the interest, and the net interest to lenders.
Write down the order of payment
Who is paid first decides who absorbs a shortfall, so the report needs the pool’s order of payment.
In a tranched pool the senior tranche is paid and redeemed before the junior one, and the junior tranche takes the first loss. Take these rules from the pool’s documents, because the chain shows the payments but not always why one party came first.
Load the pool’s full history
Handled by Goldsky TurboPeriod reports and cumulative figures need every payment since the pool opened.
Start at the block where each contract was deployed and move on to new blocks without a gap at the switch. A missing range shows up later as interest that never seems to have reached lenders.
Goldsky’s Turbo Pipelines reads a dataset from the start of its history with
Set where a pipeline starts (opens in a new tab)start_at: earliestand keeps streaming new blocks, so one pipeline covers the backfill and the live data.Decode payments and fees into columns
Handled by Goldsky TurboAnalysts need principal, interest and each fee as separate amounts, not encoded logs.
Decode each payment, fee and distribution event with its contract’s ABI, keep token amounts at full precision, and store the transaction hash on every row so each figure traces back to the chain. Rows a reorg (the chain replacing its newest blocks) removes have to come out of the report too.
A Turbo Pipelines SQL transform decodes the pool’s logs with
Decode logs with an ABI (opens in a new tab)_gs_log_decode()and your ABIs, and the pipeline writes Parquet files to an S3 bucket your warehouse loads, where reorg corrections arrive as records to apply.Build the waterfall report
Investors and lenders want to see, for each period, what came in and where it went.
Total each period’s principal, interest and fees, then allocate them in the pool’s order of payment to each tranche or share class. These totals and allocations are warehouse queries, because a pipeline can’t group rows across a period.
Tie out to the servicer’s records
The chain and the servicer’s books describe the same loans, and investors rely on them agreeing.
Match each period’s onchain payments to the servicer’s or administrator’s payment records. A payment in one record and not the other is a break to explain before the report goes out.
What you control
- Your team
- Approve the marks
- Set up a contract for the marks on each chain
- Your providers
- Valuation agent
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
- Publish tokenized fund NAVs and marks onchainPublish a tokenized fund’s NAV to every chain the fund is on, on a schedule.
- 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.
- Run your own oracle price feedPush prices and other data to contracts on many chains.
- Cross-chain transfer trackingSee every cross-chain stablecoin transfer as settled, in flight or stalled, and catch the stuck ones.
- Wrapped bitcoin reserve monitoringCheck a wrapped bitcoin token’s supply on every chain against the BTC at its custodian’s reserve addresses, and alert on any gap.
Publish tokenized private credit marks 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.