Chainlink Price Feeds如何保障DeFi生态安全

 

Chainlink Price Feeds在2019年发布,服务智能合约开发者不断增长的DeFi应用开发需求,为区块链网络接入安全、精准和实时的金融市场数据。自那以后,Chainlink Price Feeds发展成了行业标准的价格预言机解决方案,总共有900多个去中心化的预言机网络,为各个区块链和L2网络上的几百个DeFi应用保障了数百亿美元的价值。Aave、Benqi、Compound、dYdX、Frax、Liquity、Sushi以及Synthetix等DeFi应用都先后接入了Chainlink。

本文将深入探讨Chainlink Price Feeds如何保障DeFi生态的安全。文章一开始会阐述预言机对DeFi的意义,然后会细数推动Chainlink Price Feeds应用规模不断扩张的七大关键优势。

什么是DeFi预言机?

仅仅在几年内,去中心化金融(DeFi)就从一个小众的区块链用例发展成了全世界增长最快的行业之一。(注:DeFi指基于区块链的金融应用生态)目前,DeFi的总锁仓量(TVL)已突破2000亿美元。TVL追踪了DeFi应用中存入的加密资产总额。

对于大多数DeFi应用来说,要保障其加密资产的安全,就必须要接入金融市场数据。比如,货币市场需要接入实时资产喂价,以精准地发布和清算抵押贷款;算法stablecoin需要接入当前资产喂价,以可靠地自动调节货币政策。然而,由于区块链本身无法连接外部世界,因此DeFi应用很难获得金融市场数据,而且大多数高质量的金融市场数据都是在区块链以外的环境(即:链下)生成的。区块链无法连接链下系统的问题通常也被称为“预言机问题”

要解决预言机问题,就需要采用一种叫作“预言机”的安全中间件。预言机可以将区块链接入链下数据和服务,它对DeFi来说至关重要,尤其是可以为链上提供price feeds。DeFi应用可以实时接入各类加密资产或实物资产的当前或历史价格,并用于执行关键功能。由于price feeds决定了DeFi应用是否执行某一功能,因此自然容易成为被攻击的目标。价格预言机也曾因为安全问题造成了数千万美元的损失。因此,为了保障DeFi生态中的资产安全,必须使用安全的价格预言机。

为DeFi提供Chainlink Price Feeds

Chainlink Price Feeds是链上参考合约,由去中心化的预言机网络(DON)自动更新,DON由Chainlink节点组成。每个参考智能合约都储存了某一资产的历史和最新兑换汇率(比如:BTC/USD),智能合约可以按需查询汇率。每个Chainlink Price Feed都在某一个区块链网络中运行,并基于预定义的参数定期更新。

为了帮助大家更好地理解Chainlink Price Feeds的运行机制和安全机制,下文将探讨Chainlink Price Feeds保障DeFi生态安全的七大关键优势。

1.在多个层级实现去中心化,并提供优质数据

为了保障可靠性和数据质量,Chainlink Price Feeds通常采用的一种方式就是建立多层级的去中心化聚合机制。这样做可以规避单点故障风险,并保障预言机报告能够反映真实的市场价格。Price Feeds会分几步进行聚合。

Chainlink Price Feeds Aggregation
Chainlink Price Feeds采用了多层级的去中心化聚合机制。

在数据源层面聚合

首先,数据会在数据源先聚合一次。一系列中心化的交易平台(如:Coinbase)以及去中心化的交易平台(如:Uniswap、Curve和PancakeSwap)都会基于交易活动生成原始市场数据。

专业的数据聚合公司(如:CoinMarketCap、CoinGecko和Tiingo)会从各个交易平台搜集这些原始数据,并计算出喂价数据集。具体而言,这些数据聚合商会通过计算生成一个交易量加权平均价(VWAP),将每个交易平台的数据加总在一起,基于交易量加权计算出一个平均值。数据聚合商通常还会考虑到各个交易平台之间的差异,比如市场深度、延时和利差,并剔除闪崩、洗售交易(wash trading)以及其他异常值,以防这些异常值影响最终聚合出的数据点。

每个数据聚合商都充分覆盖了所有市场,最终聚合出一个数据点,这个数据点涵盖了所有交易环境,而非一小部分市场,因此准确度更高。数据聚合商针对法币、大宗商品和证券等其他资产类型也会采用同样的计算方式。然后,这个喂价会作为一种付费订阅服务,通过API接口传输。也就是说,数据聚合商有很强的经济激励来维持数据的准确性和API的稳健性,以满足服务水平协议(SLA)的要求。

在节点层面聚合

