注,原文作者为Tesa Ho
以下为全文翻译:
啥是预言机?
预言机是现实世界(链下)服务和区块链(链上)协议之间架起桥梁的中间方。预言机检索链下数据,并将这类数据发布到区块链上供智能合约用。它们还将智能合约中的信息和指令转发给链下的外部系统。除此之外,预言机还需要确保提供准确的数据,并能抵抗操纵。
理想的预言机应有以下几种特质:
1. 高水平的准确性——价格预言机应准确反映目前数据。
2. 抗操纵性——预言机应能抵抗操纵。
3. 准时性——来自价格预言机的数据应该准时提供,且最好是每一个区块的数据。
4. 去中心化——预言机价格要在去中心化且无准入的系统中进行验证。
链上预言机 VS 链下预言机
DeFi预言机可分为链上链下两种,前者的价格来自链上源(如UNI),而后者的价格则来自链下源。此外,预言机还可以进一步分为中心化和去中心化的,前者的数据由单一运营商验证(如COMP),而后者的数据则由独立运营商验证(如MKRDAO)。
链下或链上预言机有着各自的优缺点。链上预言机的主要问题是容易被操纵。譬如,链上预言机可以与闪电贷结合来借助协议,比如发生在Harvest Finance(2022年十月),yVault(2022年7月),与bZx(2022年2月)上的安全事件。这类漏洞致使了很多协议在其智能合约中整理了链下或混合价格预言机,以降低预言机被操纵的可能。
顶级ETHDeFi预言机的分类
此分类涵盖了DeFi中最广泛用的协议和预言机。Linda Xie在其Github上有更深入的关于DeFi 预言机的分类。点击此处查询。
Chainlink预言机(混合去中心化)
Chainlink用的是一个至少由7个独立节点运营商所组成的去中心化预言机互联网。节点运营商负责检索链下数据并反馈给请求的智能合约。节点运营商通过两种方法提供数据。第一种是,当节点运营商是一个独立于数据源的实体时,将通过Chainlink标准API模提供数据。节点运营商提供的价格由FluxAggregator在链上大全成一个单一的响应,并用于更新链上的价格参考源。当价格与链下的偏差超越合约偏差阈值或随着基于时间的最小更新,即心跳阈值(the heartbeat threshold),这类更新就会发生。 第二种模式是原点签名数据模式(Origin Signed Data Model ),当数据提供者(比如Kaiko)操作自己节点时,就会发生这样的情况。所提供的数据将用唯一的私钥签名,并直接出货给智能合约,使数据馈送可抵抗女巫攻击。 除此之外,每一个节点运营商都从一个公共地址提交数据,节点便可以参考其声誉进行评估,有时这也被叫做是 “通过透明度来达成安全”。
MKRDAO v2预言机(链下去中心化)
MKR协议用价格预言机Medianizer,以确定何时清算资金库,并计算特定的资金库可以产生多少DAI。每一个预言机为单一资产产生参考价格。 预言机从个人和组织提供的独立馈送中接收数据。
MKRDAO V2版本用了一些白名单地址作为数据馈送(Feed)。每一个Feed会用一个叫Setzer的工具从一组交易平台中拉出中位数价格。中位数价格会被推送到安全的Scuttlebutt互联网,随后,该互联网将大全价格数据并将报告的中位数价格发送到Medianizer。假如新的参考价格大于源价格的1%,或最后一次价格更新是在6小时之前,Medianizer便会将报告的中位数价格作为参考价格发布。参考价格在被其他MKR智能合约用之前会被预言机安全模块延迟。
除此之外,Medianizer还控制着增加或删除白名单Feeds,这类Feeds由MKR持有人投票决定。每一个Feed都可以配置Setzer,并从其选择的任何交易平台拉出数据。Medianizer合约还设定了参考价格验证所需的有效Feeds的最低数目。因为MKR对Medianizer的投票控制,理论上存在51%攻击来操纵预言机的可能。
此前,MKRDAO的价格预言机就在2022年3月12日的黑色星期四期间宕机了,由于高Gas费使得Medianizer没办法准时更新价格。当天,以太币下跌了43%,而当MKRDAO的价格预言机终于可以更新价格时,巨大的价格变化已经致使了大规模的清算,整个资金库都被清空了。 具体细节可查询GlassNode的详细报道。
UNI v3 预言机(链上去中心化)
UNI v2试图通过用时间加权平均价格(TWAP)来消除v2价格预言机的操纵。在任何买卖发生之前,上一个区块最后一笔的买卖价格被记录在区块的开始。区块结束时的累积价格,即每秒钟的UNI价格之和,会被添加到区块的末尾,从而用户可以计算出准确的TWAP。TWAPs增加了操纵的本钱,由于该本钱会伴随UNI的流动性和TWAP的时间长度而线性增长。
UNI v3预计将于5月5日针对ETH推出,并于5月12日针对Optimism推出。团队声称,它将借助与v2相同的时间加权平均定价(TWAP)预言机,并进行以下升级:
累积器检查点是内部的,允许外部合约计算近期一段时间的链上TWAP,而无需存储之前的累积器值。V3将跟踪用户计算几何平均TWAP的对数价格总和,而V2跟踪的则是用户计算算术平均TWAP的价格累积总和。流动性累积器也将被跟踪,因此用户便可以决定什么池子的TWAP最为靠谱。UNI v3用户可以调用累积器,并取t1、t2的值,通过以下公式计算出加权几何平均价格。TWAP的新改进使移动平均线的计算愈加实惠,并可进行离群点剖析。除此之外,流动性累积器还允许智能合约依据其流动性来确定什么预言机是值得信任的。这将降低UNI价格预言机的波动性,并降低错误定价。
COMP 预言机 (混合中心化)
COMP用混合的链下和链上价格源作为其预言机。授权的价格出处(”报告者”)可以是中心化交易平台、DeFi协议、应用程序和场外交易网站。聚合器合约从报告者那里接收价格,并在计算中值之前对其进行验证。 然后,中值会被发布到COMP市场。聚合器的验证逻辑是检查新价格是不是在锚定合约提供的上下限锚定价格之内。假如新的价格在这类界限以外,那样新的价格就会被丢弃,参考价格也不会被更新。COMP持有者是控制着设置,也可以改变聚合器参数,他们可以更新价格所需的最小报告人数目、锚定合约的地址与确定上下限的容忍率。COMP持有人还可以决定抵押品系数、预言机出处与任何利率模的调整。
SNX 预言机(链上中心化)
截至2022年9月,SNX已经将其所有些价格预言机迁移到了链上。SNX的商品包含外汇,产品,指数和数字货币。反向Synth合约的价格是通过”做多”合约计算的。指数的价格则由Chainlink在链外计算,然后在链上公布。因为Chainlink的更新只在价格变动1%或每6小时发生一次,所以SNX合约在其预言机更新上会遭到潜在的超前影响。为解决这一问题,SNX创建了排队机制,只有在预言机更新价格后才会发生Synth交换。Syth交换与目前blockHeight一块被放在队列中,其他人都可以在任何时候处置。然而,队列中的交换只有在其源头和目的地被预言机第一更新时才会运行,从而消除任何提前运行的可能性。
Coinbase 预言机 (链下去中心化)
Coinbase价格预言机用Coinbase Pro API作为价格数据的出处。其他人都可以在链上发布价格,由于数据是用Coinbase的私钥签名的。用户可以用Coinbase的公钥来验证数据的真实性。除此之外,Coinbase还推行了一个链外过滤器来过滤掉偏离价格预期波动范围的极端数据点。它还用了COMP开放式预言机的’锚’合约作为链上检查。 假如预言机的价格与锚定价格相差太远,就会被拒绝,且不会推送到区块链上。
COMP在其View Contract中用了Coinbase的价格预言机作为报告者。而Coinbase的价格则由UNI锚定,以产生强大的数据源。
DeFi中怎么用预言机?
虽然 DeFi 中预言机的主要作用与功效是与借贷协议的清算有关,但价格预言机还有其他几种作用与功效:
1. 抵押品不足的贷款清算–借贷协议(即MKR、COMP、Cream和AAVE)依赖价格预言机来决定何时清算用户的贷款。假如一个用户的抵押品降低到某个阈值以下,该竞价推广账户就可以被清算。
2. 衍生品定价–衍生品平台(即SNX、Perpetual、Hegic)用预言机来计算加密货币,包含期权、期货、合成资产的价值。
3. 指数定价–指数平台(如Set)用预言机来检索指数成分的价格。
4. 保险协议–保险协议(如Nexus Mutual)在向区块链报告和发布索赔之前借助预言机来验证索赔。
5. 预测市场–去中心化的预测市场(即August和GNO)依赖预言机进行链下事件结算。
ETH预言机以外
在上述ETH解决方法以外,还存在其他的预言机解决方法。Julien Thevenard和Nikolaos KosTOPoulos都在各自的文章中回顾了其他几个区块链预言机。下面是对本报告范围以外的其他区块链预言机的迅速概述。
结论
每一个预言机,无论链上或链下,都有我们的优势和弱点。ETH价格预言机会不会遭受另一个黑色星期四的崩溃,仍有待确定。 在评估预言机时,牢记以下攻击载体可能会有所帮助:
1. 51%攻击:假如一个实体拥有或一个团体勾结控制了大部分节点?届时,这部分实体便可以控制什么价格信息被用,将什么数据认作是绝对真理。
2. 镜像攻击:一个预言机节点能否将其数据推荐给它所控制的其他节点呢?不真实的信息可以像电话游戏一样轻松传播。
3. 数据篡改:预言机是不是从可信的出处接收数据?外部数据提供者或许会发送被操纵的或错误的数据。
4. 活跃度问题:预言机或节点是不是准时向链上推送数据?预言机或节点的更新或许会有意或无意地停止,从而对依靠它们的智能合约导致破坏性影响。
伴随加密协议的不断进步,准确的链上和链下数据的重要程度也在不断增加。除此之外,伴随这类无准入协议与外部系统、物联网设施和其他软件的进一步整理,将外部数据准确传达给区块链互联网的需要将获得很大关注。不一样的用例可能需要特定的预言机设计,协议或公司也需要依据上述的权衡选择特定的解决方法。