在「预言机篇」的前两期中,我们科普了Oracle的基本概念与运作模式,并介绍了在Neo3环境下,Oracle与智能合约的互通规则,以确保特定数据能够传输至链上世界。 第三讲中,我们将介绍在NeoVM中如何执行Oracle请求,并对结果达成共识,以及Neo3目前正考虑的协议、过滤器与响应机制。 执行Oracle请求 常规的Neo节点将协助处理Oracle事务,在收到一个事务请求后,它们只能对照已知的哈希列表审核事务哈希,并在其内存池中对其进行更新。但当Oracle节点接收到Oracle事务请求时,它可以将事务哈希添加到已知的哈希列表中,并对执行请求。 接收Oracle事务的运作逻辑 (来自于Neo Github) 当需要Oracle服务时,Oracle系统将输入URL和过滤器来发出指令。在NeoVM中,Oracle节点将执行Oracle Syscall,先检查是否有缓存结果。如果没有结果,Oracle节点将通过所给的URL下载内容,启动过滤器,最后缓存数据结果。 Oracle请求的执行逻辑 (来自于Neo Github) 此时,Oracle节点通过OracleAgreement机制完成了对缓存结果的共识确认。基于Oracle节点的共识,用户可以信任此结果。 Oracle共识 在Oracle网络中,共识是非常重要的部分。通过让多个节点都执行相同的审核,比较每个节点接收的响应,以确认最终结果的一致性,保障请求数据的可靠性。这旨在防止数据的篡改,并创建一个公开透明的信息环境,使开发者可以安心地引入链下数据以用于智能合约。 关于Oracle节点的共识机制,采用批准阈值是一种比较简便的方法。只有当对反馈数据的共识满足特定的数量/百分比,共识机制才会生效。当然,也可以添加其他共识规则。 如Neo核心开发者Belane提供的示例一样: 1. 至少有10个签名才能将Oracle反馈的数据放入已验证的内存池中。50%的Oracle节点认可,且反对的节点不超过10%,才算取得共识。 2. 至少有5个签名才能将Oracle反馈的数据放入已验证的内存池中。达成一致的Oracle节点数量必须是反对的两倍,且反对签名不超过10个,才算取得共识。 在当前的共识提案中,已建议将批准阈值纳入提议阶段。 例如,采用第一条共识规则。未验证的Oracle事务被发送到网络,通过天气监测API请求上海当前的温度。 如果9个Oracle节点调用API并认可了20度的气温数据,而1个节点返回19度的气温数据,则基于共识,20度是最终结果。9个节点中的每个节点都将为“ 20”签名,在有了足够数量的签名后,反馈数据可以移至已验证的池中并储存在区块中。 由于可以采用的规则有许多种,该共识过程的最终设计还在讨论中。例如,批准阈值可以是在Oracle策略中定义的固定值,或者每个智能合约都可以指定其自己的批准阈值。又或者,可以探索其他的共识过程。 关于Oracle节点的共识机制,采用批准阈值是一种比较简便的方法。只有当对反馈数据的共识满足特定的数量/百分比,共识机制才会生效。当然,也可以添加其他共识规则。 支持的协议、过滤器和响应 根据开发者的需求,Oracle请求可以采用不同的形式。需要访问不同的资源,并且在Oracle节点达成共识之前,需要标准化的响应和过滤器来优化结果。 Oracle服务需要支持的主要协议是HTTP(及其安全的对等HTTPS),这是基于互联网的数据交换标准。最初的实施将基于同时支持HTTP和HTTPS的情况下构建,但有关支持的方法还在讨论中。 Neo联合创始人及核心开发者张铮文认为,由于GET的简单性和对Oracle请求的适用性,因此仅应支持GET,但是由于其在REST API中的广泛使用,因此也建议支持POST。 另外,Oracle服务还能够处理关于NeoFS分布式存储网络的请求,从而使智能合约开发者能够访问链下数据。Github上也有关于NeoFS上的Oracle协议制定的讨论。
未来会探索对其他协议或方法的支持,由于当下解决方案的设计重点是简便性,因此暂时先不考虑较复杂的操作或自定义协议。 由核心开发者Shargon提出的过滤器概念,是对Oracle系统调用的扩展,旨在过滤掉不必要的数据响应。我们在「预言机篇」第二讲中也提到了,使用过滤器能够缓解链上的存储空间,并提高共识的确定性。 采用过滤器的一个问题是,对于同一个过滤器,每种语言都需要不同的实施方式,这可能导致不同软件的节点之间,在过滤后存在响应差异。 Igor Coelho提出了一个解决方案,建议将Oracle过滤器实施为智能合约。这将允许开发者创建用于调用的自定义过滤器,或将其重新设置为在Oracle系统之外使用。 对于最初的Oracle实施,以JSONPath标准过滤不必要的响应。而对于响应本身而言,请求API需提供响应反馈的数据格式。Neo核心开发者在Github上经过集中讨论后,建议用户应事先规范他们所期望的格式或Content-Type。 与过滤器实施相匹配,最初仅支持JSON响应,但是未来将陆续支持其他格式(如XML或HTML),以满足智能合约开发者的潜在需求。 在「预言机篇」第四讲中,我们将介绍Oracle在Neo3环境下的其他机制——去中心化与经济模型。 本文来源:Neo智能经济 —- 编译者/作者:Neo智能经济 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
预言机的共识原来是这样完成的 | 三分钟入门Neo3
2020-03-17 Neo智能经济 来源:火星财经
- 上一篇:破除央行禁令后,印度加密行业仍有三大险象环伺
- 下一篇:ETH注意短线压力的突破情况
LOADING...
相关阅读:
- 被老外称为 Uniswap 杀手,新版 Bancor 超越 Uniswap有多大可能?2020-08-04
- 比特币大跌后陷入震荡LINK再度崛起被高估了吗?2020-08-04
- DeFi镰刀高高举起,来看看预言机DIA的刀2020-08-04
- 币神社区浅析预言机(Oracle)系统2020-08-03
- 昨天5秒爆仓20万的故事主人公||Defibox挖矿以外套利方案分享&简单了解2020-08-03