预言机本质上是一种数据调用和访问的中间件,它分别解决了「是或否」和「数据是多少」两类问题,从而实现了智能合约对外部数据的调用。它既可以从原生的链上获取数据,也可以通过爬虫或者可信第三方机构从链下获取数据。
理想的预言机网络应当满足五个条件:数据调用是基于双方相互信任且不可篡改的、数据调用的高效性、数据调用的安全性、预言机网络设计符合激励相容原则、数据资产化。
按照商业的组织模式分类,预言机可以分为中心化预言机和去中心化预言机。虽然二者的架构自下而上都可以分为网络层、操作层、合约层和应用层,但是二者在操作层和合约层上存在较大差异。
中心化预言机在性价比和用户体验上具有先发优势, 而去中心化预言机因在客情和生态的模式上占优而具有较大的后发优势。Oraclize 和 Chainlink 分别针对中心化预言机和去中心化预言机的优势和局限性做出了适当的完善。
预言机在数据资产化、物联网、金融、保险、导航等方面具有较大的应用场景和可扩展性,但是仍然面临着一定的挑战需要完善。
预言机的背景与现状预言机的起源与发展
预言机的起源
Oracle 在指古代原始人类在向神灵祈祷和祭祀时,神灵降下来的神谕。顾名思义,古代的象形文字和神谕大多数以甲骨文的形式记录,在艺术和文化上充满着神秘的色彩。
神谕(Oracle)的目的在于传达神的旨意从而预测未来,比如石器时代巫师对神的祈福和《易经》的八卦推演等。
传统计算机领域中的预言机
在传统计算机领域,预言机最早的雏形是由图灵于 1939[1] 年提出,由单带图灵机衍生而来。预言机本质上是一个用于回答问题的黑箱,只适合回答决策类问题(二级制「是」或「否」两个答案)和功能性问题(如 24 能否被哪些数整除),但是预言机并不具备大规模数据处理的能力。
美国高科巨头甲骨文公司在 1970 年创立时用 Oracle 命名,最初为联邦调查局提供关系数据库的软件服务,我们认为 Oracle 一词在数据库中,反映了关系型数据库解决了查找数据时「判断数据是否存在」等决策性问题,以及「查找并输出数据搜索结果」的功能性问题。
自此,计算机领域中的「预言机」应用开始逐步与数据的访问和调用挂钩。
传统计算机领域中的预言机真的可以独立预测未来吗?答案显然是否定的。
预言机在计算机领域扮演着对决策型事件结果的记录、沟通和反馈的作用,它仅仅只是完成数据的调用和信息反馈,所以数据计算和处理并不是它的侧重点。
在计算机领域中,对未来发展趋势的预测主要是通过人工智能(AI)算法实现,而 AI 算法的本质是数据的优化与迭代,更不要说利用数据预测未来。因此,当前的预言机需要预测未来需要与预测方法(AI 算法等)相结合。
区块链中的预言机
自从 Nick Szabo[2] 于 1995 年首次提出智能合约的概念以来,越来越多的线上交易合约均采用智能合约的模式,尤其是以 ETH 为代表的公有链平台,其主要原因在于人们希望通过比传统合约更安全并且成本更低的方式实现在计算机网络上的交易。
虽然智能合约允许在没有第三方的情况下进行可信交易,实现交易的可追踪且不可逆转,但是无法与区块链外的数据发生直接联系(如外部数据的获取与调用等),因此需要一个外部的图灵机将数据写入区块链或分布式账本中。
它在其中扮演着数据来源 API 接口之间桥梁的角色,从而实现区块链接口与外部数据 API 接口形成对接,而这个图灵机就是预言机(Oracle)。
预言机(Oracle)和智能合约天然的契合点在于,智能合约本质上是控制类的脚本代码,而预言机本质上回答决策性问题和功能性问题,二者只是实现数据的调用而非计算。
安全性方面,智能合约不具备大型数据处理的能力,而且容易造成计算溢出,因此需要添加预言机对外部数据的调用而非计算,从而规避了智能合约在调用智能合约时陷入图灵停机的困境 [3];可扩展性方面,预言机用于解决「智能合约在指定数据来源的情况下,上传数据有可能会被篡改」的问题,从而弥补智能合约平台缺乏网络效应和可扩展性的不足。
因此,预言机应用在智能合约的调用有利于实现数据资产化与价值化,并扩大智能合约的可移植性。
我们采用两个案例来对预言机的用途做进一步解释说明:
案例 1:甲计划于 2019 年 12 月 31 日上午 10 点买入 10 个以太币,报价为 140 美元,通过 Oraclize 从 CoinMarketCap 调用以太币在约定时刻的价格,并判断在成交时该智能合约能否执行。如果约定交割时刻 ETH 价格高于 140 美元,则交易失败;如果 ETH 价格不高于 140 美元,则交易成功。
案例 2:乙计划构建多因子量化策略模型预测 ETH 价格未来的走势,通过 Oraclize 从 coinmetrics.io 实时调用难度系数、全网总算力、成交量等指标的原始数据,并且利用公司的 3 台服务器执行多线程分布式计算,从而实现程序化自动交易。
案例 1 中包括 1 个决策性问题和 1 个功能性问题,预言机完成了对 ETH 价格的实时调用,计算过程简单。
案例 2 不仅仅是数据调用的决策性问题和功能性问题,而且还包括量化投资策略的具体实施和计算,计算过程复杂,一旦在智能合约上执行会导致计算溢出,从而导致智能合约失灵,所以一般在链下实施分布式计算后,再通过预言机实施数据的调用。
预言机的定义与分类
预言机的定义
在计算机领域中,预言机(Oracle Machine),又称谕示机,是一种抽象电脑(图灵机),其决策机制为一个研究决定型问题的黑箱,它能够解决任何决策性问题或功能性问题。
在区块链领域中,区块链中的预言机扮演着将外部信息写入链上的角色,是整个写入机制的总体 [2],它与至少一个预言者(Oracles)相连。
在区块链领域中,预言机是连接智能合约与区块链外部世界的中间件(Middleware),是区块链重要的基础设施,它的作用是为区块链上的智能合约提供数据信息。
注意,预言机网络中设置的代币绝大多数是基于 ETH 网络的,使用需要消耗 Gas,预言机本质上是一种中间件,它并不具备单独的区块链,其代币只在预言机网络中扮演着价值传递媒介的角色。
预言机的数据获取方式
预言机既可以从链上获取原生数据,也可以通过网络爬虫或者传统第三方机构获取数据。
对于预言机从链上获取数据,由于链上应用(Dapp)落地不及预期,导致用户对链上数据的需求有限,不足以支撑该模式的长期发展。
如果预言机从链下获取数据,它既可以是授信传统第三方机构作为公链或者联盟链的节点给链上输出数据,也可以是预言者通过网络爬虫的方式抓取特定数据。
一般来说,对于数据调用要求低时延的服务请求(如 ETH 价格实时调用),不适合采用通过爬虫的方式获取数据,因为爬虫的代码和数据的准确性受到网页结构和网络环境的制约;
目前主流的预言机项目(如 Chainlink 等)都采取授信第三方可信机构(如 Google、甲骨文等)作为节点,从而完善相关 DeFi 产品的喂价机制。
图表 1:预言机的数据获取方式
数据预言机与爬虫的区别
目前,行业内有人认为预言机是在爬虫的基础上增加了去信任机制。
我们认为这是有失偏颇的,如上文 1.2.2 节所述,因为爬虫只是一种抓取网页数据的方式,而预言机虽然采用爬虫的方式获取数据,但是更多的是采用授信传统第三方机构作为节点的方式获取数据。
预言机和爬虫在数据输出格式上也有显著的差异。
一方面,利用爬虫抓取的数据极有可能是非结构化的,可读性较差,而预言机获取的数据在格式上必须符合智能合约调用的要求,用户和预言者可以根据智能合约的要求自定义数据的输出格式。
更重要的是,预言机在调用高频数据(如 BTC 价格等需要实时更新的数据)上远远优于爬虫,可以避免数据在获取的过程中因程序运行故障而陷入停机,而爬虫则很容易在程序运行过程中陷入中断。
理想预言机网络应当满足的条件
理想的预言机网络应当满足以下五个条件:
1.数据调用是基于双方相互信任的(不可篡改)。预言机在调用外部数据引入智能合约时,应当保证最终反馈给用户的数据与数据来源本身的数据一致,防止预言者中途篡改。
经过服务请求方的确认和其他预言者的验证后,如果调用数据结果无误,则将调用数据写入智能合约,并将交易记录上传到区块链上;如果调用数据出现不一致,则该交易将被定义为非法交易。
2.数据调用具有高效性。预言机合约通过智能合约规定,如果预言者没有在请求发出后的规定时间内响应用户请求,或者是响应请求没在规定时间内将数据反馈给用户,就会自动取消交易,并且对服务供应商实施惩罚。
3.数据调用安全性高。预言机的设计必须有效遏制各种数据腐败行为,比如女巫攻击、镜像攻击、复制答案(吃空饷)等。
并且,通过强制节点在 TEE (Trusted Execution Environment)环境中执行解密,并向区块链汇报所有用户和节点都能看到的通用答案。
4.符合激励相容原则。预言机激励机制和监督机制的设立必须实现激励相容,但是无论是 PoW (Proof-of-Work)还是 PoS (Proof-of-Stake)都很容易造成多数人攻击,前者体现在挖矿方面——通过矿池等组织形式发起攻击,后者则是通过超额抵押(Staking)和贿选等方式实现攻击。
因此,治理机制的设计必须充分调动其他竞争预言机的监督积极性,并且不能够将代币奖励和打包概率等决定预言者收益的指标相挂钩。否则,将不可避免的发生预言者和用户因利益不一致而产生的委托代理风险。
5.数据资产化。数据应当作为一种资产,根据其资源的重要性和稀缺性进行定价,以公允价值的形式写入智能合约。
目前,数据资产缺乏有效的定价机制,因为数据的种类千奇百怪,不同类型的数据对不同用户的作用也是存在显著差异,而目前数据定价权归数据的资源方主导,并没有实现去中心化。
预言机架构预言机的起源与发展
根据商业组织形式分类,预言机可以是中心化的单一预言者的机制(如 Oraclize)——中心化预言机,同样也可以是去中心化的多个预言者的机制(如 Chainlink、DOS Network 等)——去中心化预言机。
中心化预言机(图表 2)由单一预言者(Oracle)为服务请求方提供数据,对某一特定的数据服务请求,在请求方指定 n 个数据来源并向中心化预言者发送合约请求后,服务商从 1 个或多个数据来源的接口调用数据,最终反馈给请求方的数据可以是 1 个数据来源的,也可以是从多个数据来源的结果进行汇总。
一般来说,由于单一数据来源的成本远低于从多个数据来源汇总的成本,中心化预言机仅有从最可信的一个数据源调用数据,以实现整个预言机系统的高效运行。
去中心化预言机(图表 3)由多个预言者共同提供数据获取服务,利用纠删码(Erasure encoding)技术实现答案冗余,增强整个预言机系统的容错能力。
当所有的预言者的规定时间内提交的答案汇总(汇总的方法包括加权平均、中位数或众数的方法,按具体调用的数据而定)后,将汇总后的答案反馈给请求方。
图表 2:预言机的分类
图表 3:中心化预言机的关系模型(对于特定数据请求)
图表 4:去中心化预言机的关系模型(对于特定数据请求)
中心化预言机和去中心化预言机两类除了底层的网络协议(TCP/IP 协议)、加密基础设施和硬件执行环境(一般为 TEEs)相似以外,二者在技术架构上有着显著差异。
其中标志性的差异是:中心化预言机需要可信第三方作为验证人或者审查机构自证清白,而去中心化预言机通过多个预言者(Oracles)之间进行相互验证。
中心化预言机技术架构
中心化预言机由可信中心提供数据通过第三方企业,提供智能合约运行所需要的外部数据,并将数据传输至智能合约中。
它的技术架构自下而上依次为网络协议(一般为 TCP/IP)、操作层、合约层和应用层。
图表 5:自下而上的中心化预言机技术架构(红字部分指中心化预言机特有的架构成分)
网络层
最底层为网络协议,中心化预言机的网络拓扑结构中,由单一或寡头的中心化服务商控制一个或多个中介节点,其网络传播速度完全取决于中介节点对服务请求的反应,面临着一定程度上的单点故障风险。
操作层
往上一层是操作层,操作层包括可信第三方验证系统、可信执行环境(TEEs)和格式配置器。
可信第三方验证的渠道必须是让用户可信的。一般来说,中心化预言机网络的审查人最好是由国家权威部门、大型企业(如 Facebook、Amazon 等)担任,并且审查人和项目方无利益关系。
比如 Oraclize 由 Amzon 云主机充当审查的角色,并且通过 TLSNotary Proof 证明自己是诚实的 [4]。
硬件方面,智能合约的运行和数据调用均在可信执行环境(TEEs)上进行。TEEs 基于可信硬件(即与系统其他部分隔离开的硬件),拥有独立处理器和内存,其运行完全独立于操作系统、虚拟机监视器(Virtual Machine Monitor, VMM)、Bios 以及普通计算机的其他核心部件。
TEEs 分别在安全性和保密性方面发挥着重要作用。安全性方面,TEEs 建立多个安全层,将可信硬件与计算机最脆弱的部分完全隔离,从而大幅缩小了黑客可攻击的范围。保密性方面,TEEs 让节点无法查看运算数据,数据在链下进行传输和计算。
格式配置器一般是将最终传输给服务请求方的数据进行格式统一,为了增强数据的可读性的同时,使服务合约的执行便于验证,一般采用 JSON 格式。
合约层
在合约层方面,中心化预言机包括订单匹配合约、服务请求合约、数据调用接口和服务标准协议。
用户(服务请求方)通过调用服务请求合约提出获取特定数据内容的请求,并规定服务标准协议(如规定服务响应时间、获取什么内容的数据等),中心化服务商在接受该请求后,调用订单匹配合约生成服务订单,最后通过访问数据源的接口(数据调用接口)获取数据。
去中心化预言机技术架构
去中心化预言机系统架构自下而上同样可分为网络协议、操作层、合约层和应用层。
去中心化预言机系统虽然在网络协议和应用客户端上与中心化预言机系统无显著差异,但是因其 P2P (Peer-to-Peer)的网络结构使其在操作层和合约层上与中心化预言机系统存在显著差异。
图表 6:自下而上的去中心化预言机架构(红字部分指去中心化预言机特有的架构成分)
操作层
操作层方面,去中心化预言机在中心化预言机的基础上,新增了多重签名机制和外部适配器。
去中 心化预言机无需可信第三方机构的背书来自证清白,但是需要依赖多重签名机制让满足超过最小诚实节点数的预言者(Oracles)同时为相应节点签名 。
如 Chainlink 采用门限(Schnorr)签名技术,让其他节点来检查提供服务的预言者是否具有不当行为且交易是否合理,必须最少一半以上的可用节点在链下实施签名才能够实施交易。
更重要的是,外部 API 适配器的设置使预言机可以将复杂的数据调用需求拆分成多个子任务,将多个预言者以分工协作的方式参与到服务过程中。
与我们在《万字讲透去中心化存储》一文中提出的分布式存储类似,外部适配器恰好是一种分布式的体系,提出需要多步骤复杂请求的节点越多会让更多的预言者参与到其中,从而让服务请求的人越多,得到的反馈速度越快,从而让完成服务的时间越短。
合约层
去中心化预言机系统在中心化预言机系统的基础上新增了信誉合约和汇总合约。
信誉合约方面,因为去中心化预言机系统本质上是由多个预言者(Oracles)组成的服务网络,所以需要通过调用信誉合约来统计每个预言者的历史服务情况,对存在不当行为(如搭便车复制其他预言者提供答案的哈希值、镜像攻击、女巫攻击等)的预言者扣减信誉评分和已质押。
汇总合约方面,由于去中心化预言机是一个存在多个预言者的数据服务网络,因此,在大多数情况下存在多个预言者在规定时间内同时对同一种服务请求进行响应。
此时,预言机网络通过调用汇总合约,采取加权平均或中位数等方式对所有预言者提供的答案进行汇总。
预言机项目比较和简析项目分类与比较
根据本文 1.2.2 节对预言机的分类,预言机项目按商业组织模式的差异可以分为中心化预言机网络和去中心化预言机网络。
因为数据掌握在特定数据源(大型机构)手上,项目方需要通过整合多方资源为预言机网络引流,所以行业存在显著的先发优势和团队优势,而 Oraclize 和 Chainlink 本身作为最早布局且流量规模最大的两个预言机网络恰好具这一优势。
因此,本文仅对代表性项目 Oraclize 和 Chainlink 进行介绍,而对 FOAM、DOS Network 等其他缺乏流量的预言机网络不做过多赘述。
再者,以 DOS Network 为代表的对一种数据请求开发一条区块链的预言机项目本身因开发成本和运营维护成本较高,不具备规模效应的需求。
图表 7:中心化预言机 VS 去中心化预言机
从商业模式看可扩展性
从商业模式的角度出发,中心化预言机的商业模式本质上是一个数据服务平台(类似 Wind 和 Bloomberg),而去中心化预言机是一个多元的数据服务网络,后者的商业模式显然更加有利于扩大全网规模。
原因在于——虽然二者将数据服务网络扩大取决于项目方本身的资源,但是去中心化预言机网络在不仅仅有效利用了项目方本身的资源,更有效整合了其加盟的多个预言者的资源,有利于整合多方的资源共同扩大预言机网络,从而形成有效的商业闭环。
安全性比较分析
中心化预言机与去中心化预言机在安全性方面各有优劣。前者的安全隐患主要来源于第三方的信任成本和黑客攻击,后者的安全隐患主要来源于因数据腐败导致整个网络失灵。
对于中心化预言机,其安全性取决于可信第三方的身份。如果可信第三方为政府权威部门,则第三方信任成本较低;如果可信第三方为大型企业,则可信程度较高,但仍存在一定程度上的委托代理问题。
对于去中心化预言机,其安全性取决于大多数节点是否诚实,并且在一旦发生数据腐败行为后,采取有效的惩罚措施。有效遏制数据腐败的前提是大多数的节点是诚实的(每个节点均为了实现自身利益最大化),只有在满足这个条件下,女巫攻击、镜像攻击和吃空饷(Freeloading)等腐败行为就会得到有效遏制。
成本定价分析
中心化预言机在成本和定价方面比去中心化预言机更具优势。
定价方面,二者在同样费用中心化预言机采用法币作为计价单位,不存在大幅波动的风险,而去中心化预言机一般采用其代币作为计价单位,波动幅度较大,无法遏制投机性需求对交易需求的负面效应;
成本方面,虽然二者的主要成本为智能合约执行的 Gas Fee,但是去中心化预言机网络需要将结果在链上汇总和调用信誉合约。因此,对同一种数据服务请求,去中心化预言机的代码运行比中心化预言机需要消耗更多的 Gas Fee,即使去中心化预言机将信誉统计、答案汇总和计算处理放在链下(Off-chain)处理也是一样。
未来,以 Chainlink 为代表的去中心化预言机网络将会进一步完善定价机制,采用法币(如美元等)作为计价单位,而其 Token 仅仅只发挥交易职能和监管职能,中心化预言机的定价优势将会逐步弱化。
服务效率比较分析
中心化预言机和去中心化预言机的服务运行效率因服务请求的时效性不同而存在差异。
对于高时效性的数据调用请求(如为 DeFi 金融合约实时调用 ETH 价格等数据来源确定的服务请求),中心化预言机因为无需多重签名的验证机制和链下答案汇总,只需要可信第三方单方验证和审查即可,所以其服务效率高于去中心化预言机网络,智能合约可以更快地获取数据。当其他条件不变时,数据调用的对时效性的要求越高,中心化预言机的效率优势就越凸显。
对时效性要求相对较低的数据服务请求(如获取甲骨文中小企业的数据库、年度数据和月度数据等),去中心化预言机更具备优势。
一方面,去中心化预言机网络通过外部任务适配器(External Task Adapter)将复杂的数据服务请求步骤化(分布式),从而实现了资源的有效配置;
另一方面通过数据来源多样化、汇总合约、信誉合约等机制设计分散了因数据来源本身问题带来数据失真的风险的同时,遏制了数据腐败的动机,从而进一步提高了数据的准确性。
同理,当其他条件不变时,服务请求对时效性的要求越低,去中心化预言机网络的优势就更加凸显。
目前,高时效性的服务请求(如智能合约调用相关数字货币价格)占主导,中心化预言机处于优势地位。但是,随着未来数据资产化的推进和物联网的快速发展,去中心化预言机将会更具后发比较优势。
汇总分析
从性价比、用户体验、客情和生态比较目前中心化预言机和去中心化预言机各自的竞争优劣:
1.性价比方面,中心化预言机目前占据优势。一方面当前的中心化预言机项目在成本定价上具有较大优势。另一方面,因为目前价格调动(对 DeFi 合约喂价)等低时延服务请求仍是预言机应用最多的场景,并且 M2M (Machine-to-Machine)的应用场景尚未落地,所以目前中心化预言机在使用性能上占优。
2.用户体验方面,因大多数数据服务请求为低时延的 DeFi 喂价,中心化预言机目前也占据优势。
3.客情和生态方面,主流去中心化预言机(如 Chainlink 等)通过授信第三方实体机构为节点的方式,利用多方的资源整合提升预言机全网的可扩展性,未来将随着 M2M 场景的普及和数据资产化进程的推进将大有可为。显然,中心化预言机并不具备这一优势。
图表 8:目前中心化预言机与去中心化预言机竞争优势比较
针对上文论述的中心化预言机和去中心化预言机各自的优势和局限性,以 Oraclize 为代表的中心化预言机项目和以 Chainlink 为代表的去中心化预言机项目针对其优势和不足做了进一步的完善。
Oraclize——最大的预言机网络
Oraclize 简介
Oraclize 首次于 2015 年提出,是世界上最广泛应用的区块链预言机服务。它针对智能合约和区块链应用程序的提供外部数据调用服务,每日在 ETH、Rootstock、R3 Cord、Hyperledger Fabric (超级账本)和 EOS 等平台上处理数千个数据服务请求。
Oraclize 通过 TLSNontary 证明、安卓证明等方式旨在证明从原始数据源获取的数据是真实且不可篡改的。
Oraclize 预言机协议——Provable 协议
Oraclize 的架构如上文图表 4 的中心化预言机架构相同,同样自下而上包括网络协议、操作层、合约层和应用层,其特殊性表现在基于可信第三方的证明机制、数据来源、格式适配器(Parsing Helper)和服务定价四个维度。
(1) Oraclize 可信第三方证明机制——软件+硬件使 Oraclize 自证清白
TLSNontary Proof
TLSNotary Proof 充分利用了 TLSNotary 1.0 和 1.1 协议(代码开源)的功能,允许在服务器、受审核方(Oraclize)和审核方(Amazon 云主机)之间分割 TLS 主密钥,通过给 Amazon 云主机共享部分服务请求数据的方式,让审核方可以验证信息的同时,又不至于泄漏更多信息,从而有效避免了其他参与者在本地修改 html 代码、PS 图片等证明做假的情况。
Android Proof
Android Proof 利用 Google 开发的称为 SafetyNet 的软件远程证明技术,分别验证了「一个特定的应用运行在一个安全、没有后门的环境里」、「运行的代码和事先公开的是否一致」以及「系统版本是最新版本」。
首先,Android Proof 通过验证给定的 Android 应用程序是否在连接到 Provable 基础设施的物理设备上运行,从而实现第一个证明需求;
其次,Android Proof 通过远程验证应用程序代码的哈希值,从而实现对设备上正在运行的应用程序进行身份验证,由此实现第二个证明需求;
更重要的是,Android Proof 通过新引入的 Android 硬件证明来证明该物理设备已更新为最新的可用 Android 版本,从而实现了第三个证明需求。
Ledger Proof
Ledger Proof (Ledger 指法国的专门硬件强制加密货币钱包的 Ledger 公司,而非指账本)利用代码证明和设备证明功能来证明任何第三方,证明 Oraclize 开发的应用程序正在真实 Ledger 设备的 TEE 中运行,证明格式如下:
图表 9:Ledger 证明格式
(2)数据来源
Oraclize 支持以 URL、WolframAlpha、IPFS、Computation 为主的数据类型。其中,URL 为数据源的 HTTP 链接地址(输出格式为 JSON),WolframAlpha 为支持直接访问 WolframAlpha 知识引擎 API (输出格式为字符串),IPFS 为存储在星际网络(IPFS)上的所有文件(20s 后没有匹配的 IPFS 系统上的文件则数据调用请求失败),Computation 则通过访问 Amazon 云主机实现对金融产品套利交易的结算。四类数据服务请求分别通过以下机制进行验证:
图表 10:不同数据类型的验证方式
(3)数据输出格式多样化
Oraclize 针对不同数据来源和不同的服务请求,分别支持 JSON、XML、HTML Parser 和 Binary Helper 四种格式作为输出,并支持不同输出格式之间的转换,从而增强了数据的可读性。
(4)服务定价
首次试用免费;服务请求费用(Call Fee)——佣金:包括基础费用和证明费用,根据 ETH 兑美元最新的汇率进行结算,同时以 Wei 为单位结算将以太币兑换成美元结算消耗的 Gas Fee。服务请求费用的结果如下表所示:
图表 11:Oraclize 服务定价模型,N/A 指不收费,数据来源 http://docs.provable.xyz/#security-deeppe-authenticity-proofstypes-ledger-proof
支付方式以链下支付渠道为主。
项目评价
Oraclize 是当前最大的预言机网络,其优势具体体现在以下几个维度:
安全性方面,Oraclize 亚马逊云主机、Google、Ledger 等第三方可信任机构足以自证清白。Oraclize 预言机网络中,区块链应用程序的开发人员和此类应用程序的用户不必信任 Oraclize,从而导致 oraclize 调用智能合约和代码的燃料费成本低于去中心化预言机网络,并且使整个预言机网络的运行效率较高,使其天然契合对时效性要求高的数据服务请求。用户体验方面,数据提供者不必修改其服务即可与区块链协议兼容,智能合约可以直接从网站或 API 访问数据。服务定价方面,Oraclize 以美元为计价货币,充分保证了其服务价值不发生大幅波动,更加有利于整个网络规模流量的扩大。
但是,Oraclize 在项目可扩展性上值得商榷:
可扩展性方面,Oraclize 作为单一模型的预言机网络,在可扩展性上难以像去中心化预言机那样整合多个预言者(Oracles)的资源。数据校验方面,Oraclize 对时效性要求低的数据服务请求难以进行容错和纠正,特别是对善意的数据调用错误。并且,Oraclize 缺乏一个有效的信誉评分系统,用户(服务请求方)无法对相应服务进行打分和反馈。
Chainlink——去中心化预言机的先行者
Chainlink 介绍
Chainlink 本质上是一个去中心化的预言机网络,它为任何区块链上的复杂智能合约提供可靠的防篡改输入和输出,再配合「链上+链下」的架构模式得以实施。
Chainlink 初期依托于 ETH 网络,随着 2019 年 Chainlink 分别与 Google、甲骨文、Etherisc 等商业巨擘合作逐步接入外部数据源,并用元预言机使 DeFi 相关金融产品的报价的数据导入更加完善。
Chainlink 架构——「链上+链下」的技术架构
Chainlink 架构分为链上(On-chain)部分和链下(Off-chain)部分,链上部分作为合约层完成 Chainlink 内所有信息的记录,而链下部分负责代码和命令行以及输出数据的具体执行。
图表 12:Chainlink「链上+链下」的技术架构
(1)链上部分——闭环的合约层
链上部分执行的操作包括用户(服务请求方)对预言者(服务供应商)的挑选(Oracle Selection)、数据服务的反馈报告(Data Report)和最终结果汇总(Result Aggregation)。Chainlink 通过调用信誉合约记录预言者历史服务情况、订单匹配合约和汇总合约共同实现整个 Chainlink 网络在链上的闭环体系。
信誉合约——记录服务供应商(预言者)的历史表现
服务请求方(用户)在挑选合适的预言者为其请求提供服务时,必须调用信誉合约查看预言者的历史表现情况,再根据其在服务请求中指定的数据来源、响应时间和具体数据要求完成对预言者(Oracles)的选择。
而在服务请求完成后,Chainlink 网络记录其完成的情况,生成数据报告(Data Report)后调用信誉合约对提供服务的预言者的信誉评分进行适当增减。
服务请求方对不同预言者进行信誉评级,Chainlink 计划布置以下参考标准如下:
预言者同意接受请求的总数,包括已实现和未实现的;完成请求数,计算出完成率(+);与其他预言者的回复相比,通过计算合约被判断为可接受的请求总数(+)。它一般根据接受任务总数和已完成任务总数的平均值来衡量。平均回复时长(-);累计惩罚金额(-)——惩罚是因预言者不当行为(Freeloading 复制对方答案、透露或使用服务请求的数据)而扣除其已质押的 LINK。
注:+表示该项增加会使预言者加分,-表示该项增加会使服务供应商扣分。
订单匹配合约
Chainlink 通过调用订单匹配合约将特定的数据服务请求与用户挑选好的一个或多个预言者进行匹配,并生成订单后将订单抽象到链上。
汇总合约
Chainlink 通过多个预言者(Oracles)提供的答案根据特定问题进行汇总,汇总方式一般为对反馈数据进行加权平均(剔除极端值)后得到的汇总答案,并最终反馈给服务请求方。
(2)链下部分(Off-chain)——执行层
链下部分分为 Chainlink Core、外部适配器和 Subtask Schemas 三部分。其中,Chainlink Core 是在可信执行环境(TEEs)下的命令窗口,外部适配器根据服务具体的需求将复杂的任务拆分成多个子任务以便于执行,Subtask Schemas 统一所有预言者最终输出的答案为 JSON 格式,便于代码执行和可读性。
图表 13:Chainlink 的执行流程,数据来源:《Chainlink 白皮书》
如图表 13 所示,Chainlink 工作流程分为以下 7 个步骤:
USER-SC 合约发出数据调用请求;ChainLink-SC 合约为预言者记录请求,并编译到 Core 命令行;Core 通过在合约程序前添加外部 API 来设置适配器,并分配任务;适配器将请求反馈给外部 API;ChainLink 收到预言机服务商的回复,并将其反馈给 Core 命令行;ChainLink Core 将数据报告给反馈给 ChainLink-SC;ChainLink-SC 汇总所有的答案,后反馈给用户端。
Chainlink 的激励机制与验证系统
Chainlink 的代币为 LINK,任何个人或组织都可以通过质押 LINK 代币的模式成为预言机系统中的预言者为用户提供数据服务,Chainlink 通过信誉合约对用户的行为进行打分,对表现好的预言者奖励一定数额 LINK 代币奖励,而对有不当行为的预言者扣除其抵押的 LINK 作为惩罚,并在信誉合约中记录其评分。
最重要的是,通过检举揭发对等预言者不当行为可以获得 LINK 代币奖励,这是 Chainlink 实现整体激励相容的根本原因。
Chainlink 的验证系统分别从可用性和准确性两个维度实施验证。
可用性方面,Chainlink 要求 Oracle 对从其他 Oracles 收到的一组回复答案进行数字签名证明,验证合约将接受并再次奖励提交证书的 Oracles,证书陈述表现不佳的 Oracles 向其对等方显示出一致的无回复特征;
准确性方面,Chainlink 将验证服务实现为一个智能合约,该合约将奖励 Oracle 提交偏离答案的证据(因数字签名可以容易被查找),并获得相应 LINK,并扣减提交偏离答案的 Oracle 处罚其已质押的 LINK。
项目评价
Chainlink 是预言机项目中去中心化的典范,在激励机制、运行机制和嵌套合约上实现了有效的闭环,贯彻落实了预言机网络激励相容的价值主张,不论是内部机制设计还是外部引流和发展都具有较大的优势:
安全性方面,Chainlink 具有以下四大优势:
1.Chainlink 运用 Schnorr 多重签名机制解决了 Freeloading (吃空饷——预言者直接复制之前已提交答案的哈希值的行为)的问题。设立最大容错节点数为 Chainlink 节点总数的 2/3 (其中不具备可用性的 Oracle 数量为总节点数的 1/3,不具备准确性的容错为 1/3),要求必须至少有 1/3 以上对等预言者签名才可以通过验证。
2.Chainlink 在一定程度上遏制了女巫攻击和镜像攻击。Chainlink 计划通过对高质量的 Oracle 发起背书(认证)的方式,监控验证系统关于 Oracles 的统计数据,并对提交至链上的数据执行事后检查,将它们与直接从信誉良好的数据源获得的答案进行比较,证书认证机制目前仍在进一步设计当中。
3.Chainlink 通过数据来源和预言机的多样化有效分散了因数据来源本身的问题导致数据失真的风险。
4.Chainlink 长期引入可信执行环境(TEEs)作为硬件的安全保障,从而实现合约的保密性,并生成可靠的随机性。
激励机制方面,Chainlink 实现了有效的闭环。通过对预言者检举其他预言者并提供有效证据的行为奖励 LINK,对存在不当行为的预言者扣除其质押的 LINK 作为惩罚的方式,并且 Chainlink 仅仅作为一种中间件,Oracle 的收益与其提供服务的行为和提供其他 Oracle 不当行为证据的行为挂钩。
可扩展性方面,Chainlink 将不断降低对 ETH 网络的依赖性。Chainlink 通过与 Google、Oracle 和 Etherisc 等巨头达成战略合作,实现保险、物联网、DeFi 金融合约、随机数生成等多个领域的应用,进一步增强数据来源的多样性。并且在依托于 ETH 网络的智能合约中,Chainlink 通过构建元预言机将聚合了链下真实的市场数据和链上价格数据,既为用户保障了定价效率也为链上流动资金池提高了定价效率。
但是,Chainlink 仍有进一步改进和完善的空间,并付诸实践:
1. 服务定价方面,Chainlink 仍然采用 LINK 代币作为计量单位,造成了服务价格的大幅波动,不利于构建长期稳定的预言机服务体系。
从 2019 年 5 月至 2020 年 2 月,由于 Chainlink 和 Google、甲骨文等行业巨擘达成战略合作等类似事件作为催化剂,LINK 价格从不到 0.5 美元上涨至超过 4 美元。
一方面 LINK 价格大幅上涨使服务收费标准大幅提升,很容易导致客户流失转移到 Oraclize;另一方面,LINK 代币的上涨导致成为预言者的资金门槛大幅提升,而 Chainlink 仅有 21 个官方认证的节点(可以运行数字货币价格数据调用的服务节点),总共正在运行的合约节点仅为 73 个。因此,Chainlink 正在部署以美元为计价单位的支付体系,使其服务定价趋于稳定。
2. 激励机制方面,Chainlink 中预言者的未来收益仍然与其质押 LINK 代币的份额挂钩,容易造成安全隐患和信誉评分系统的失灵。
新发行的 LINK 代币金额有 35% 仍会根据预言者最开始质押的份额实施奖励,这一方面很容易造成预言者通过大笔质押 LINK 代币而不提供相应服务和贡献,从而赚取 LINK 代币的分红而坐享其成,另一方面大额质押 LINK 代币的预言者容易通过同时控制多个节点发起攻击,一旦有 1/3 以上的节点被控制,其信誉评分系统的检举机制将会失灵,其遏制女巫攻击、镜像攻击和吃空饷(Freeloading)等行为的前提假设将不会成立。
这是 Chainlink 当前面临的最大挑战。
预言机的未来展望预言机的未来发展前景
预言机在金融、保险、导航定位和物联网等面临着数据大规模调用的领域大有可为。
虽然智能合约的使用技术门槛较高,并且在法律上不具有与一般合约等同的法律效力,但是自动化合约执行有利于规避因权责不清晰而造成的纠纷,并且迎合程序化和自动化发展的大趋势。
预言机与数据资产化
数据资产化扩大了预言机的可扩展性。数据资产化是未来的必然发展趋势,而大部分数据资源和定价权掌握在互联网巨头和行业寡头的手中,而预言机项目方通过与掌握数据的巨头以战略合作的模式引流,大大增强了预言机网络的可扩展性。
一旦数据资产定价方式得到完善,由互联网巨头控股或者是互联网巨头本身开发的预言机项目将会在未来主导预言机服务的市场,充当数据价值传递的主要媒介。
预言机与物联网
物联网方面,物联网足以渗透到我们生活的方方面面,从而需要引入智能合约使其产生的数据资产化,而智能合约的引入将需要预言机来获取外部的数据调用。
以车联网为例,车险是最容易发生权责纠纷的合约之一,而物联网通过传感器实时记录车辆行驶、车辆碰撞部位、车辆违规行为记录等数据,假设车险合约以智能合约的形式呈现,必须通过预言机技术调用相关数据判断是否可以触发智能合约的执行条件。
预言机与金融
金融方面(特别是 DeFi),需要通过预言机来保证链上结算的正确执行。尤其是与智能合约相契合的利率互换、期权、去中心化杠杆交易等金融产品,比如 MakerDao、CDx、0x protocol 等,从而确保每笔交易以准确的价格和成交量完成交割。
预言机与保险
保险方面,预言机的设计让智能合约保险在实现权利义务明确和自动执行(消除传统保险合约因陈述条款模糊而导致的纠纷)的基础上,更进一步的遏制保险欺诈,防止投保人和保险人的委托代理风险。
比如 Etherisc 和 Fizzy 实现了航班延误的自动赔付。Nexus Mutual 让受激励驱动的本地预言机验证本地尚未发布的声明,并上报给区块链。Flying Carpet 实现人工智能和地理数据的新型可编程保险。
但是,目前智能合约保险仅仅只局限于权利责任分明的保险合约,对于权利义务模糊的智能合约(特别是复杂保险案例的界定)上具有较大的局限性,但未来随着保险案例的逐渐增多和法律制度的完善,这个局限性会逐步被弥补。
预言机与智能导航
导航方面,一旦 GPS 被黑客攻击不仅会给货运、航运和航空运输带来严重的紊乱(如因定位错误造成国际贸易交割的违约和损失),而且将对国家安全带来难以想象的调整(如 GPS 导弹系统被入侵),因此需要通过引入预言机技术使得从 GPS 接口获得的定位数据没有被篡改。
譬如 FOAM 强调用户对其 GPS 数据具有所有权,使用预言机技术将 GPS 导航相关数据上传到链上,通过定位证明机制(Proof-of-Location, PoL)证明某个人或某件事确实在某一特定时刻在某一特定地点,从而有效降低 GPS 数据的信任成本。
预言机面临的调整
当前,预言机网络发展面临着以下六大挑战:
预言机无法保证数据来源本身数据的准确性
预言机只是解决数据在传输过程中可能会被篡改的风险,从而在预言者和用户之间建立可信的机制,让不可信任的双方可以实现价值交换。
但是,一旦数据来源本身出现问题,反馈给用户的数据同样是失真的。
例如,黑客攻击采用两种不同方式攻击 GPS 系统,第一种攻击方式是通过在地位数据的传输渠道中篡改了目标定位的数据,第二种是直接攻击 GPS 系统的数据存储系统。
假设预言机中大多数节点是诚实的,显而易见,第一种攻击方式采用去中心化预言机的模式,只要 GPS 系统更新数据,将不同预言者调用数据的结果进行对比,就可以解决该问题;
第二种攻击方式导致 GPS 系统本身数据来源的数据被篡改,即便 GPS 系统后期更新数据,它存储数据库的错误数据仍然没有被修正,从而导致定位数据失真,进而造成航运交割的违约。
对冲数据来源出错数据失真的方法是保持数据来源的多样性,从而降低因数据源本身的问题导致数据失真的可能性。
但是,在数据来源单一(如 GPS 定位数据、IoT 设备传感器记录的数据)的情况下,这种缺陷则会更大概率造成数据的失真。
因不可篡改性导致难以修复安全漏洞
区块链的数据不可篡改是一把双刃剑。不可篡改性的优势在于任何人都不能篡改已发生的智能合约,规则制度实现了去中心化(前提是大多数节点是诚实的),但是也存在较大的弊端。
一方面,安全漏洞修复代价较高。如果调用数据的智能合约一旦出现安全漏洞或错误,因合约本身的不可篡改性会导致漏洞无法被修复,除非社区更新软件版本并且以硬分叉的方式(如 ETC 和 ETH 的分叉)。
而且,很多项目因出现类似问题没有及时修复而导致代币价值归零。
另一方面,如果数据源在发现错误后更新,则智能合约的不可篡改性导致记录在链上的仍然是更新前的数据。尽管在实际情况下,一切都可以篡改,但如果造成的后果不严重(仅仅少部分数据失真),则项目方或社区不至于以硬分叉的高代价来篡改数据。
程序代码开源导致更容易被黑客攻击
从理论上来说,程序代码开源有利于让更多人对代码 Bug 起到修复的作用,进而对智能合约本身进行完善。
但实际上,智能合约开源代码导致黑客或恶意节点更容易发起攻击。
一方面,因为绝大多数人没有足够的时间或精力去检查代码智能合约代码本身的问题,而且存在较大的技术壁垒,所以群众对智能合约代码的监督作用有限。
另一方面,由于合约代码的不可篡改性,虽然使任何都不能任意更改交易规则,但是一旦代码出现漏洞再进行纠错的阻力较大,目前处理大规模漏洞的最好的方法是硬分叉(如 ETH 社区处理 The DAO),轻则让去中心化本身失去意义,重则导致项目破产。
而大多数项目方不具备足够的人力物力和财力(如 ETH 社区),使项目的收益远远小于风险。
数据壁垒加剧导致预言机网络引流困难
预言机网络本质上是一种数据资源整合平台,从而实现数据共享,需要通过引流扩大网络规模,但是数据壁垒让引流难度极高,使预言机网络规模受限。
目前,大多数数据掌握在以 Facebook、Google、腾讯等极少数互联网巨头或 Swift 等行业寡头手中,他们不愿意共享自己的数据,使得核心数据获取的难度较高,导致预言机网络的规模受到制约。
但是一旦获得数据资源的引入将会使预言机网络规模快速扩大。
比如 Chainlink 与 Google、甲骨文、Swift 等以数据为主导的网络巨头达成战略合作,Google 的 BigQuery 数据仓库等作为数据源为 Chainlink 提供大量的数据流量支持,使 Chainlink 网络的活跃度大幅提升。
随着现代产权制度的逐步完善,数据壁垒将成为未来数据交互的巨大挑战,而数据资产化的大趋势将成为必然,能够获得数据资源的预言机网络将获得更多的数据流量。
目前,预言机项目处于初创期,数据壁垒将会导致当前预言机项目风险大于收益,掌握数据资源的组织倾向于自己控制数据资产的定价权,这会从数据真实性和预言机网络规模两个维度形成掣肘。
一方面,数据来源的多样性是分散数据来源出错的唯一方法,但是实际上在绝大多数情况下,数据来源往往是单一的,因数据来源出错导致最终反馈给用户的数据失真的风险仍然无法得到有效分散。
另一方面,预言机网络的流量是决定其项目价值的决定性因素,如果掌握数据的巨擘(特别是 Google 等以数据为主导的公司)自行发展预言机项目将会带来巨大的冲击。因此,未来预言机项目的流量取决于掌控数据资源的一方是以什么形式参与到预言机市场。
高效性与冗余容错设计的冲突
高效性和冗余容错存在不可避免的冲突。如果预言机网络采用中心化的商业模式(如 Oraclize),数据反馈速度就会比去中心化预言机网络更快,即便可以证明自己的诚实,并通过分布式服务器规避单点故障的风险,也可以也难以分散因无法验证数据源致使数据失真的风险;
反之,如果预言机网络采用去中心化的商业模式(如 Chainlink),则冗余容错将不可避免的导致数据反馈的低效,但是又可以通过共识机制和信誉评级等机制充分证明预言者(Oracle)的诚实,并且可以有效分散数据源失真的风险。
预言机对低时延的数据服务应当降低其交易时间
预言机应当尽可能降低服务时延。DeFi 产品大部分以智能合约的形式实现日常的交割,以 The DAO 为代表等产品需要通过预言机网络频繁的获取 ETH 等数字货币的实时价格数据,使其有效的执行。
毫无疑问,当前价格信息实时获取是是 Oraclize 和 Chainlink 等预言机网络中最频繁的数据服务请求,然而,数字货币资产价格波动的速度很快而且波动的幅度较大,从而导致预言机反馈给客户的价格与当前实际价格产生严重的偏离。