区块链去中心化账本和智能合约为当今社会解决了P2P交互的信任问题,不再需要任何中心化机构做背书,这是人类社会进步的重大革新。但是智能合约目前无法从外部直接获取链外信息,使得它只能孤立、封闭在特定的环境中执行任务,断开了与外界的互联互通。
然而,区块链也需要处理数据,这是任何系统都要做的工作。但是目前区块链数据来源只有两种,一种是本身就在链上的;一种是在链外的。比如任何数字货币的发行数量就是其链上数据,而每一枚货币的价格就是链外数据。那么,区块链如何获取链外数据呢?
预言机(Oracle)的出现旨在为解决区块链上述问题,作为智能合约与现实世界的互通桥梁,为区块链打开了通往外界的康庄大道。
如此看来,预言机还是至关重要的,如果没有它区块链数据可能也就受限于链上资产范围了,很显然这不是我们对区块链技术的期待。
不难发现,互联网数据来源恰好与区块链相反。但互联网数据几乎是从外部获取,从结构而言,互联网属于中心化结构,用户既然选择了这样的中心化机构,那就得信任这种机构提供的数据,而数据是由中心化服务器来完成。当然,用户也可以不信任。区块链的应用出于对共识的需求,必须要通过预言机来读入一个与链上数据一致的数据,实际上,任何链上应用都可以给自己写一个预言机作为链外数据接口。而关键问题就是用户是否认可这个预言机所提供的数据。
区块链是一个去中心化的分布式结构,致力于打造可信任的共识机制系统。这样一来,中心化机构就完全无法利用用户对信任需求建立起垄断的高墙,然后在墙内肆意妄为。
通过预言机上链并不难,简单的数据读写操作就能把链下数据传到链上,但是信任问题却很难,需要预言机通过技术和共识机制的设计,使自己提供的数据能够满足用户对信任的需求。
因此,从功能上看,预言机确实是在解决数据交互问题,但其本质是需要解决信任,唯有信任解决了预言机真正的利用价值也就得以体现了,区块链实质性问题也就解决了。
01
什么是预言机
在计算机领域,预言机是一种抽象电脑,又称谕示机。预言机具备图灵机的一切功能,并额外拥有一种能力:可以不通过计算直接得到某些问题的答案,这个过程叫做Oracle(神谕)。也就是说,预言机可以解决图灵机通过计算也无法解决的问题,比如从外界获取问题的答案。
举一个例子,有一个天气预报预警的DApp,用户可以通过链上智能合约进行天气预报的查询。天气预报的数据不是在链上自行生成的,而是需要智能合约向气象服务网站的接口发起请求获取数据。这时预言机就起作用了,智能合约可以向预言机发起请求,由预言机执行气象服务网站接口的调用,返回一致性的响应数据给智能合约,供智能合约处理。
02
预言机的类型
预言机通过为智能合约提供了一种在去中心化区块链网络之外进行通信的方式,为智能合约提供了附加功能。
区块链预言机可以采用多种形式,包括但不限于:
1、 软件预言机
这种预言机可能是目前最强大的预言机类型,因为它们与互联网具有固有的互连性。这种连接允许软件预言机向智能合约提供最新信息。
通常适用于在线数据信息访问,如公共数据库、网站等。通常提供以下信息:温度读数,公共交通信息以及各种金融资产的当前价格。
2、硬件预言机
硬件预言机一般负责物理世界中的事件处理,并将数据发送至智能合约上。如供应链管理中,带有RFID标签的物体送至特定仓库,可以将数据发到智能合约上,硬件预言机就可以在整个供应链中对货物进行跟踪。
3、输入式预言机
输入式预言机就是简单地将智能合约外部数据向智能合约提供,收到信息后开始执行。
4、输出式预言机
这种预言机是将智能合约上的数据传送给外部资源。
5、基于共识的预言机
这种预言机主要特性是检索多个信息源,并根据它们的共识得出相应结果。如果所有预言源返回值相同,则智能合约可以成功执行。
03
预言机具体实现
智能合约上有一个公开的OracleAddress状态变量,用于表示允许调用智能合约的UpdateWeather方法的账户地址,在构造函数中对其进行赋值:
接下来定义天气事件,而这个事件将在WeatherUpdate()调用成功时触发,用时让该事件附带一个表示温度的字符串参数。
最后要实现UpdateWeather()方法,其可见性为Public,表示可以从外部调用这个方法:
需要注意的是require语句,若想要继续执行该方法,必须要调用地址(msg.sender)和白名单地址(OracleAddress)保持一致时才能够允许,否则将会回滚交易。
04
预言机未来发展
区块链逐渐发展壮大,然而数据要求也愈加严格,这也就凸显出预言机的重要性了。尤其在区块链应用场景中,数据的可信任性是至关重要的。数据从中心化到分布式,已经在飞速发展,预言机在未来可能会有更大的多措并举的应用出现,这也决定了不同数据提供方的属性和服务场景。
目前,预言机在设计理念方面着重突出的是其可用性和实用性,除了技术和机制的问题,它需要对数据的隐私问题、防盗防攻击问题等能力要求都非常高,将来或许会涉及诸多领域的综合性项目中。
预言机虽说是区块链发展的基础设施,但这并不能说明它的发展会制约区块链,恰恰相反,区块链对预言机的未来影响还是很大的。只有当链下数据与智能合约有广泛交互,并能满足用户迫切需求时,预言机的未来才能够真正腾飞。