ChainLink、预言机与两个世界的连接(晨光照耀原野,梵高)

互联网诞生之后,人们有现实世界,也有了互联网世界。如今,人们又有了一个新的世界:加密世界。这是区块链带给人们的礼物。

在过去二十多年,创新者们不断融合着现实和互联网世界,两者相互融入,难以分开。在比特币诞生后十多年后,加密世界也加快了跟现实世界交互的脚步。从蓝狐笔记的角度,加密世界和现实世界的融合会是未来二十年最重要的发展线之一,可以与人工智能和物联网并驾齐驱。

加密世界 vs 现实世界

纯粹的加密世界跟现实世界有不同的运行逻辑。

加密世界运行在链上,通过共识机制、密码学以及分布式节点等来保证其不可篡改性,实现不依赖于第三方的信任。智能合约运行在链上,同样,没人可以修改其代码,也无法干扰其运行,这包括智能合约的创建者。在智能合约中,其执行逻辑是,如果发生了 x,那么就会执行 y,这里的结果是确定性的。智能合约可以自我验证自我执行,它代表了加密世界的可信赖。

而在现实世界中,很难有全局的确定性共识,充满各种不确定的可能,例如应用是可以被修改、被终止的。在这种情况下,加密世界和现实世界的融合存在挑战。互联网世界可以将现实世界的部分搬到网上,例如将报纸杂志搬到网上,成为新媒体;将各种线下的零售店搬到网上就变成了网店。而加密世界跟现实世界的融合更复杂。

那么,两个世界如何沟通?有没有可能沟通?这就是预言机存在的意义。蓝狐笔记之前介绍了 DeFi 领域中的交易协议 Uniswap (《一文读懂 Uniswap》)和 Kyber (《Kyber 的淡出与起势》)。今天蓝狐笔记介绍 DeFi 中的预言机领域。

预言机连通加密世界和现实世界

加密世界和现实世界的沟通需要预言机。在蓝狐笔记看来,预言机是连接两个不同世界的“中间件”。

如果加密世界仅仅满足于货币类应用,那么,仅仅通过加密世界内部也可以完成,例如比特币的交易。但,如果想要更丰富的服务,想要满足更多的需求,想要将智能合约的潜力发挥到最大,那么,很有必要为智能合约引入来自现实世界的数据。

有人会问,为什么区块链不直接获取这些数据?无法直接获取。上面也提到过,因为这两个世界的运行逻辑不同。区块链上的数据都是通过共识机制达成的全局共识,而现实世界的数据并非都是共识的结果。两个世界的连通需要可靠的预言机。通过预言机提供可信的数据,转换成为区块链可读可用的数据。

加密世界需要哪些现实世界的数据?从目前发展看,迄今为止,需求最大的是 DeFi 领域,DeFi 中 MakerDAO、Compound、Synthetix、dYdX 等都需要预言机提供的价格数据流服务。

随着智能合约的发展,会有更多的场景需要链外的数据。例如合成资产智能合约,可能需要来自于纳斯达克、纽交所的价格数据流;房产智能合约,可能需要来房地产市场的数据流;保险智能合约,例如航班延误险需要航班活动的数据流;贸易金融智能合约,可能需要获取 GPS 相关数据等。此外,随着人工智能和物联网的发展,智能合约对现实世界数据的需求只会越来越大。

除了将现实世界数据引入加密世界,加密世界的数据也可以进入现实世界。例如从链上向链下输出数据,以支付消息的形式被路由到支付网络等。

中心化预言机并不契合区块链

为了满足区块链智能合约对链外数据的需求,有的智能合约采用了或采用过中心化的预言机。中心化的预言机存在什么问题?它中心化的控制方式,容易出现单点失败的故障,一旦出现停机,会带来损失。此外,不管是主观操作,还是客观被黑客攻击,都存在被篡改的可能。即使通过公证、品牌、质押资金等也无法彻底解决潜在安全问题。

在现实中已经发生过此类问题。Synthetix 曾在 2019 年 6 月遭遇过重大的预言机问题。其 Synthetix Oracle,负责给 Synthetix 智能合约提供外部数据。它在 6 月 25 日引入了错误价格数据,该数据报告的 KRW (韩元)价格是实际价格的 1000 多倍。这一错误数据被一个交易机器人利用,该交易机器人所有者借此兑换了 3700 万的 sETH,价值超过 10 亿美元。最后 Synthetix 跟该交易机器人的所有者协商解决,在支付一定的漏洞赏金之后,将 sETH 恢复。也就是说,在这个过程中,Synthetix 的中心化预言机错误提供了 KRW 价格,从而导致悲催后果。

