### 分布式价格预言机系统的设计与实现为了解决单点故障问题,某知名预言机平台采用了分布式价格预言机的设计方案。以提供BTC美元价格服务为例,该系统聚合了31个独立的价格预言机来为用户提供可靠的价格数据。这种聚合器设计的核心在于其智能合约。通过调用合约中的transmitters方法,我们可以查看该聚合器包含的所有链下预言机。每个链下预言机都是一个外部拥有账户(EOA),它们不仅可以为BTC/USD聚合器提供价格数据,还可能同时为其他货币对(如ETH/USD)的聚合器服务。当用户请求价格数据时,链下预言机通过调用transmit方法来响应聚合器中的请求。这个过程涉及多个步骤:1. 首先,系统会读取当前合约状态并进行一系列安全检查。2. 通过安全检查后,系统开始进行必要的准备工作。3. 接下来,对每一个签名数据进行验证,确保签名的有效性和唯一性,同时检查签名者的角色权限。4. 最后,系统会对观察值进行排序,选取中位数作为最终结果,并确保该结果不超出预设阈值。为了进一步提高数据的可靠性,系统还会对最终结果进行额外的验证。例如,某些应用场景下,会将结果与其他独立预言机系统的数据进行比对,确保价格偏差在可接受范围内。### 预言机注册表的应用为了简化接入流程并降低治理成本,该平台引入了预言机注册表(Feed Registry)概念。这是一个更高级的聚合器,集成了多个价格预言机。使用注册表后,开发者无需手动设置每个代币的价格预言机,可以直接通过注册表读取所需的价格数据。### 多层级数据聚合机制该平台的价格数据通过三个层级的聚合来保证其准确性和可靠性:1. 数据源聚合:从各大中心化和去中心化交易平台收集原始价格数据。2. 节点运营商聚合:每个节点运营商从多个独立的数据聚合服务商获取价格数据,并进行中值计算。3. 预言机网络聚合:整个网络层面的聚合,通常采用中值法,当响应节点数达到预设阈值时触发。值得注意的是,并非每次数据更新都会立即同步到区块链上。系统设置了两个触发参数:偏差阈值和心跳阈值。只有满足其中之一,才会进行链上更新。这种机制虽然保证了数据的稳定性,但也导致价格更新速度相对较慢,可能从几分钟到24小时不等。因此,这种预言机系统更适合对价格实时性要求不高的应用场景。
分布式预言机如何保障价格数据可靠性
分布式价格预言机系统的设计与实现
为了解决单点故障问题,某知名预言机平台采用了分布式价格预言机的设计方案。以提供BTC美元价格服务为例,该系统聚合了31个独立的价格预言机来为用户提供可靠的价格数据。
这种聚合器设计的核心在于其智能合约。通过调用合约中的transmitters方法,我们可以查看该聚合器包含的所有链下预言机。每个链下预言机都是一个外部拥有账户(EOA),它们不仅可以为BTC/USD聚合器提供价格数据,还可能同时为其他货币对(如ETH/USD)的聚合器服务。
当用户请求价格数据时,链下预言机通过调用transmit方法来响应聚合器中的请求。这个过程涉及多个步骤:
首先,系统会读取当前合约状态并进行一系列安全检查。
通过安全检查后,系统开始进行必要的准备工作。
接下来,对每一个签名数据进行验证,确保签名的有效性和唯一性,同时检查签名者的角色权限。
最后,系统会对观察值进行排序,选取中位数作为最终结果,并确保该结果不超出预设阈值。
为了进一步提高数据的可靠性,系统还会对最终结果进行额外的验证。例如,某些应用场景下,会将结果与其他独立预言机系统的数据进行比对,确保价格偏差在可接受范围内。
预言机注册表的应用
为了简化接入流程并降低治理成本,该平台引入了预言机注册表(Feed Registry)概念。这是一个更高级的聚合器,集成了多个价格预言机。使用注册表后,开发者无需手动设置每个代币的价格预言机,可以直接通过注册表读取所需的价格数据。
多层级数据聚合机制
该平台的价格数据通过三个层级的聚合来保证其准确性和可靠性:
数据源聚合:从各大中心化和去中心化交易平台收集原始价格数据。
节点运营商聚合:每个节点运营商从多个独立的数据聚合服务商获取价格数据,并进行中值计算。
预言机网络聚合:整个网络层面的聚合,通常采用中值法,当响应节点数达到预设阈值时触发。
值得注意的是,并非每次数据更新都会立即同步到区块链上。系统设置了两个触发参数:偏差阈值和心跳阈值。只有满足其中之一,才会进行链上更新。这种机制虽然保证了数据的稳定性,但也导致价格更新速度相对较慢,可能从几分钟到24小时不等。因此,这种预言机系统更适合对价格实时性要求不高的应用场景。