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