如果中心化预言机容易出问题,那么,为了保证价格等数据不会出错,采用人工输入的方法是不是可行?人工输入的预言机,在预测市场可以看到。对于人工输入方,需要抵押资产,可以防止一定程度的作弊,且通过众包方式,有一定程度分散化。不过,人工输入的方法,成本较高、效率较低、无法即时反馈,不具有可扩展性。

安全是预言机的关键

对预言机来说,中心化或去中心化不是目的,其目的是要实现安全的可靠的数据送达服务。(从蓝狐笔记的角度,“去中心化”这个词并不是很好的表达,“分散化”或“分布式”是更恰当的描述,因为从目前实践来看,没有真正的去中心化,只是节点更多更分散而已)

智能合约的代码逻辑执行中,一旦发生了 X,就会触发 Y。这种方式保证了可信赖、透明;但是,如果输入的数据是错误的,那么,也会带来损失。就像上面提到的 Synthetix 案例一样,由于其输入的韩元价格数据是正常价格的 1000 多倍,导致产生严重后果。Synthetix 是合成资产交易平台,用户通过抵押 SNX 代币生成合成资产。合成资产可以是 BTC、ETH 这些加密货币,也可以是特斯拉股票、大宗商品等。不管是加密货币还是股票、黄金,Synthetix 的合成资产交易都需要精确的资产价格数据流。一旦价格数据出现问题,后果不堪设想。

同样,MakerDAO 协议中用户使用 ETH 进行抵押,可以生成稳定币 Dai,其抵押率在 150% 以上,假如输入的 ETH 数据是恶意的,它导致大多数用户资产被清算,且还有 14% 的罚金。如发生这种极端情况,MakerDAO 系统将无法运行下去。同样,Compound、dYdX 等 DeFi 项目也是如此,都需要预言机提供正确的价格数据流,以保证其系统安全。

可以说,预言机是 DeFi 领域大多数项目的共同问题(Uniswap 除外,它无须预言机提供价格数据服务)。如果没有安全的预言机,DeFi 大厦就没有稳固的地基,也无法扩展壮大。目前 DeFi 已经锁定超过 6.8 亿美元价值的资产,且还在持续发展中,如果预言机出问题,几乎是不可承受之重。

既然中心化预言机有潜在安全问题,那么,如何获得更安全的预言机服务?关于这一点,ChainLink 早在 2017 年就提出来了,不得不说,这在当时是具有远见卓识的,毕竟 2017 年 DeFi 还没有发展起来,预言机的需求也不明显。

ChainLink 预言机如何连接两个世界

上述可以得出两点:一是,预言机是加密世界和现实世界实现沟通的不可或缺的“中间件”。这决定了其重要地位,会有越来越大的市场规模。二是,预言机安全非常重要,它是很多智能合约,尤其是 DeFi 大厦的基础构建块,安全是其安身立命之本。

那么,ChainLink 是如何来连接加密世界和现实世界的?

ChainLink、预言机与两个世界的连接(ChainLink 的 ETH/USD 价格数据流,21 个节点提供服务)

1.ChainLink 预言机的工作流程

ChainLink 预言机的工作流程大致有如下几步:

  • 用户智能合约(USER-SC)从链上发出请求

  • ChainLink 智能合约(CHAINLINK-SC)为预言机记录一个事件

  • ChainLink Core 接到事件,并路由任务,给到适配器

  • ChainLink 适配器向外部 API 发出请求

  • ChainLink 适配器处理响应,并将其返回给 Core

  • ChainLink Core 将数据报告给 ChainLink 智能合约(CHAINLINK-SC)

  • ChainLink 智能合约汇总响应,加权得出一个最终反馈,并将其发送给用户智能合约

ChainLink、预言机与两个世界的连接(来源于 ChainLink 白皮书)

ChainLink 目前以太坊为主构建,未来也会支持其他智能合约平台,例如跟物联网公链 IoTeX 和分片公链 Harmony 等都有合作。

为了实现上述工作流程,ChainLink 从架构上可以分为两个部分:链上部分和链下部分。

*ChainLink 的加密世界部分

ChainLink 智能合约响应用户智能合约的数据请求或查询。它包括三个组成合约:声誉合约、订单匹配合约以及汇总合约。其中声誉合约记录的是预言机服务提供者的历史表现;订单匹配合约通过 SLA (Service Level Agreement,服务水平协议)为预言机需求者提供选择,例如价格水平、预言机数量、声誉等,并根据需求确定预言机服务提供者;汇总合约汇总不同预言机的响应,并加权计算出最终结果。

总的来说,ChainLink 链上的工作流有三步:一是,选择预言机;二是,报告数据;三是,汇总得出结果。