接下来,数据会在节点层面再一次聚合。每个Chainlink节点都会接入多个优质付费数据聚合商的API接口,比如嵌入证书管理功能,以访问受密码保护的API接口。当需要更新喂价时,每个Chainlink节点都会从多个数据聚合商获取数据,并返回中位数值。每个Chainlink节点都会自动剔除异常值并防止数据聚合商的API意外下线,以此来提升服务可靠性。

在预言机网络层面聚合

最后一次聚合发生在预言机网络层面。多个独立的Chainlink节点共同组成一个去中心化的预言机网络(DON),定期生成预言机报告,报告中包含每个节点上传的数据点(中位数喂价)以及签名(加密验证)。然后,DON生成的预言机报告会保存在链上某一具体数据集的参考智能合约中(如:以太坊上BTC/USD的参考合约)。预言机报告每次在链上发布,都会先验证每个节点的签名,然后再对所有数据提取中位数,并将其储存在参考合约中,数据一旦储存就无法再被篡改。

为了维持较高的防篡改性,一个DON中至少需要有2/3的节点上传结果和签名,预言机报告才会被链上接受。这样做可以避免某个节点或一小撮节点操纵最终喂价或在链上发布不完整的预言机报告。另外,由于预言机报告发布后会取中位数,因此如果要操纵最终储存在链上并输入智能合约的结果,就必须至少贿赂一半以上的预言机节点。

Chainlink Price Feed aggregation flow
Chainlink Price Feeds的数据聚合流程。

Chainlink在数据源、节点和预言机网络的多层聚合策略可以确保Chainlink Price Feed每次更新时都能准确反映资产价格,并充分覆盖所有市场。

若要了解更多关于Chainlink Price Feeds如何保障数据质量的细节,请阅读《DeFi智能合约的数据质量问题》一文。

2.优质且可靠的预言机节点运营商

每个DON都由分布在世界各地的节点运营商组成,这些节点具有抗女巫攻击能力,而且经过安全评估,在运行关键基础架构方面拥有丰富经验。节点运营商会在云服务器以及自己架设的本地服务器上运行Chainlink节点软件。Chainlink节点软件是开源的,使用MIT协议,经过安全评估,并拥有多年主网运行的实战经验。

Chainlink Node Operators
Chainlink节点运营商会聚集在一起组成预言机网络。

Chainlink Price Feeds的节点运营商来自各个背景和行业,汇集了各自丰富的经验和深厚的技术专长,共同为区块链聚合安全可靠的喂价数据,并传输到链上。Chainlink的节点运营商主要包含以下几类:

  • DevOps节点:这些节点是专门运行区块链基础架构的组织,比如PoS验证节点、PoW矿池以及全节点RPC提供商。这些节点运营商在运行关键Web3基础设施、管理加密私钥以及提供服务换取cryptocurrency等方面经验丰富。DevOps节点包括Fish、P2P Validator以及Staked等顶尖的质押池提供商。
  • 企业节点:这些节点遍布世界各地,目前正为传统的Web2经济运行后端基础架构。其中包括德国电信子公司Deutsche Telekom MMS和瑞士电信等国际电信公司,以及LexisNexis等全球化机构。
  • 社区节点:这些节点来自Chainlink社区,专注于支持生态成长,并且可靠性经过了实战检验。其中包括Chainlink Oracle Olympics的优胜者、CryptoManufaktur、LinkRiver以及NorthWest Nodes。

Chainlink节点运营商还包括火币等cryptocurrency交易平台、Tiingo等数据提供商、Kyber等DeFi应用以及其他各个社区成员。Chainlink Price Feeds集结了这些基础架构提供商的丰富经验,并协调了各方的经济激励,为智能合约开发者保障了数据更新频率以及可靠性。

3.数据传输的成本效益和去中心化水平高

为了既满足用户对精准喂价数据的需求,又优化数据上链的成本,Chainlink Price Feeds可以非常灵活地配置预言机报告传输到链上的时间和方式。具体而言,有两个参数可以决定何时在链上发布新的预言机报告:

  • 偏差阈值:资产价格相比上次更新的变动百分比。比如,假设偏差阈值设置为05%,那么当资产的全局价格相比上一次链上更新的价格涨或跌了0.05%,就会触发一次预言机更新。
  • 心跳:距离上次更新的时间间隔。比如,假设心跳阈值设置为1分钟,那么距离上次链上更新至少1分钟时就会触发一次预言机更新。

这些触发参数通常会叠加在一起,因此为了提升喂价准确性,Price Feed在市场波动较大时更新会更频繁;而为了降低成本,在市场波动较小时,更新频率会降低。每个触发参数都会基于一系列因素设定,其中包括市场需求、保障的价值大小、区块链上的gas费用、具体的用例要求以及资产的预期价格波动等。

