The gate: no NAV move without an attestation
The NAV oracle’sORACLE_UPDATER_ROLE is assigned to the Attestor Registry. Once the direct-EOA write is revoked — a pre-mainnet lockdown step — there is exactly one path to move NAV:
Because the registry is the writer, every reserve value on record carries who attested it, what evidence backs it (evidenceHash), and when.
On testnet the direct-EOA oracle write has not yet been revoked, so treat the gate as the target end-state; on mainnet real attestors are added and every EOA path is revoked. See Security model.
What an attestation contains
Read the latest attestation for any cohort with
latest(cohortId), and check recency with isFresh(cohortId, maxAge).
Verify reserves yourself
1
Read the attestation
Call
latest(cohortId) on the Attestor Registry to get valueUSD, evidenceHash, attestor, and at.2
Check it's fresh
Confirm
isFresh(cohortId, maxAge) is true — a stale feed also trips the vault’s own staleness guard and blocks pricing.3
Match the evidence
Retrieve the off-chain evidence bundle and recompute its
keccak256; it must equal the on-chain evidenceHash.4
Recompute NAV
Cross-check the attested cohort values against
hardwareValueUSD() and rebuild NAV-per-share as totalAssets ÷ totalSupply. See Transparency & NAV.Verify hardware identity
Each asset can anchor a hardware identity:identityHash = keccak256 of the canonical bundle (machine id, host id, motherboard, geolocation, and per-GPU serials), plus GPU model and serial count. Call identityOf(assetId) on the Asset Registry, re-hash the off-chain bundle, and confirm the two match — proof that the anchored machine is the one backing the asset.