用户选择预言机主要是通过指定 SLA 提案,可以选择查询参数、预言机数量、声誉情况、价格水平等。根据这些,可以进行排序、过滤,最后作出选择。确定 SLA 提案之后,它会被提交到订单匹配智能合约,满足 SLA 要求的 ChainLink 节点选择是否对提案出价。如果预言机服务提供者出价,则会被提交至合约,同时附上质押金,如有不当行为,会被没收。一旦 SLA 接收到足够多的符合要求的出价,出价窗口关闭,并从这个出价池选择最终的预言机服务者。没被选上的则其押金会被退还。

一旦执行 SLA 任务的预言机被选定,接下来就是链下的预言机执行协议,并向链上报告数据。当预言机合约收到预言机提交的结果后,这些结果会被反馈到汇总合约。汇总合约计算加权结果,得出最终的反馈答案。加权答案会返回给用户智能合约,从而触发特定功能。同时,每个预言机响应的有效性都会反馈给声誉合约。

当然,这个汇总加权处理方式可以有多种。有的需要在进行汇总前将异常值去掉,比如可以抛弃离散值,比如在计算时,去掉最大和最小的值,并输出剩余值的中位数等。

*ChainLink 的现实世界部分

ChainLink 的现实世界部分,也就是其链下部分,主要由预言机节点网络组成,这些节点连接到公链(如以太坊网络)。这些节点独立收集来自现实世界数据源的数据,以响应链上请求的需求。

ChainLink Core 节点软件负责与区块链交互,CHainLink 节点的工作是完成各种任务。每个任务有一组小的子任务。每个子任务执行特定任务,然后将其结果传递到下一个子任务,由此得到最终结果。ChainLink 节点软件内置了一些子任务,包括 HTTP 请求、JSON 解析、转换为各种区块链格式等。

除内置子任务类型,通过创建适配器也可以自定义子任务。适配器是具有最小 REST API 的外部服务。通过以面向服务的方式对适配器建模,只需在程序前添加小的中间 API,可实现任何编程语言的程序。很多适配器都是开源的,服务可以审计,且由不同的社区成员运行。各种不同的适配器由不同的开发者开发,确保适配器之间的兼容也关键。ChainLink 与基于 JSON 模式的模式系统一起使用,以指定每个适配器需要什么输入以及如何来格式化它们。

2. 分散化是 ChainLink 实现安全连接的基础

实现预言机本身并不算很难,难的是提供持续安全的预言机服务。上面蓝狐笔记也提到过,中心化预言机面临的难题包括单点失败、数据保密、数据不被篡改等。为了实现安全的预言机,去中心化的方式,也就是分散化的方式是实现安全的基础探索。

针对预言机可能出现的安全漏洞,ChainLink 提出了去中心化为主的安全方法,其本质也就是分散化,其中包括数据源的去中心化、预言机节点的去中心化。当然只有去中心化还不够,ChainLink 还考虑了使用可信硬件、对数据源数据进行签名等方法来确保安全。

首先是数据源的去中心化。如果只有一个数据源,一旦该数据源被黑客篡改、或停机等,那么预言机就不安全。分散化是一种解决方案。可以通过多个来源的数据,获得多个反馈,以分散风险。

其次是预言机节点的去中心化。不同的预言机节点可以从一个或多个数据源获取数据,同时也可防止部分恶意节点输入错误数据。即便其中部分预言机存在错误,只要通过 ChainLink 汇总合约的加权计算,也有机会得出更可靠的响应。

不过,这里存在搭便车问题。有的节点可能会为了节省收集数据成本,抄袭其他节点的响应数据,不仅对其他节点不公平,同时也实质上降低了预言机节点数据源的分散化,从而不利于安全。ChainLink 会采用加密提交方式,由预言机节点发送加密的响应到 CHAINLINK-SC 智能合约,在达到一定数量,并发起第二轮时才会揭示反馈值。

ChainLink 开始时采用的是合约内汇总的方式,长期来说会采用链外汇总的方式。合约内汇总的问题是成本问题,它会涉及链上预言机消息传输和处理的成本。如果节点多,这里可能会有很高的成本。更省钱的方法是在链外执行反馈的汇总,然后向 CHAINLINK-SC 发送一条消息。ChainLink 还提出使用门限签名的方法(蓝狐笔记:threshold signature),例如使用 Schnorr 签名。链外汇总的系统利用了基于门限签名的分布式协议,可以防止 f

3.ChainLink 实现预言机安全的其他措施

仅有去中心化(分散化)的方式,还无法实现全面的安全。ChainLink 还考虑其他的措施,例如包括可信硬件、来源数据的数字签名、以及其安全服务。

可信硬件和数字签名方面是 ChainLink 实现预言机安全长期要做的事情。下面主要介绍在早期预言机服务中,ChainLink 为提高安全的措施,也就是其主要安全服务,其中包括:验证系统、声誉系统、认证服务、合约升级服务。

