区块链技术博客
www.b2bchain.cn

区块链技术区块链的触角:详解预言机功能架构与技术现状

第20249篇区块链技术文章区块链技术区块链的触角:详解预言机功能架构与技术现状

甲骨文作为区块链延伸的天线,在内外链之间架起了一座可信的桥梁,构建了一个相互融合的价值生态

原题:甲骨文-区块链的天线
作者:李世静,开心链科技基础平台部产品总监,在保险、金融、随机预测、物联网等场景中,甲骨文展示了其在区块链中不可替代的价值:作为区块链延伸的天线,在链内外搭建了一座可靠的桥梁,本文介绍了甲骨文的起源、定义、原理和发展,从甲骨文的功能上讲,甲骨文充满了历史和神话色彩。这与甲骨文无关。它起源于古希腊神话中“神谕”的角色。甲骨文能够与奥林匹斯山上的众神沟通,预测未来,并将上帝的旨意传达给为未来祈祷的人们,因此,甲骨文首先有了“先知”的含义;在计算复杂性和可计算性理论中,Oracle机器是一种抽象的计算机,用于研究确定性问题。它可以被看作是一个图灵机器与一个黑匣子(先知)连接。黑匣子的功能是在单个操作中解决特定问题。根据给定的预测值,预测者可以给出“是”或“否”或确定的计算决策结果

相信大家已经看到,在不同的场景下,预言者会做同样的事情:在未来的某个时间给某个系统一定的输入。区块链中的甲骨文也不例外,甚至可以说是天作之合。它的作用正好解决了区块链中的一个大痛点:外部数据源的输入确定性图1:Oracle的各种含义为什么区块链如此关心分布式系统中外部输入的确定性,要保证多个节点最终执行结果的一致性,从而保证系统的稳定运行。随机数、实时数据和其他操作的风险极大,因此区块链牺牲了获取外部动态数据的需要,这将导致不一致的执行结果,并将自己变成一个封闭的、确定性的沙盒环境,链上的数据是被动获取的(以交易的形式输入),区块链在运行智能合约的过程中无法从外部请求中获取新的数据,只能在现有数据的基础上以确定性的方式生成新的数据,区块链上的智能合约或去中心化应用(DAPP)对外部数据交互有着强烈的需求,这与智能合约的执行环境相冲突,oracle就是为了解决这一矛盾而诞生的,它一经推出就无法接收。通过Oracle中间件,智能合约可以主动获取外部数据,其触角可以延伸到传统业务系统、公共网站、物联网设备、离线计算、连锁互操作等领域。它做了很多以前做不到的事情:获取传统业务数据调用开放网站信息、物流快递跟踪、保险自动赔付、获取其他连锁信息。。。从此开启了想象之门

听起来甲骨文什么都不是,只是一种中间件,调用外部数据,然后将数据返回到区块链,但是理想很简单,现实很骨感,如果你仔细想想,您会发现在使用过程中有几个难点:

从神谕、图灵机角度看预言机

针对以上问题,我们将根据区块链平台Oracle架构流程图进行说明

区块链的触角:详解预言机功能架构与技术现状图2:Oracle架构模型图

首先,Oracle通常作为一个独立的模块或区块链的第三方服务与执行引擎进行交互。甲骨文只负责数据的可靠获取,不直接参与交易的执行。首先,用户以契约调用的形式发起oracle的服务请求(也可以通过特殊API接口服务等其他方式发起oracle的服务请求)。通过调用内置的契约接口(图中的Oracle服务接口),用户告诉区块链执行引擎用户想要执行包含Oracle服务的事务;其次,执行引擎在执行期间检测到对Oracle的服务请求,并通过内部通信组件转发给Oracle模块。此请求将封装请求的外部数据源的一些信息,例如web数据请求,它将包含公共URL、HTTP头和其他信息

区块链预言机中间件解读

第三,Oracle在接收到服务请求后,向外部数据源发送数据采集请求,在获取数据后,它使用事务生成器生成一个新的内部回调事务并对其进行签名(这个过程将使用硬件技术,例如tee,以确保安全性和不被篡夺的更改)

最后,Oracle将回调事务发送到执行引擎,以执行一系列操作,例如组织,对获取的数据进行管理和存储,从而结束一个完整的Oracle服务区块链交易执行过程

根据上述生命周期过程,我们将逐一讨论第一个问题:

这是Oracle使用过程中的核心问题。答案是没有绝对的公信力,只有相对的公信力。在设计过程中,我们主要对数据源认证、数据采集标准流程、数据格式统一等方面进行了限制:

预言机功能架构解读

Oracle通过两个阶段对正在进行的数据进行可靠的保障

  • 如何保证获取的外部数据源真实可信?
  • 如何保证数据在传输和处理过程中的安全?
  • 时效性、成本 …?

链外数据交互处理将增加数据源的可信度,Oracle的可信性,以及与链内数据交互处理相比的处理复杂性。然而,真实场景中的可信度差异严重影响了oracle的实现效率和成本。在公共链中,默认的多方是完全不可信的,因此聚合处理、共识规则、奖惩机制和信誉体系将通过多预言模型来实现,增加了邪恶的成本,这无疑增加了功能实现的复杂性;在联盟链场景中,甲骨文使用场景相对可靠且封闭,机构节点之间可信度较高。单Oracle实现效率高、成本低,但存在单点邪恶的问题。因此,要因地制宜,根据具体情况选择最合适的实施方式,目前市场上的甲骨文主要有两种:集中甲骨文和分散甲骨文,集中式甲骨文需要引入第三方可信组织,如国家或大型企业可以提供背书,验证方法也是通过第三方独立验证

以甲骨文项目为例,作为集中式甲骨文,它通过TLS(Transport Layer Security)协议实现Web数据的可靠传输,并与Intel SGX(Intel Software guard extension)相结合,保证数据在本地不被篡改。Oracle为用户提供了API接口,用户只需调用预先设计好的合同接口就可以使用Oracle服务获取外部数据,由于Oracle是一个集中式的Oracle,作为一个独立的单点模块,本实现具有高性能的优势,但也存在单点失效、难以扩展的风险,集中化的思想与区块链分散化的思想背道而驰蚂蚁链等大多由集中化的甲骨文来实现,分散化的甲骨文遵循与区块链相同的分散化原则,通常采用多重签名或分布式算法来保证数据的正确性和一致性。它不需要引入第三方组织,但实施起来会更加困难,性能会成为瓶颈

以chainlink为例,它建立了一个分散的数据网络,每个Oracle都是网络中的一个节点,其体系结构分为链上组件和链下组件。链上的组件负责与用户交互,收集和响应用户请求,而链下的组件是前面提到的数据网络,用于处理数据采集和传输在这个架构中,chainlink是一个分布式数据网络,从而避免了单点失效的问题。但是,由于分布式数据一致性需求的增加,其性能和实现难度成为新的问题

相比之下,集中式Oracle负责单机数据采集,需要引入第三方可信组织,而分散式Oracle是多机并行的,通过相互验证来保证一致性。因此,集中式Oracle适用于实时性要求高、可靠性高的场景,用户体验好;去中心化的oracle则恰恰相反,从功能上看,oracle的功能比较纯粹,主要解决信任问题

再次,预言机在收到服务请求后,向外部数据源发起数据获取请求,拿到数据后利用交易生成器产生一笔新的内部回调交易,并对其进行签名(这一过程会使用 TEE 等硬件技术保障安全及不可篡改)。

最后,预言机将这笔回调交易发向执行引擎,执行对获取到的数据组织、管理、存储等一系列操作,至此一个完整的含预言机服务的区块链交易执行流程结束。

根据上述的生命周期流程,我们对开头的问题进行一一探讨:

如何保证获取的外部数据源真实可信

这是预言机使用过程中最核心的问题,回答是没有绝对可信,只能做到相对可信。我们在设计过程中主要在数据源认证、数据获取标准流程、数据格式统一等方面进行约束:

  • 数据源选取和可信认证。预言机需要谨慎选择外部数据源,必须保证对每个选取的外部数据源,都可以验证其是可信的,如对于 Web 的数据获取,选取的数据源需持有证书。
  • 数据获取标准流程。开发者必须明确执行引擎、用户、外部数据源与预言机的数据交换流程,且对于不同的数据源类型要能够统一或明确区分数据的交互流程,确保交互方案可执行可落地。
  • 数据交互格式的统一定义。不同的数据源类型有不同的数据交互格式,以传感器作为数据源和以 Web 作为数据源获取到的数据格式是不一样的,针对不同情况,明确统一的数据编解码层,以对不同数据源的数据进行请求和解释。

如何保证数据在传输和处理过程中的安全