吞吐量较高的区块链一般可以实现频繁的更新,因为Chainlink可以与每条区块链的运行速度和成本保持同步。对成本较高的区块链来说,要保证长期的经济效益以及确保预言机报告在网络极端拥堵的情况下也能正常发布到链上,降低成本就显得至关重要。正因如此,Chainlink Price Feeds在2021年初进行了一次更新,添加了链下报告(OCR)协议。Chainlink ORC利用链下计算和点对点网络,直接将运营成本降低了90%,并使传输到链上的数据量增长了十倍。

有了Chainlink OCR,每个Chainlink节点不用再分别将数据传输到链上,且每次上链都支付一次gas费。节点可以先在链下将数据聚合成一份预言机报告。然后,这份预言机报告会通过一笔交易发送到链上,其中每个节点的签名都分别经过验证,会基于所有节点上传的数据计算出一个中位数并储存在报告中。这不仅能降低运营成本,而且还能在更大程度上实现节点的去中心化,提高更新频率,降低延迟,并提升预言机算法的定制化水平。

更多关于OCR的详情,请阅读《Chainlink链下报告协议白皮书》

Chainlink Off-Chain Reporting (OCR)
Chainlink链下报告(OCR)协议可以大幅降低成本。

Chainlink Price Feeds既可以灵活配置触发链上更新的参数,又可以优化数据传输的成本效益,因此即使在市场严重波动和区块链网络极其拥堵等极端情况下也能正常运行。越是在这种情况下就越需要准确及时的预言机报告,并且保护用户资金安全。

4.多层级的深度防御策略

Chainlink Price Feeds还采用了多层级的安全和监控机制,积极防范黑天鹅事件等各种潜在问题。

链上透明度

Chainlink Price Feeds生成的每一份预言机报告都会储存在目标区块链网络中,任何人都可以查看,而且内容无法被篡改。因此,全世界任何人都可以查看Chainlink Price Feed完整的更新记录以及每次更新的准确性。另外,由于每份预言机报告都包含每个节点各自的签名和响应结果,因此还可以查看到每个节点运营商的准确性和服务水平。

DON以及各个预言机节点可以为数据带来链上透明性,因此可以打造出各种公开的仪表盘和可视化工具。比如,data.chan.link上全面展示了Chainlink Data Feeds的数据统计,其中包括最近提交的可信数据、触发参数、最近的更新事件、节点构成以及合约地址等。

Chainlink Data Feeds
data.chain.link等可视化工具可以为Chainlink Price Feeds带来透明性。

其他仪表盘和可视化工具包括Chainlink Market和Chainlink Oracle Explorer,这两个工具展示了Chainlink Price Feeds的性能数据以及节点运营商的具体信息。这两个网站分别由Chainlink生态中的独立项目负责运行。

主动监控

支持Chainlink Price Feeds的节点运营商在部署基础架构时采用了主动监控策略,以积极防范和甄别问题。其中包括采用内部分析工具来追踪节点的实时和历史性能数据,并且建立通知预警机制,当潜在问题出现时随机发出预警。

积极监控机制会追踪一系列关键的数据点和区域,比如支付gas费的通证余额、价格偏差、意外错误、无法响应以及硬件资源消耗等。除了节点的性能和可靠性之外,还会监控数据提供商的准确性和运行时间。这样,节点就可以在必要时灵活切换至其他数据提供商,以提升数据质量和可靠性。

故障转移能力和灾难恢复

Chainlink Price Feeds的节点运营商建立了故障转移机制,以提升基础架构的稳健性。这样做也是维持关键基础架构稳健运行的最佳方案。通常会按需自动部署新的Chainlink节点实例,或同时并行至少两个Chainlink节点——一个节点为主节点,其他节点是备用节点。如果主节点出现故障或无法响应,那么就会启动故障转移流程,立即启动备用节点,并且尽快恢复节点服务。

AWS Chainlink Quickstart
AWS Chainlink Quickstart部署了一个主节点和一个备用节点,实现基础架构冗余性。

不仅在Chainlink节点部署上可以实现故障转移,负责向区块链读写数据的全节点也可以实现故障转移。具体实现方式是在多个自建全节点之间部署一个负载均衡器,用付费全节点RPC提供商作为备用节点,以及采取其他各种策略来提高数据可用性。节点运营商还需部署灾难恢复系统,当黑天鹅事件发生时快速恢复。具体方案包括定期截取屏幕快照和将数据迁移到云服务器等,当数据因意外情况而丢失时可以立即恢复。

要了解更多关于Chainlink节点运营商采取的常见安全措施,请查看《安全和运行最佳实践》以及《在AWS上部署节点最佳实践》两篇Chainlink文档。

备用预言机网络和多个版本的客户端

