星期三, 12月 9, 2020
  • 登录
海潮科技
海潮财经
No Result
View All Result
  • 首页
  • 快讯
  • 业界
  • 观点
  • 内参
  • 矿业
  • 操盘
  • 大会
  • 首页
  • 快讯
  • 业界
  • 观点
  • 内参
  • 矿业
  • 操盘
  • 大会
No Result
View All Result
海潮财经
No Result
View All Result
Home 业界

预言机的共识原来是这样完成的 | 三分钟入门Neo3

by Neo智能经济
2020年3月28日
in 业界
Reading Time: 2min read
0

在「预言机篇」的前两期中,我们科普了Oracle的基本概念与运作模式,并介绍了在Neo3环境下,Oracle与智能合约的互通规则,以确保特定数据能够传输至链上世界。

预言机的共识原来是这样完成的 | 三分钟入门Neo3插图

第三讲中,我们将介绍在NeoVM中如何执行Oracle请求,并对结果达成共识,以及Neo3目前正考虑的协议、过滤器与响应机制。

执行Oracle请求

常规的Neo节点将协助处理Oracle事务,在收到一个事务请求后,它们只能对照已知的哈希列表审核事务哈希,并在其内存池中对其进行更新。但当Oracle节点接收到Oracle事务请求时,它可以将事务哈希添加到已知的哈希列表中,并对执行请求。

预言机的共识原来是这样完成的 | 三分钟入门Neo3插图1

当需要Oracle服务时,Oracle系统将输入URL和过滤器来发出指令。在NeoVM中,Oracle节点将执行Oracle Syscall,先检查是否有缓存结果。如果没有结果,Oracle节点将通过所给的URL下载内容,启动过滤器,最后缓存数据结果。

预言机的共识原来是这样完成的 | 三分钟入门Neo3插图2

此时,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环境下的其他机制——去中心化与经济模型。

Tags: NeoOracle预言机

相关文章

如何成为Eth2 Medalla测试网验证者

2020年12月9日

微众银行区块链范瑞彬:区块链是数据交换的重要技术支撑

2020年12月9日

SushiSwap的转折点

2020年12月9日

如何使用ONTO参与Flash Pool挖矿

2020年12月9日

黑客导致阿根廷边境口岸一度瘫痪,要求400万美元BTC赎金

2020年12月9日

Filecoin太空竞赛将进入终极挑战,这些问题你要搞懂

2020年12月9日
Next Post

调整比特币单位或会成为开启牛市的钥匙

发表评论 取消回复

电子邮件地址不会被公开。 必填项已用*标注

币安赵长鹏:最富有的流浪者

3月 ago

玩币只为盈利,想要盈利必须先提高自己!

3月 ago

TokenInsight: 第51周 DApp 影响力排行榜

3月 ago

引谈 | 用简单的方式向应用程序添加身份验证

3月 ago

OK战将徐坤,从行业格局到企业战略的一系列思考

3月 ago
  • 人气文章排行榜
  • 年度归档
  • 热门标签
海潮财经 haicoin.pro

© 2020 海潮财经 - 海潮涟漪网络科技 & theme by Jegtheme.

No Result
View All Result
  • Home

© 2020 海潮财经 - 海潮涟漪网络科技 & theme by Jegtheme.

Welcome Back!

Login to your account below

Forgotten Password?

Create New Account!

Fill the forms below to register

All fields are required. Log In

Retrieve your password

Please enter your username or email address to reset your password.

Log In