预言机——区块链和真实世界的“交互”

什么是预言机?

预言机(Oracle)是为区块链智能合约提供外部数据源的一类智能合约系统简称,以太坊之前区块链只支持简单的转账脚本,比如比特币转账,直到以太坊智能合约出现,开始支持图灵完备编程,复杂业务逻辑可以通过智能合约代码在虚拟机中执行。以太坊实现了区块链应用从加密货币到加密商业的升级,才有各种区块链重构商业的可能性。

预言机的运行机制:当区块链上的某个智能合约有数据交互需求时,预言机在接收到需求后,帮助智能合约在链外收集外界数据,验证后再将获取的数据反馈回链上的智能合约。预言机本身也可能包含一个Oraclize的智能合约。


预言机——区块链和真实世界的“交互”_第1张图片

智能合约是自动化的编程脚本,虽然智能合约具备高效、无人工干预、低运行成本等优点,但智能合约并不能自动捕捉所需要的数据,而是需要外部刺激源提供才能执行合约中的代码,智能合约可以被其他应用调用或者自身调用其他智能合约,前提是数据参数传递通道正常。随着区块链进入商业应用探索阶段,各种围绕上链的主题比如数据上链、资产上链、身份上链等等,背后核心都离不开智能合约的作用,区块链提供的是底层账本基础设施,智能合约则满足更复杂的上层应用和业务需求。

为什么需要预言机?

智能合约代码需要在EVM虚拟机环境中执行,EVM相当于区块链“沙盒”,EVM和智能合约没有内在的随机性来源,因为智能合约要求执行结果具有确定性,不确定性给整个区块链网络带来的是灾难,不仅是网络资源长时间占用,更有可能引发资产损失连锁效应风险。随机是EVM和智能合约抗拒的东西,因为将导致网络上众多节点运行状态不一致而达不成共识。

预言机——区块链和真实世界的“交互”_第2张图片

 

预言机提供一种无须信任的方式提供外在的信息,在智能合约和外在真实世界之间架一副桥梁,比如提供足球比赛的结果,天气数据,资产价格甚至某些特定的数据源如个人ID。预言机提供的外部信息源是否可信是非常关键的,不信任的数据来源、缺乏验证的客观事实不能随意去提供给智能合约,否则写入到区块链账本也无法验伪。

预言机——区块链和真实世界的“交互”_第3张图片

预言机提供的主要数据源形式包括——

随机数据:彩票号码

自然灾害数据:地震震级、台风级别

金融数据:汇率、利率、证券价格、黄金价格、虚拟货币价格

天气、事件(体育、选举)、定位数据、统计数据

预言机如何读取和验证数据?

所有预言机至少需要具有链外收集数据源数据、签名数据上链、数据写入智能合约等核心功能,一旦数据在智能合约的存储中可用,其他智能合约就可以通过调用预言机智能合约的“检索”功能来访问它。


预言机——区块链和真实世界的“交互”_第4张图片

预言机获取数据的方式有请求响应、订阅和读取三种主要方式,立即读取预言机例子包括权威组织发布数据(例如学术证明、机构会员资格、ID等),这种类型的预言机一旦将数据存储在其合约存储中,其他智能合约就可以使用对预言机合约的请求调用来查找。注意预言机存储的数据可能不是预言机正在服务的原始数据,出于效率或隐私原因,存储的可能数据的哈希值就足够。同样,敏感隐私信息的细节也需要保密,通过Merkle树结构将根哈希存储在智能合约的存储中将是组织预言机数据服务的有效方式。

预言机——区块链和真实世界的“交互”_第5张图片

预言机发布与订阅,在这种预言机中,数据可能会动态变化,预言机需要对预期改变的数据提供广播服务,预言机要么由链上的智能合约轮询,要么由链下程序监视和更新,类似RSS订阅模式,预言机更新数据,并标记新数据可供“订阅”。这样的预言机例子包括价格反馈与发送、天气信息、经济或社会统计、交通数据等。这种模式在某些方面甚至可以被视为“推送”服务。但是在区块链上如果轮询通过智能合约完成的则可能产生大量的gas支出。

  

预言机——区块链和真实世界的“交互”_第6张图片

请求/响应预言机最复杂,涉及数据空间太大而无法存储在智能合约中的情况,并且用户每次只需要整个数据集的一小部分。来自dApp的数据请求通常是涉及许多步骤的异步过程:1.接收来自DApp的查询。2.解析查询。3.检查是否提供了付款和数据访问权限。4.从链外数据源检索相关数据(并在必要时加密)。5.使用包含的数据对事务进行签名。6.将事务广播到网络。7.安排任何进一步必要的交易。虽然这是一种有用的消息传递模式,允许应用程序进行双向对话,但在某些情况下这可能是不合适的。例如,在请求与响应模式下,需要预言机利率的智能债券可能必须每天请求数据,以确保利率始终是正确的。鉴于利率不经常变化,发布与订阅模式可能更合适这种情况,尤其是考虑到以太坊的有限带宽。