预言机通过两个阶段对进行中的数据实现可靠保证。

  • 数据从网上到本地,采用 HTTPS 协议(底层采用 TLS 协议)去保障连接和数据的正确性、完整性。
  • 数据从本地到链上,预言机采用可信执行环境 ( TEE ) 技术,TEE 是 CPU 内一块安全区域,和操作系统独立运行,可以确保数据处理过程中的机密性、可靠性,趣链区块链平台研发了基于 SGX 的 TEE 实现以及基于国产芯片的 TEE 实现,进行预言机的安全保护。

时效性、成本等

链外的数据交互处理相对于链内来说,在数据源可信度、预言机可信度、处理复杂度等方面都会增加,而真实场景中可信度的不同,严重影响着预言机的实现效率以及实现成本。在公有链中,默认多方完全不可信,所以会通过多预言机模型实现聚合处理、共识规则、奖惩机制及声望系统,以达到提高作恶成本的作用,这无疑增加了功能实现的复杂度;在联盟链场景中,预言机使用场景相对可信封闭,且机构节点间可信度高,单预言机实现效率高、成本低,但存在单点作恶的问题,所以各位在使用过程中应该因地制宜,根据场景具体选择最适合的实现方式。

技术现状解读

现在市面上预言机的分类主要为中心化预言机和去中心化预言机两种。

中心化预言机

中心化预言机因其中心化的思想,需要引入第三方可信机构,如国家或能提供背书的大型企业,验证方式也是通过第三方独立验证。

以预言机项目 Oraclize 为例,作为一个中心化预言机,通过 TLS (Transport Layer Security,传输层安全)协议实现 Web 数据的可靠传输,并结合 Intel SGX (Intel Software Guard Extension)确保数据在本地不可篡改,Oraclize 给用户提供了 API 接口,用户只需要调用预先设计好的合约接口,就可以使用预言机服务获取外部数据。

由于 Oraclize 是中心化预言机,作为一个独立的单点模块,这样的实现具有高性能的优势,但同样也有单点故障、难以拓展的风险,且中心化的思想与区块链的去中心化理念有一些背道而驰,国内主流联盟链趣链区块链平台、蚂蚁链等大都采用中心化预言机的实现方式。

去中心化预言机

去中心化预言机秉持着与区块链相同的去中心化原则,通常使用多重签名或分布式算法保证数据的正确性、一致性,不需要引入第三方机构,但在实现上会更困难,性能也会成为瓶颈。

以 Chainlink 为例,它建立了一个去中心化的数据网络,每个预言机都是网络中的一个节点,其架构分为链上组件和链下组件。链上组件负责和用户交互,收集、响应用户请求,而链下组件则是之前提到的数据网络,用于处理数据获取和传输。

在这个架构中,由于 Chainlink 是一个分布式的数据网络,所以可以避免单点故障的问题,但同样地,因为增加了分布式的数据一致性需求,其性能和实现难度成为了新的难题。

对比来看,中心化预言机由单机负责数据获取,需要引入第三方可信机构,而去中心化预言机则是多机并行,通过互相验证保证一致性。因此中心化预言机适用于对实时性要求高、可信度高的场景,用户体验较好;而去中心化预言机则相反。

总结

从功能角度来看,预言机的功能比较纯粹,主要解决区块链内外数据可信连通问题。针对不同的信任场景,预言机也采取了中心化和非中心化的两种方式提供服务。

从应用场景来看,链外数据是一个很大的生态,预言机可以应用在公开网站信息、物流追踪、保险自动赔付、获取跨链信息等多场景。预言机的发展一方面依赖于区块链 / 智能合约技术的发展,一方面又助力区块链 / 智能合约的业务延伸,随着区块链在金融、保险、物联网等行业生态规模的扩大,预言机未来的生态价值也很值得期待。

从商业角度来看,预言机模式其实类似一个数据服务提供商,中心化预言机的商业模式本质上是一个数据服务平台,而去中心化预言机是一个多元的数据服务生态,两者发展方向各有千秋。

参考文献

预言机

《央行 2018 年第 4 号 区块链能做什么、不能做什么?》

区块链技术区块链的触角:详解预言机功能架构与技术现状 由www.b2bchain.cn 提供
文章整理自网络,只为个人学习与分享使用
链接地址https://www.b2bchain.cn/20249.html

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 区块链技术区块链的触角:详解预言机功能架构与技术现状
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们