去中心化的 oracles
上面概况的机制都描述了依赖于可信任权威的集中式oracle系统。虽然它们应该足以满足许多应用,但它们确实代表了以太坊网络中的中心故障点。已经提出了许多围绕去中心化oracle作为确保数据可用性手段的方案,以及利用链上数据聚合系统创建独立数据提供者网络。
ChainLink [10]提出了一个去中心化oracle网络,包括三个关键的智能合约:信誉合约,订单匹配合约,汇总合约和数据提供商的脱链注册。信誉合约用于跟踪数据提供商的绩效。声誉合约中的分数用于填充离线注册表。订单匹配合约使用信誉合约从oracles中选择出价。然后,它最终确定服务级别协议(SLA),其中包括查询参数和所需的oracles数量。这意味着购买者无需直接与个别的oracles交易。聚合合约从多个oracles收集使用提交/显示方案提交的响应,计算查询的最终集合结果,
这种去中心化方法的主要挑战之一是汇总函数的制定。ChainLink建议计算加权响应,允许为每个oracle响应报告有效性分数。在这里检测“无效”分数是非常重要的,因为它依赖于前提:由对等体提供的响应偏差测量的外围数据点是不正确的。基于响应分布中的oracle响应的位置来计算有效性分数可能会使正确答案超过普通答案。因此,ChainLink提供了一组标准的聚合合约,但也允许指定自定义的聚合合约。
一个相关的想法是SchellingCoin协议[11]。在这里,多个参与者报告价值,并将中位数作为“正确”答案。报告者必须提供重新分配的存款,以支持更接近中位数的价值,从而激励报告与其他价值相似的价值。一个共同的价值,也称为Schelling Point,受访者可能认为这是一个自然而明显的协调目标,预计将接近实际价值。
Teutsch最近提出了一种新的去中心化脱链数据可用性设计oracle [12]。该设计利用专用的工作证明区块链,该区块链能够正确地报告在给定时期内的注册数据是否可用。矿工尝试下载,存储和传播所有当前注册的数据,因此保证数据在本地可用。虽然这样的系统在每个挖掘节点存储和传播所有注册数据的意义上是昂贵的,但是系统允许通过在注册周期结束之后释放数据来重用存储。