基金净值何时过期要写进合约:ERC-8330 快照预言机的字段与规则 图 1
基金净值何时过期要写进合约:ERC-8330 快照预言机的字段与规则 · 图 1

基金净值何时过期要写进合约:ERC-8330 快照预言机的字段与规则

价格预言机解决“现在值多少”,但链上基金、份额化资产和净值贷款需要的不是市价,而是某个估值时点的净值快照——由谁在什么时候按什么方法算的,三样少一样都不敢上杠杆。ERC-8330 创建于 2026 年 7 月 5 日,仓库记录状态为 Review,把这件事接口化:发行方只管发布,消费方只管查询,新鲜度规则由合约配置而非口头承诺决定。

一份快照的九个字段

publishNAV 的入参就是一张净值凭证的字段表:subjectId 标明估值对象,currencybytes32 标识计价货币,navBasis 声明净值口径,nav 是带符号整数、配 decimals 说明小数位,valuationTimestamp 记录估值时点而非上链时点,methodologyHashmethodologyURI 把计算方法钉成摘要加链接,correctsIndex 若非零表示这份快照是对历史某条的更正,返回的快照编号写进 NAVPublished 事件。这套字段合起来的含义是:每个数字背后必须有口径、有方法、有时间三件证据,缺件发布的净值在接口层就无处遁形。

基金净值何时过期要写进合约:ERC-8330 快照预言机的字段与规则 图 2
基金净值何时过期要写进合约:ERC-8330 快照预言机的字段与规则 · 图 2

过期是配置,不是默契

消费侧最关键的函数是 latestNAV 与配套的 latestNAVStatus:同一个查询返回净值与状态,状态编码了这份快照在当下是否仍然新鲜。新鲜与否由 setStalenessConfig 写入的阈值决定——估值时点距当前超过多少即过期,阈值本身进链可查,maxValuationAge 给出当前口径。查询侧还有完整的目录函数:currentSnapshotIndexisSnapshotCurrentsnapshotCount 回答“有没有最新一条”,getSnapshot 按编号取历史,latestNAVByProviderproviderSnapshotCountproviderSnapshotAt 按发行方视角分账,多个估值提供方并存时各自计数互不覆盖。heartbeat 函数暴露活跃度信号,长期无发布的主题一眼可见。

从快照到风险决策的距离

净值接口到风控之间还差几步,标准用函数名间接画出了路线图。消费合约取数后应先读 latestNAVStatus 而非直接取数:状态位里的过期含义是估值时点距交易入块时间超过配置阈值,把时间基准钉死在链上时钟,消除“以出报告那天算起”的解释空间。带 correctsIndex 的更正发布不覆盖历史,而是追加一条指旧的新快照,审计路径保持完整;作废标记只改状态不改数值,已作废快照被再读取时状态查询应能立刻报警。对净值贷款这类高风险消费方,正确顺序是查状态、读口径、比提供方计数、核对方法学摘要,四步之后才轮到用数字。把这套顺序反过来做——先拿数再补证据——正是多数净值事故的事后复盘第一条。

与价格预言机的差异表

和喂价预言机对照,差异集中在三个维度。频率:价格源秒级心跳,净值按发行周期日更或周更,接口为低频设计,快照计数与历史翻页比实时推送更重要。真值来源:喂价靠聚合市场价,净值靠方法学,methodologyHash 这一字段在喂价接口里根本没有对应物。失效定义:喂价的过期是链上心跳中断,净值的过期是估值时点与链上时钟的差值,两种 staleness 的判定路径完全不同,集成代码复用即错误。用同一只眼看两类预言机,很容易把净值接口当喂价接口接,结果是把周更数字喂给秒级清算,事故时间线会从第一次净值间隔拉长那天开始画。

作废、更正与口径之争

净值算错了怎么办?标准给出两条通道:invalidateSnapshot 把某条快照标记作废,作废状态由 isSnapshotInvalidated 查询,被作废的快照在状态位上永久带痕而非静默消失;correctsIndex 允许新快照指名替代旧值,历史链条保持可读。净值口径 navBasis 则处理更微妙的问题——同一基金可以有总资产净值、流通份额净值等不同口径,字段由 setNAVBasis 配置启用,消费协议应当显式绑定口径再取数,防止把口径错位当成价格暴涨。把这套接口当作阅读任何净值预言机的检查表:发布时间戳是否独立于上链时间、过期阈值能否在链上读到、方法学有没有摘要可核对、作废是否留痕。四问全过,预言机给的才是证据;过不了任何一个,链下文档说得再好听都只是引用。

本文为机制说明,不构成任何投资建议。