预言机收集到链外数据源后,如何保证数据在传输过程中被篡改在链外证明数据的完整性是非常关键的。两种常见的数据认证方法是真实性证明(authenticity proof)以及可信执行环境(Trusted Execution Environment,TEE)


真实性证明是用密码学手段证明数据没有被篡改过,一般基于许多证明技术(例如,数字签名证明),智能合约可以在使用数据前验证数据的完整性。Oraclize就是一个利用多种真实性证明的预言机服务的例子。现在以太坊主网查询数据时可以使用TLSNotary Proof。TLSNotary Proof允许客户端向第三方提交证据,TLSNotary Proof依赖于TLSNotary签名方案,利用了传输层安全协议(Transport Layer Security,TLS),这让TLS可以掌控密钥,在获取数据后给数据签名,并将数据分配给三方:服务器(预言机)、受审单位(Oraclize)以及审计方。Oraclize使用亚马逊网络服务器(AWS)虚拟机实例作为审计方,可以验证自实例化以来它没有被修改过。这一AWS实例存储着TLSNotary密文,密文让它可以提供诚实性证明。虽然这套方案在数据篡改上提供高安全保证,但Oraclize服务是就假设亚马逊不会篡改虚拟机实例。


预言机——区块链和真实世界的“交互”_第7张图片

基于可信执行环境TEE的验证数据馈送预言机系统,是采用基于硬件的安全区(security enclave)来验证数据完整性,比如使用Intel的SGX(Software Guard eXtensions)和ARM的Trustzone, 来保证对HTTPS查询的响应可以被验证为可信的。在与主CPU隔离的安全区中运行预言机的“请求/响应”机制可以认为是在可信安全,保证所请求的数据不受篡改地返回。


预言机——区块链和真实世界的“交互”_第8张图片

预言机有哪些种类?

软件Oracle:第三方服务商app或者Web的数据,提供智能合约输入数据接口API。

  随机数生成器软件也是一类重要的预言机,在游戏、预测类中应用非常广泛。

 硬件Oracle:物联网传感器、RFID数据采集器。

  去中心化Oracle

中心化的预言机系统需要依赖可信的信息权威。存在单点故障问题,围绕去中心化预言机,寻找数据的多种信息源保证数据可得性,通过分布式共识机制创建数据提供者网络。

Chainink和DOS Network是ETH、EOS区块链分布式oracle的主要践行代表项目。


预言机——区块链和真实世界的“交互”_第9张图片

ChainLink基于ETH提出一种去中心化预言机网络,由三个关键智能合约(声誉合约、订单匹配合约、数据汇总合约)以及数据提供者的链外注册表组成。声誉合约用来跟踪数据提供者的表现。声誉合约中的分数会更新到链外注册表中。订单匹配合约会从使用声誉合约的预言机中选择竞标者,并最终确定服务层级要约(Service Level Agreement,SLA),其中包含了查询参数和要求的预言机数量。这也意味着数据购买者不会直接与个体预言机交易。数据汇总合约会从多个预言机处收集响应(使用“commit-reveal”模式提交),计算查询的最终总结果,然后将结果反馈回声誉合约。

DOS Network是一个提供去中心化的预言机服务的网络。Dos Network在链上监测用户数据请求,链下监控和接收数据请求,再通过链下随机选一组节点来提供数据,一旦收集来的数据通过组内51%节点共识被视为“正确答案”,最后链下再将获取的答案反馈给链上信息请求方。DOS 设立一个对于诚实节点的奖励机制:除了给节点的数据处理费,30%总供应量的虚拟采矿奖励,持续十年。DOS Network在性能上可支持多条链,且数据结果接近实时,同时DOS Network分片的网络结构设计,可以并行处理请求,达到高性能和可扩展性。帮助扩展智能合约的处理能力和应用场景的二层(layer 2)网络解决方案。

预言机的趋势与意义

    预言机为将外部事实带入合约执行,如果预言机受信任的来源受到损害将导致它们提供的智能合约的执行受损。考虑使用预言机时要非常小心信任机制,信任预言机可以将你的智能合约暴露给潜在的错误输入对合约本身安全性造成破坏风险,去中心化的预言机可以解决其中一些问题,但并不是全部,预言机是真实世界通往区块链的桥梁。

信息源的权威可信是预言机市场发展的核心要素,应尽可能降低对单一源的依赖而选择多重数据源。中心化Oracle架构方案的简单实用性和去中心化Oracle架构方案的安全可靠性未来有可能进一步融合。

区块链是信任机器,但随着智能合约的出现,区块链触角以及延申至现实世界,如何确保真实应用上链后的还是可信的,预言机就是关键环节,怎么让区块链在真实应用中还能发挥“信任机器”的价值,预言机是绕不开的功能。

你可能感兴趣的:(预言机——区块链和真实世界的“交互”)