# 分布式价格预言机系统的设计与实现为了解决单点故障问题,一些预言机服务采用了分布式设计。以提供比特币美元价格的服务为例,它聚合了31个独立的价格预言机来为用户提供数据。这种聚合器的设计允许多个链下预言机通过调用特定方法来提供价格数据,从而响应用户的请求。这些预言机通常是一些外部拥有账户(EOA),它们不仅可以为比特币/美元价格提供数据,还可能为其他货币对如以太坊/美元提供服务。链上合约在处理预言机提供的数据时,会进行一系列的验证步骤:1. 首先读取当前合约状态并进行初步检查。2. 进行必要的准备工作。3. 对每个签名数据进行验签,确保数据完整性和来源可靠性。4. 检查观察值的排序,并选取中位数作为最终结果。最后,合约会对得到的结果进行进一步的验证,比如与其他价格源进行比较,确保偏差在可接受范围内。一些平台还提供了更高级的聚合服务,如Feed Registry。这种服务聚合了多个价格预言机,使用户可以更方便地访问不同代币的价格数据,而无需单独设置每个价格源。在喂价机制方面,预言机网络通常采用多层数据聚合:1. 数据源聚合:从各大交易平台收集原始价格数据。2. 节点运营商聚合:每个节点从多个数据源获取并处理数据。3. 预言机网络聚合:多个节点的数据再次聚合得到最终结果。价格更新通常由两个因素触发:偏差阈值和心跳阈值。不同的价格预言机可能会有不同的参数设置。尽管这种设计提供了较高的安全性和便利性,但也存在一些局限性。由于价格更新机制的特点,数据更新可能会相对缓慢,从几分钟到几小时不等。因此,这类预言机服务主要适用于对价格实时性要求不高的应用场景。
分布式价格预言机:设计原理与实现机制解析
分布式价格预言机系统的设计与实现
为了解决单点故障问题,一些预言机服务采用了分布式设计。以提供比特币美元价格的服务为例,它聚合了31个独立的价格预言机来为用户提供数据。
这种聚合器的设计允许多个链下预言机通过调用特定方法来提供价格数据,从而响应用户的请求。这些预言机通常是一些外部拥有账户(EOA),它们不仅可以为比特币/美元价格提供数据,还可能为其他货币对如以太坊/美元提供服务。
链上合约在处理预言机提供的数据时,会进行一系列的验证步骤:
最后,合约会对得到的结果进行进一步的验证,比如与其他价格源进行比较,确保偏差在可接受范围内。
一些平台还提供了更高级的聚合服务,如Feed Registry。这种服务聚合了多个价格预言机,使用户可以更方便地访问不同代币的价格数据,而无需单独设置每个价格源。
在喂价机制方面,预言机网络通常采用多层数据聚合:
价格更新通常由两个因素触发:偏差阈值和心跳阈值。不同的价格预言机可能会有不同的参数设置。
尽管这种设计提供了较高的安全性和便利性,但也存在一些局限性。由于价格更新机制的特点,数据更新可能会相对缓慢,从几分钟到几小时不等。因此,这类预言机服务主要适用于对价格实时性要求不高的应用场景。