分布式价格预言机系统: 多层聚合与Feed Registry优化

robot
摘要生成中

分布式价格预言机系统

为避免单点故障,一些预言机服务采用了分布式设计。以提供BTC美元价格的服务为例,某知名预言机平台汇集了31个价格源来为用户提供服务。

这种聚合器的合约源码可以在以太坊区块浏览器上查看。通过调用合约中的transmitters方法,可以查看该聚合器包含的所有链下预言机。

每个链下预言机可以通过调用transmit方法来提供价格数据,以响应聚合器中用户的请求。这些链下预言机是一些外部拥有账户(EOA),它们不仅为BTC/USD聚合器提供价格数据,还可能为其他聚合器(如ETH/USD)提供价格数据。

链上合约的处理流程大致如下:

  1. 首先读取当前合约状态,并进行一系列检查。

  2. 检查通过后,进行一些准备工作。

  3. 接下来使用ecrecover()对每个签名数据进行验签,校验hash值是否对_report做的hash。同时检查签名者的角色是否是Signer,且要检查签名的重复性。

  4. 最后,检查观察值是否按顺序排列。从排序后的观察值中选取中位数median,并确保median不超过上下两个阈值。如无问题,在s_transmissions中记录本次预言机的answer。此外,还要对answer进行校验。

这里经过一系列调用最终会调用某价格预言机合约的validate方法,关键是比较两边预言机给的价格偏差是否在一个可接受范围内。

预言机详解系列之 Chainlink(下)

Feed Registry

为了提高灵活性和降低治理成本,一些平台推出了Feed Registry。它可以理解为PriceFeeds的聚合器,已经聚合了多个priceFeed。有了它,使用者无需自己设置priceFeed,可直接通过Feed Registry读取价格数据。

预言机详解系列之 Chainlink(下)

喂价机制

价格预言机的价格通常通过多个层级的数据聚合得到,主要包括数据源聚合、节点运营商聚合和预言机网络聚合三个层级。

最原始的价格数据主要来自各大中心化和去中心化交易平台。一些专门的数据聚合服务商会从这些平台收集原始价格数据,并进行加工整合,如根据交易量、流动性和时差等进行加权计算。这是第一层面的数据源聚合。

第二层是节点运营商的聚合。每个节点运营商负责运行核心软件,从多个独立的数据聚合服务商获取价格数据,并取中值,剔除异常值和API停机时间。

最后一层是整个预言机网络的聚合,常见方式是当响应节点数量达到预设值时对数据取中值。

价格更新通常需要满足偏差阈值或心跳阈值两个触发参数之一。不同价格源的这两个参数值可能不同。

总的来说,一些知名预言机平台的价格预言机接入方便且安全性较高,但由于价格更新机制存在偏差阈值,导致更新较慢,适用于对价格更新不太敏感的应用。这也是其局限性所在,无法适用所有场景。

预言机详解系列之 Chainlink(下)

LINK1.01%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 6
  • 分享
评论
0/400
财富咖啡vip
· 13小时前
分布式有趣哦 终于不用看人脸色了
回复0
HashBrowniesvip
· 08-02 07:13
31个数据源,总感觉不够多点~
回复0
RektDetectivevip
· 08-02 07:08
整天看机构脱裤子 到底看够了没
回复0
GasFeeCriervip
· 08-02 07:00
好家伙 看的头晕 gas小王子
回复0
NFT资深考古学家vip
· 08-02 06:57
链上代码读来似封泥文字般优雅
回复0
MEV_Whisperervip
· 08-02 06:56
聚合那么多有啥用 依然不准
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)