# 分布式价格预言机系统的设计与实现为了解决单点故障问题,一些预言机服务采用了分布式设计。以提供比特币美元价格的服务为例,某系统聚合了31个独立的价格预言机来为用户提供可靠的数据。这种聚合器的合约设计允许多个链下预言机通过调用transmit方法来提供价格数据,从而响应用户的请求。这些链下预言机通常是外部拥有的账户(EOA),它们不仅可以为比特币/美元对提供数据,还可能为其他货币对如以太坊/美元提供服务。链上合约在处理预言机提供的数据时,会经过一系列严格的验证步骤:1. 首先读取当前合约状态并进行初步检查。2. 进行必要的准备工作。3. 使用ecrecover()函数对每个签名数据进行验证,确保hash值是对_report进行的哈希运算。同时检查签名者的角色是否为Signer,并防止重复签名。4. 检查观察值是否按顺序排列,并从中选取中位数。确保该中位数不超出预设的阈值范围。5. 在s_transmissions中记录本次预言机的答案,并进行进一步的验证。某些系统会将这一验证过程进一步扩展,例如通过比较不同预言机提供的价格偏差是否在可接受范围内来增强数据的可靠性。为了简化多种代币价格的获取过程,一些平台引入了Feed Registry的概念。这可以被视为PriceFeeds的聚合器,已经整合了多个priceFeed。使用Feed Registry,开发者可以直接读取价格数据,无需为每种代币单独设置priceFeed,大大降低了治理成本并提高了灵活性。在喂价机制方面,一些先进的价格预言机系统采用了多层数据聚合策略:1. 数据源聚合:从各大中心化和去中心化交易平台收集原始价格数据。2. 节点运营商聚合:由独立的节点运营商从多个数据聚合服务商获取数据并处理。3. 预言机网络聚合:整个网络层面的数据聚合,通常采用中值计算等方法。这种多层聚合机制有助于提高数据的准确性和可靠性。然而,由于存在偏差阈值和心跳阈值等更新触发机制,某些系统的价格更新可能相对缓慢,从几分钟到数小时不等。这种设计虽然增强了安全性,但也限制了其在对实时价格敏感的应用场景中的使用。总的来说,分布式价格预言机系统在提供可靠数据方面具有显著优势,但在选择和使用时仍需根据具体应用需求权衡其特性。
分布式价格预言机:多层聚合提升数据可靠性
分布式价格预言机系统的设计与实现
为了解决单点故障问题,一些预言机服务采用了分布式设计。以提供比特币美元价格的服务为例,某系统聚合了31个独立的价格预言机来为用户提供可靠的数据。
这种聚合器的合约设计允许多个链下预言机通过调用transmit方法来提供价格数据,从而响应用户的请求。这些链下预言机通常是外部拥有的账户(EOA),它们不仅可以为比特币/美元对提供数据,还可能为其他货币对如以太坊/美元提供服务。
链上合约在处理预言机提供的数据时,会经过一系列严格的验证步骤:
某些系统会将这一验证过程进一步扩展,例如通过比较不同预言机提供的价格偏差是否在可接受范围内来增强数据的可靠性。
为了简化多种代币价格的获取过程,一些平台引入了Feed Registry的概念。这可以被视为PriceFeeds的聚合器,已经整合了多个priceFeed。使用Feed Registry,开发者可以直接读取价格数据,无需为每种代币单独设置priceFeed,大大降低了治理成本并提高了灵活性。
在喂价机制方面,一些先进的价格预言机系统采用了多层数据聚合策略:
这种多层聚合机制有助于提高数据的准确性和可靠性。然而,由于存在偏差阈值和心跳阈值等更新触发机制,某些系统的价格更新可能相对缓慢,从几分钟到数小时不等。这种设计虽然增强了安全性,但也限制了其在对实时价格敏感的应用场景中的使用。
总的来说,分布式价格预言机系统在提供可靠数据方面具有显著优势,但在选择和使用时仍需根据具体应用需求权衡其特性。