本文摘要:在「应验机篇」的前两期中,我们科普了Oracle的基本概念与运作模式,并讲解了在Neo3环境下,Oracle与智能合约的互通规则,以保证特定数据需要传输至链上世界。
在「应验机篇」的前两期中,我们科普了Oracle的基本概念与运作模式,并讲解了在Neo3环境下,Oracle与智能合约的互通规则,以保证特定数据需要传输至链上世界。第三谈中,我们将讲解在NeoVM中如何继续执行Oracle催促,并对结果达成协议共识,以及Neo3目前于是以考虑到的协议、过滤器与号召机制。继续执行Oracle催促常规的Neo节点将帮助处置Oracle事务,在接到一个事务催促后,它们不能对照未知的哈希列表审查事务哈希,并在其内存池中对其展开改版。但当Oracle节点接管到Oracle事务催促时,它可以将事务哈希加到到未知的哈希列表中,并对继续执行催促。
当必须Oracle服务时,Oracle系统将输出URL和过滤器来收到指令。在NeoVM中,Oracle节点将继续执行Oracle Syscall,再行检查否有内存结果。如果没结果,Oracle节点将通过所给的URLiTunes内容,启动过滤器,最后缓存数据结果。此时,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协议制订的辩论。
- Github 辩论地址 -https://github.com/neo-project/neo/issues/1270未来不会探寻对其他协议或方法的反对,由于当下解决方案的设计重点是简便性,因此继续再行不考虑到较简单的操作者或自定义协议。由核心开发者Shargon明确提出的过滤器概念,是对Oracle系统调用的拓展,目的过滤器掉不必要的数据号召。我们在「应验机篇」第二谈中也提及了,用于过滤器需要减轻链上的存储空间,并提升共识的确定性。
使用过滤器的一个问题是,对于同一个过滤器,每种语言都必须有所不同的实行方式,这有可能造成有所不同软件的节点之间,在过滤器后不存在号召差异。Igor Coelho明确提出了一个解决方案,建议将Oracle过滤器实行为智能合约。
这将容许开发者创立用作调用的自定义过滤器,或将其新的设置为在Oracle系统之外用于。对于最初的Oracle实行,以JSONPath标准过滤器不必要的号召。而对于号召本身而言,催促API须要获取号召对系统的数据格式。Neo核心开发者在Github上经过集中于辩论后,建议用户不应事前规范他们所希望的格式或Content-Type。
与过滤器实行相匹配,最初仅有反对JSON号召,但是未来将相继反对其他格式(如XML或HTML),以符合智能合约开发者的潜在市场需求。在「应验机篇」第四谈中,我们将讲解Oracle在Neo3环境下的其他机制——去中心化与经济模型。
本文来源:jbo竞博-www.jfask.com