要用价才现查,还是价自己送上门:预言机两种送价方式的取舍 图 1
要用价才现查,还是价自己送上门:预言机两种送价方式的取舍 · 图 1

借贷协议判断你有没有被清算、金库给你铸多少份额、池子按什么价格结算,都要从链下把外部价格搬上链。搬运这件事有两种基本结构:一种像订报纸,喂价网络定时把最新价格写入链上合约,谁要用直接读;另一种像去档案馆查档,协议在自己的交易里现场请求一份带签名的最新价格,当场验证、当场使用。社区一般把前者叫推送式,后者叫拉取式。两者送的是同一个价,代价却落在完全不同的人身上。

先看推送式。喂价网络按预设条件把价格写进链上:要么到了约定的心跳时间,要么价格偏离上一次上链值超过了设定阈值,两个条件谁先满足就更新。好处是所有使用者共享同一份链上数据,读取便宜,集成简单,协议不需要自己管理喂价请求。代价藏在两个地方:其一,写价的 Gas 由喂价网络承担,最终会反映进协议的订阅费用,成本是全链条分摊的;其二,在两次更新之间,链上的价格是静止的,行情剧烈波动时,它可能是几分钟甚至更久之前的读数。

拉取式把这个结构反过来。链上不养着一份常驻价格,协议需要时发起一次查询,从喂价网络或其去中心化服务取回一份带多位签名者背书的价格,连同其时间戳与有效期一起校验后使用。好处是价格在你决策的那一瞬间被强制检查:太旧就拒用,偏差太大就报警,新鲜度的把关被嵌进了交易本身。代价同样清楚:每次使用都产生额外的验证与请求成本,这份 Gas 由发起操作的协议或其用户承担;集成方必须自己写对验证逻辑,签名集、轮次、有效期任何一处校验草率,都会留下攻击面。

两种结构的安全边界也不同。推送式的风险集中在「窗口」上:链上价与真实价的差在更新间隔内可以拉得很大,协议要靠内置的偏差上限、熔断机制去挡这个窗口期。拉取式的风险集中在「验证」上:价格本身是网络刚签的,但集成者有没有检查签名门槛、有没有核对时间戳、有没有拒绝重放,决定了这份新鲜价会不会被用歪。前者的失败模式是慢半拍的价被当真价,后者的失败模式是快准的价被接错。

值得强调的是,很多协议并不是二选一,而是混着用。常态运行读推送式缓存,因为便宜;执行清算、大额赎回这类高风险动作时额外做一次拉取式核对,为关键决策买一份当场确认。所以用户完全可能在自己的持仓页上同时看到两个价格读数:一个来自缓存、一个来自现查。理解它们各自的更新时机,比纠结哪个数字更「真」更重要,因为协议规则写死了在哪些动作上以哪份读数为准。

对普通用户,这份差异会落到几个具体问题上。为什么行情已经跌了,清算还按旧价判你安全、或者反过来提前触发?多半是推送式缓存的心跳与偏差参数决定的更新节奏。为什么同样的操作在大户手上会先弹一次确认、耗时更长?可能正是协议在关键动作里嵌入了现查环节。检查方法很朴素:找到协议文档里价格源的描述,确认每个关键动作分别用哪份读数、什么条件下拒用,把这两行看明白,很多诡异的体验就有了物理解释。

边界说明:各家喂价网络在签名门数、请求通道、有效期设定上差异很大,交付形态也在持续演化,本文只对比两种基本结构的机制与取舍,不构成投资建议,也不针对任何单一喂价产品做优劣结论。涉及具体协议时,请以其文档与链上参数为准。

要用价才现查,还是价自己送上门:预言机两种送价方式的取舍 图 2
要用价才现查,还是价自己送上门:预言机两种送价方式的取舍 · 图 2