预言机如何连接虚拟世界与现实世界
过去二十多年,创新者们不断融合着现实和网络世界,两者相互融入,难以分开。在比特币诞生后十多年后,加密世界也加快了跟现实世界交互的脚步。
从作者的角度,加密世界和现实世界的融合会是未来二十年最重要的发展线之一,可以与人工智能和物联网并驾齐驱。
加密世界vs 现实世界
纯粹的加密世界跟现实世界有不同的运行逻辑。
加密世界运行在链上,通过共识机制、密码学以及分布式节点等来保证其不可篡改性,实现不依赖于第三方的信任。智能合约运行在链上,同样,没人可以修改其代码,也无法干扰其运行,这包括智能合约的创建者。
在智能合约中,其执行逻辑是,如果发生了x,那么就会执行y,这里的结果是确定性的。智能合约可以自我验证自我执行,它代表了加密世界的可信赖。
而在现实世界中,很难有全局的确定性共识,充满各种不确定的可能,例如应用是可以被修改、被终止的。在这种情况下,加密世界和现实世界的融合存在挑战。
互联网世界可以将现实世界的部分搬到网上,例如将报纸杂志搬到网上,成为新媒体;将各种线下的零售店搬到网上就变成了网店。而加密世界跟现实世界的融合更复杂。
那么,两个世界如何沟通有没有可能沟通这就是预言机存在的意义。之前介绍过了DeFi领域中的交易协议Uniswap(《一文读懂Uniswap》)和Kyber(《Kyber的淡出与起势》),今天作者介绍DeFi中的预言机领域。
预言机连通加密世界和现实世界
加密世界和现实世界的沟通需要预言机。在笔者看来,预言机是连接两个不同世界的中间媒介。
如果加密世界仅仅满足于货币类应用,那么,仅仅通过加密世界内部也可以完成,例如比特币的交易。但,如果想要更丰富的服务,想要满足更多的需求,想要将智能合约的潜力发挥到最大,那么,很有必要为智能合约引入来自现实世界的数据。
有人会问,为什么区块链不直接获取这些数据无法直接获取。上面也提到过,因为这两个世界的运行逻辑不同。区块链上的数据都是通过共识机制达成的全局共识,而现实世界的数据并非都是共识的结果。两个世界的连通需要可靠的预言机。通过预言机提供可信的数据,转换成为区块链可读可用的数据。
加密世界需要哪些现实世界的数据从目前发展看,迄今为止,需求最大的是DeFi领域,DeFi中MakerDAO、Compound、Synthetix、dYdX等都需要预言机提供的价格数据流服务。
随着智能合约的发展,会有更多的场景需要链外的数据。例如合成资产智能合约,可能需要来自于纳斯达克、纽交所的价格数据流;房产智能合约,可能需要来房地产市场的数据流;保险智能合约,例如航班延误险需要航班活动的数据流;贸易金融智能合约,可能需要获取GPS相关数据等。此外,随着人工智能和物联网的发展,智能合约对现实世界数据的需求只会越来越大。
除了将现实世界数据引入加密世界,加密世界的数据也可以进入现实世界。例如从链上向链下输出数据,以支付消息的形式被路由到支付网络等。
中心化预言机并不契合区块链
为了满足区块链智能合约对链外数据的需求,有的智能合约采用了或采用过中心化的预言机。中心化的预言机存在什么问题
它中心化的控制方式,容易出现单点失败的故障,一旦出现停机,会带来损失。此外,不管是主观操作,还是客观被骇客攻击,都存在被篡改的可能。即使通过公证、品牌、质押资金等也无法彻底解决潜在安全问题。
在现实中已经发生过此类问题。
Synthetix 预言几重大错误案例:10亿美元
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的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目前以太坊为主构建,未来也会支持其他智能合约平台,例如跟物联网公链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,还会有其他预言机网络也会随着智能合约应用的兴起而发展壮大。这个领域不会只有一家选手,随着市场增长,只要能够实现更安全的预言机,机会还有,格局未定。
声明:本站所提供的资讯信息不代表任何投资暗示, 本站所发布文章仅代表个人观点,仅供参考。