首选看验证系统。ChainLink 验证系统监控链上预言机的行为,并提供指标,帮助用户做选择。指标包括可用性和正确性。可用性主要记录预言机没有即时响应查询的失败次数。正确性就是指正确的响应。如果偏离值大,可以比较其他节点的响应得出。在链上处理汇总数据时,预言机的活动是可见的,不过在链下执行汇总时,就无法直接观察其可用性和正确性。对于链下反馈的正确性方面,ChainLink 要求预言机对其响应进行数字签名,而其他节点可以报告有明显错误的行为(举报偏离值过大的节点),报告节点会获得奖励。可用性比较难监控,ChainLink 要求预言机对从其他预言机收到的反馈结果进行数字签名的证明,也就是让别人来证明自己的成功率。验证合约会接受这些证明。

其次是声誉系统。声誉系统主要记录历史表现。主要包括:分配的请求总数(完成响应和未完成响应的);已完成的请求总数,可以计算出完成的成功率;被接受的请求总数,通过计算被合约接受的请求总数,然后跟其他节点做比较,并与总完成的请求总数对比,由此得出准确率;平均响应时间:它基于完成的请求来计算;质押金额:被锁定的罚金数额,可以计算节点的犯错成本。为了获得好声誉,节点会正确行事。

最后是认证服务。认证服务主要是为高质量的预言机提供者做信用背书。不过这会被人们误认为是许可节点参与的意思。这种服务在早期为了获得安全存在的一定的必要性。当然长期看,能否找到更合适的方法也值得考虑。认证服务会监控验证系统的数据统计,尤其对高价值交易的响应进行审计,还有链下审计,包括事后审计等。同时,这么做也是考虑了女巫和镜像攻击的可能性。女巫攻击会通过控制预言机池,提供错误数据,影响最终答案。为减少操作成本,女巫攻击者还会采用镜像,这些恶意预言机会在链下共享数据,假装有独立数据源,这样结果是减少了数据源的分散化,降低了安全。长期看,这可以通过使用可信硬件来解决。短期则需要一些认证措施。

ChainLink 的价值从何而来

LINK 代币是其预言机数据交易市场的支付媒介,同时也是工作权利代币。ChainLink 网络使用 LINK 代币向节点运行者支付费用,以获得节点提供的链下数据流中检索数据的服务、将数据格式化为区块链可读格式、链外计算、以及保证正常运行。用户智能合约为了使用 ChainLink 预言机节点,它们也需要向其所选的 ChainLink 节点支付运营费用。

由此可见,LINK 的价值来源于 ChainLink 预言机服务市场的规模。

去中心化预言机市场的潜力

去中心化预言机领域有多大?智能合约承载价值的规模越大,去中心化预言机的需求也就越大。假如 Maker、Compound、dydx 等 DeFi 项目的规模达到几十亿上百亿美元时,预言机安全的重要性可想而知,它需要更多的节点参与,更多的数据来源参与,更安全的技术基础(如数据加密和可信硬件等)设施参与,更多预言机安全方案的探索。

对于有数十亿上百亿规模的价值来说,其中几千万美元甚至几亿美元用来保证其安全也是值得的。支付给预言机的服务成本,其本质是安全成本。随着合成资产等衍生品市场的发展,这个市场有可能比现货市场的规模更大,所以,对安全的预言机服务的需求也会越来越大。

结语

预言机是连通加密世界和现实世界的“中间件”。它关系到加密领域的可持续发展,尤其是对 DeFi 领域来说,其重要性显而易见。

而对预言机来说,最核心的是安全问题。只有解决了安全问题,它才有立身之本。在解决安全问题的方法中,去中心化是达成安全的重要方式。ChainLink 提出了一系列的解决方案,包括数据来源的去中心化、预言机的去中心化、可信硬件、对数据的签名,以及安全服务措施(验证、声誉、认证、合约升级)等。它为人们在去中心化预言机领域的探索开启了一条道路。

同时,也有人认为 ChainLink 的去中心化程度还不够,在安全上还有提升空间。那么,不妨更多的预言机网络进来探索,以提供更多选择。接下来蓝狐笔记如有机会将关注预言机领域的其他选手。也许未来不只有 ChainLink,还会有其他预言机网络也会随着智能合约应用的兴起而发展壮大。这个领域不会只有一家选手,随着市场增长,只要能够实现更安全的预言机,机会还有,格局未定。

------
风险警示:蓝狐笔记所有文章都不能作为投资建议或推荐,投资有风险,投资应该考虑个人风险承受能力,建议对项目进行深入考察,慎重做好自己的投资决策。

加入蓝狐笔记的知识星球https://t.zsxq.com/iaQNnIq

如对区块链感兴趣,欢迎加入蓝狐笔记群微信:pacinoli(加群请说明)

来源链接:mp.weixin.qq.com