一些区块链上的Chainlink Price Feeds会通过部署备用的预言机网络来添加额外的冗余度,通常会有一个主DON和一个备用DON。这两个DON会分别更新两份不同的参考智能合约。一个代理智能合约会连接其中一个版本的DON。在正常情况下会默认接入主DON。然而,当主DON发生问题时,代理智能合约会切换至备用DON。

Chainlink Price Feed backups
拥有主网络和备用网络的ETH/USD Chainlink Price Feed。

备用DON中的节点暂时先不升级到新版本,这样可以维持多个客户端版本 ,并且为Chainlink Price Feeds添加多一层保护,防止意外攻击。尽管Chainlink Price Feed目前为止还没有切换到过备用DON,但是在必要时也可以做到,因此可以很好地应对黑天鹅事件。

5.可以兼容任何区块链的稳健基础架构

Chainlink是可以兼容任何区块链的预言机协议,可以原生集成至众多顶尖的区块链、侧链以及layer 2 rollup链。Chainlink Price Feeds直接部署在区块链上,可以直接将数据传输至区块链,不用依赖任何其他区块链。这样,数据的传输速度和传输成本都可以与底层区块链保持同步,高吞吐量区块链上的DeFi应用可以享受更高频且更低成本的预言机更新。另外,如果某个区块链网络出现故障或网络拥堵,也不会影响其他区块链上的Chainlink Price Feeds。

Chainlink blockchain-agnostic price feeds
Chainlink Price Feeds可以原生部署在任何区块链网络中。

相比之下,其他price feed方案需要靠第三方中继层从主区块链将预言机报告桥接至二级区块链。一旦主链出现安全风险,那么数据传输也有可能会受到影响。这些非原生的价格预言机也存在速度、延迟、成本和中心化的问题,因此会增加DeFi协议的风险。

想要进一步了解Chainlink预言机网络如何兼容所有区块链,请阅读《一文读懂Chainlink的跨链兼容性:为任何区块链网络提供原生的预言机服务

6.聚合用户费用,实现规模经济

Chainlink Price Feeds采用共享付费模式,feeds由一群付费用户共同出资,付费用户也称为sponsor。多个sponsor都需要获得某个区块链上的某个数据(比如:Arbitrum上的AAVE/USD喂价),这些sponsor可以共同出钱,让节点运营商购生成预言机报告。这个模式可以形成规模经济,Chainlink Price Feed网络中每加入一个新的sponsor,都会进一步增加feed的安全预算。

Chainlink DeFi snapshot
Chainlink接入的顶尖DeFi协议截图(截止2022年1月)。

额外的安全预算也可以用于增强feed的安全保障和性能,比如可以添加更多预言机节点和数据源,以提升去中心化说平;以及提高数据更新频率,以提升数据精准性等等。Chainlink在以太坊上的ETH/USD Price Feed也实现了同样的改进,从最初的3个节点扩张至了现在31个独立节点。用户共同出资还有一个好处,就是用户可以分摊Price Feed的成本,每个人只需要付一部分费用就可以享受服务。

7.应用范围不断扩大将推动长期可持续性

Chainlink Price Feeds不仅可以维持高水平的安全性和可靠性,还可以实现长期的可持续性。随着应用范围不断扩大,用户费用也会不断增加,并支撑Price Feeds的持续运行和不断扩张。未来,会有越来越多的sponsor加入网络并付费,因此feeds最终将完全由用户费用驱动。

而新老用户会对Chainlink Price Feeds的稳健性更有信心,相信它会持续运行下去,并且拥有稳健的经济效益,推动DeFi经济的发展和应用。

Price Feeds只是冰山一角而已

Chainlink Price Feeds非常重视数据质量和预言机基础架构的安全性,因此得以发展成DeFi生态中最成熟且应用最广泛的价格预言机解决方案。另外,Chainlink Price Feeds还经过专门的设计,可以适应DeFi经济的持续发展,推动DeFi生态不断演变,最终为价值几十亿或甚至几万亿美元的全球金融市场提供后端基础架构。

喂价只是冰山一角,Chainlink目前已经发布了一系列其他的Data Feeds,并且采用了相同的安全和质量标准,比如储备金证明、天气数据、体育比赛结果以及区块链元数据等。除了数据传输之外,Chainlink还在通过DON实现创新的信任最小化链下计算,并且为Web3生态开发安全的跨链通信协议

链下数据、链下计算以及跨链通信结合在一起,将使得Chainlink成为一个全栈解决方案,为智能合约提供一站式的链下服务。如果你是一名DeFi开发者,并希望集成Chainlink Price Feeds,请查看我们的技术文档、在Discord中提问或联系Chainlink专家。

Need Integration Support?
Talk to an expert
Faucets
Get testnet tokens
Read the Docs
Technical documentation