导读
区块链的优势在于不依赖第三方解决信任问题,智能合约在其中起了重要作用。智能合约可能需要与外部世界进行数据交互,但区块链无法主动获取现实世界的数据,该如何解决呢?摘要区块链是一个确定的、封闭的系统,无法主动获取链外的数据。预言机便是区块链智能合约与外部世界交互的接口,是区块链与外界相互沟通的桥梁。
预言机有多种应用场景,将会极大拓展区块链在现实世界的应用范围。所有需要与链外数据交互的非中心化应用都需要借助预言机,例如非中心化的衍生品交易平台、借贷平台、稳定通证、保险应用、赌场应用、预测市场等。
预言机的主要作用是为智能合约提供可靠的外部数据,其核心价值是在可信的基础上,使区块链与外部世界连接起来。理想状态下预言机的工作流程是接受请求、获取数据、返回数据。可供预言机查询的数据源一般有互联网的URL链接、搜索引擎、其他区块链的数据、星际文件系统IPFS的数据等。
预言机有多种类型,可以按软硬件进行分类、按中心化与否进行分类、按数据流向进行分类。
实际应用设计预言机时,需要着重加以考虑信息保密性(Confidentiality)、完整性(Integrity)、可获得性(Availability)等问题。
典型的预言机项目有ChainLink、Oraclize、DOS Network、OracleChain等。
总体来看,目前市场上的预言机类项目主要为非中心化预言机 ,且多数都致力于支持多条主流公链。为了保障预言机信息的保密性、完整性和可获得性,不同项目采取了不同的方案,如ChainLink的方案是结合声誉合约、订单匹配合约和聚合合约,Oraclize是利用真实性证明,DOS Network采用了可验证随机方程和阈值密码学,而OracleChain采用了声誉和抵押证明。
风险提示:隐私泄露
目录 1 预言机的含义
1.1 预言机在传统互联网里的含义 1.2 预言机在区块链里的含义 1.3 预言机的应用场景2 预言机的工作流程与类型2.1 预言机的工作流程 2.2 预言机的分类方法3 预言机实际应用中需要攻克的问题4 典型项目分析4.1 ChainLink 4.2 Oraclize 4.3 DOS Network 4.4 OracleChain 正文
1预言机的含义
1.1 预言机在传统互联网里的含义
预言机英文为Oracle,最初源于古希腊宗教,意为“神谕、先知、预言”。
计算机科学之父艾伦·图灵于1939年在博士论文里提出预言机的概念,介绍了超计算(Hypercomputation)。预言机比图灵机更加强大,可以回答一些无法通过计算解决的问题,例如,“今年世界杯,哪只球队将问鼎冠军?”。
一部预言机是一个带着“魔法黑盒”的图灵机,其中黑盒可以解答两类问题:一是决定性问题(Decision Problem,只需回答“是”或“否”的问题),二是功能性问题(Function Problem,又被称为复杂型问题,比简单回答“是否”要复杂,例如,正整数x可以被哪些数整除?)
1.2 预言机在传统互联网里的含义
以太坊将区块链带入到2.0时代,通过采用图灵完备的编程语言,实现逻辑判断等更复杂的功能,而不像BTC那样仅限于地址间转账,从而极大丰富了区块链商用落地的场景,智能合约(Smart Contract)是其中的关键性技术。所谓智能合约,指的是满足一定条件会触发一段程序的自动执行,相当于计算机里的“if…then…(如果…就…)”编程语句。
区块链是一个确定的、封闭的系统,每个节点需要获取精确一致的状态,这赋予了区块链的不变性,但同时也意味着缺少灵活度。触发智能合约的“一定条件”可以是链上的状态,例如支付是否完成,也可以是外界的信息,例如天气的状态、航班是否晚点、哪支球队赢了比赛等等。
区块链网络无法独立地搜集外界的信息,预言机便是区块链智能合约与外部世界交互的接口,可以查找和验证真实世界的数据,并以加密的方式将信息提交给智能合约使用,它允许确定的智能合约对不确定的外部世界作出反应,可以简单理解为外界数据的预处理器或第三方数据代理商。《区块链能做什么、不能做什么?》一文,对预言机是这样定义的:
区块链外信息写入区块链内的机制,一般被称为预言机(oracle mechanism)。
以Alice和Bob赌球为例来说明预言机在智能合约里的作用。假设Alice和Bob先各自向智能合约里的地址发送1 ETH作为赌注,并约定:
1)双方将赌注提前发送到智能合约地址,智能合约根据预言机提供的外界信息自动执行相应的程序;
2)如果Alice押注的球队赢了,Alice将从Bob那里赢得1 ETH,智能合约地址里的2 ETH将自动发送给Alice;
3)如果Bob押注的球队赢了,Bob将从Alice那里赢得1 ETH,智能合约地址里的2 ETH将自动发送给Bob;
4)Alice和Bob押注的球队打成了平局,智能合约地址里的ETH原路退回,两人均未有输赢。
整个过程都没有人为的干预,即便Alice和Bob是两个陌生人,也不会产生额外的信任成本。
1.3 预言机的应用场景
所有需要与链外数据交互的区块链应用都需要借助预言机,典型的应用场景有:
1) 加密资产衍生品交易平台
目前典型的加密资产衍生品交易平台有dydx等,允许用户做多或做空通证资产。智能合约需要从链外获取资产价格,来触发平仓、确定参与方的收益和损失等。
2) 非中心化运作的稳定通证
稳定通证是一类通过特定机制锚定其价值和价格的数字通证。根据价值支撑划分,稳定通证当前主要有法币锚、资产锚和内部锚三种模式。通过非中心化运作的稳定通证目前有DAI等。这些非中心化运作的稳定通证需要借助预言机来感知其自身的价格变化,进而作出相应的决策来稳定价格。
DAI是MakerDAO平台通过抵押加密资产(目前主要是ETH)发行的稳定通证。MakerDAO平台通过多个预言机获取抵押物和DAI的市场价格,在抵押物市场价格跌幅过大时可以作出警告和清算决策。
3) 借贷平台
基于区块链的借贷平台目前有ETHLend、SALT等,这些平台允许用户抵押加密资产来借贷法币或其他加密资产,与DAI类似,平台会借助预言机监控抵押物的保证金比率,在保证金不足时将会发出警告并触发清算程序。同时,预言机可以导入借款人的信用等级,进而确定相应的贷款利率。
4) 保险应用
基于区块链的保险应用目前有Etherisc、HGS等。用户在平台上可购买航空延误险、农作物保险等保险。预言机可以为这类事件引入外部数据源,以便智能合约根据协议对保险产品作出是否理赔的决策。
5) 赌场应用
基于区块链的赌场应用目前有FunFair、Edgeless等,通过智能合约保障游戏公平、即时安全支付,相比于传统中心化赌场具有较大优势。对非中心的赌场应用来说最重要的是不可预测、可验证的随机数输入。
传统的随机数产生方式是中心化的,随机数的具体数值与特定机器的物理状态有关。区块链上的随机数需要满足分布式的特点,在每个节点产生的随机数要具有一致性的随机性,传统方式无法满足这一要求,通过预言机可以实现从链外输入具有这种特性的随机数。
6) 非中心化的预测市场
非中心化的预测市场目前有Augur、Gnosis等项目,在体育赛事、总统竞选、通证价格变化等事件上可以做出预测,押注不同的结果预测。押注之后可以选择等待最终结果,也可以选择在二级市场提前交易“开奖券”。预言机将获取最终真实的结果,并根据此结果来计算盈亏。
7) 基于区块链的物联网应用
基于区块链的物联网应用,是将链外传感器信息通过预言机传到链上,让智能合约验证后触发下一步行为。
2预言机的工作流程与类型
2.1 预言机的工作流程预言机的主要作用是为智能合约提供可靠的外部数据,其核心价值是在可 信的基础上,使区块链与外部世界连接起来。理想状态下预言机的工作流程如下:
1) 接受请求。预言机接收到用户合约(USER-SC Contract)发送的请求Req=(Src,τ,q),其中Src表示查询指定的数据源,τ表示时间点或时间段,q表示查询的内容。
2) 获取数据:将查询内容q在时间τ发送到Src,进行查询;
3) 返回数据:一旦获得答案a,将a返回给智能合约使用。
可供预言机查询的数据源一般有:
1) 互联网的URL链接;
2) 搜索引擎;
3) 其他区块链的数据;
4) 星际文件系统IPFS的数据;
5) 传感器的数据等。
2.2 预言机的分类方法
1)按软硬件进行分类
预言机获取数据的来源是线上(包括互联网、区块链链上),和线下(物理世界的传感器数据),分别对应软件预言机和硬件预言机。
2)按中心化与否进行分类
预言机反馈的结果是通过单一节点获得,或通过分布式节点“集思广益”而获得,分别对应中心化预言机、非中心化预言机。非中心化的预言机效率较低,中心化的预言机可靠性较差。
3)按数据流向进行分类
外部数据可以通过预言机流向区块链触发智能合约执行下一步程序,智能合约产生的数据也可以通过预言机流向物理世界(例如区块链智能锁,当智能合约检测到指定区块链地址收到转账后,将触发智能锁自动解锁)。
3预言机实际应用中需要攻克的问题
预言机在实际应用进行设计时需要着重考虑以下三个要素:完整性(Integrity)、保密性(Confidentiality)、和可获得性(Availability)。
完整性是指信息完整准确可靠,没有被有意无意地破坏、篡改。
保密性是指智能合约向预言机请求查询的内容不会被泄露出去。例如非中心化的保险业务,用户或许并不希望预言机透露自己的航班信息给全世界;再如非中心化的衍生品交易,用户也并不愿意透露自己的投资组合和操作策略。
可获得性是指通过预言机调取数据时,可以及时得到所需要的信息,包括可以实现抗审查(censorship-resistance)。
针对完整性,一般可通过多重数据源、多重预言机、声誉系统、可信执行环境(可信硬件)、真实性证明等方案加以解决。具体参见下文典型项目分析。
针对保密性,预言机节点使用公钥对查询请求进行加密,并对预言机做出信息流限制,仅仅在查询信息源时才去解密。
针对可获得性,非中心化的预言机可以有效解决。
4典型项目分析
4.1 ChainLink
ChainLink致力于打造高可靠性的分布式预言机网络。用户合约(USER-SC)发出查询请求,CHAINLINK-SC为请求的事件分配适配器,适配器调用外部API并返回结果,CHAINLINK-SC聚合相关响应并把一个最终结果反馈给USER-SC。
CHAINLINK-SC主要由声誉合约(reputation contract)、订单匹配合约(order-matching contract)、聚合合约(aggregating contract)构成。声誉合约通过响应时间、保证金数额、请求完成率等指标对预言机节点进行声誉评分,订单匹配合约借助声誉合约将请求事件与预言机节点进行自动匹配,增加可用性。聚合合约收集汇总预言机节点的响应,并将节点指标反馈给声誉合约。
为保障信息的完整性和可获得性,ChainLink采用分布式数据源(Distributing Sources)、分布式预言机(Distributing Oracles)、使用可信硬件(Use of Trusted Hardware)三种方案。
ChainLink的愿景是支持所有的智能合约,轻松实现智能合约与数据源和API的连接,可实现跨链和链下的交互和支付。
4.2 Oraclize
Oraclize是一个具有真实性证明的中心化预言机,目前支持以太坊(Ethereum)、Rootstock、R3 Corda、Hyperledger Fabric和EOS等多个平台。
智能合约通过对Oraclize发布一个调用请求来获取数据,指定数据源和参数,Oraclize根据请求获取数据后,利用callback函数返回结果。
Oraclize认为非中心化预言机的解决方案具有效率低下、所有参与方都需要付费、耗费时间长等局限性。Oraclize的思路是证明从源头获取的数据是真实的且未篡改的,类似于网络技术中, HTTPS协议取代HTTP,在客户端和服务器之间创建加密和验证通道,提供身份验证。
真实性证明可以通过硬件或软件的方案来加以解决,例如可信执行环境TEE(硬件)、可审计的虚拟机(软件)。
4.3 DOS Network
DOS Network是支持多条主流公链的非中心化预言机服务网络。
DOS Network是一个Layer-2的预言机解决方案,由链上和链下两部分构成。智能合约指明合约需要的数据源以及数据类型,向链上系统合约发送一个预言机请求,接着该请求会被随机分配给一个链下工作组。工作组内的每个成员节点都会从指定的数据源获取数据并按照规定的类型和结构来解析。随后组内节点通过阈值密码学的方式对数据结果达到组内共识并且产生一个对共识结果的证明。经过组内共识的数据和相应的证明将会以一条交易的方式发回系统合约,并触发合约对提交组返回结果证明的验证。
DOS Network认为基于声望来选择服务节点容易因“马太效应”造成中心化问题,因此采用随机的方法来选取预言机工作组合节点。DOS Network基于可验证随机方程(VRF)和阈值密码学(Threshold Cryptography)的方式产生安全、无法被预测并且可以被公开验证的随机数,避免了声望系统的种种问题,对参与节点更加公平公正。
4.4 OracleChain
OracleChain是基于EOS平台面向EOS生态的非中心化预言机平台。OracleChain采用PoRD(Proof-of-Reputation&Deposit,声誉和抵押证明)的双效机制,本质上是一种抵押保证金的声誉系统,奖励善意节点,惩罚恶意节点。
总体来看,目前市场上的预言机类项目主要为非中心化预言机,且多数都致力于支持多条主流公链。为了保障预言机信息的保密性、完整性和可获得性,不同项目采取了不同的方案,如ChainLink的方案是结合声誉合约、订单匹配合约和聚合合约,Oraclize是利用真实性证明,DOS Network采用了可验证随机方程和阈值密码学,而OracleChain采用了声誉和抵押证明。
责任编辑;zl
评论
查看更多