智能合约只知道自己所在区块链上的信息。它无法查询 ETH 的价格,也无法查询金库份额的价值。然而借贷市场需要时刻知道其抵押品值多少。预言机把这个封闭的世界与它所依赖的数据连接起来,这使它们成为不可或缺的基础设施,也成为频繁遭受攻击的目标。
价格预言机如何运作
大多数价格预言机从交易所和数据提供方等众多来源收集价格,合成为一个数字,并发布到链上。常见的交付模式有两种:
- 推送式数据源按计划,或在价格变动超过设定阈值时,向链上写入新价格。
- 拉取式数据源把签名价格保存在链下,由用户或协议在需要的时刻,把最新价格带到链上。
Chainlink 和 RedStone 是广泛使用的预言机服务商,两者都提供推送和拉取两种模式。
市场价格与基本面价格
市场价格数据源报告的是代币的成交价格。基本面价格数据源报告的是代币依据其底层资产的价值,例如根据金库持仓计算出的金库代币份额价值。这一区别对抵押品很重要。如果金库代币在流动性稀薄的市场中短暂低于其底层价值交易,市场价格数据源会把借贷头寸推向清算,而基本面价格数据源则不会。代价是,基本面价格数据源对市场信心真正丧失的反应更慢。
预言机如何失灵
- 操纵。攻击者通过闪电贷借入一大笔资金,在预言机读取的流动性稀薄的流动性池中推动价格,以虚高的价格借款,然后离开,给协议留下坏账。
- 数据过时。如果数据源在快速行情中停止更新,合约就会按旧价格行事。
- 来源有误。如果足够多的来源报告了错误价格,合成出的数字也会出错。
- 配置错误。小数位或资产配置错误的数据源,可能瞬间导致整个市场定价错误。
一个简单示例
某借贷市场接受一种代币,其价格来自单一的小型资金池。攻击者在该池中大量买入,在一笔交易内把报告价格推高一倍,然后把该代币作为抵押品存入,以其为抵押借出其他资产,再任由价格回落。市场最终持有的抵押品,只值其借出金额的一半。如果数据源综合多个来源并跨时间取值,就能抵御这种操纵。
风险与局限
没有完美的预言机设计:每个数据源都要在速度、成本、准确性和抗操纵能力之间取舍。货币市场通过保守的贷款价值比上限、对单一资产可供应或借入数量的上限,以及对异常价格的暂停机制,来弥补其余的风险。需要在链之间传递的数据会带来自身的风险,这也是预言机网络同时提供 Chainlink CCIP 等跨链消息传递服务的原因。
Tori Finance 如何运用这一概念
trUSD 和 strUSD 的 RedStone 基本面价格数据源已在以太坊上线。基本面价格数据源依据代币的底层资产报告其价值,而不是依据它在某一个市场中的交易价格。
常见问题
什么是区块链预言机?
一种把资产价格等区块链外部数据带到链上、供智能合约使用的服务。
什么是预言机操纵攻击?
一种推动预言机报告价格的攻击,通常借助闪电贷在流动性稀薄的市场中进行,使协议以虚高的抵押品放出过多贷款,或不公平地清算头寸。
什么是基本面价格数据源?
一种依据代币的底层资产报告其价值的数据源,例如根据金库持仓计算出的金库份额价值,而不是它在市场上的交易价格。
相关术语
抵押品
抵押品是为贷款或代币提供支持而质押的资产,以便在出现问题时弥补损失。在 DeFi 中,抵押品的类型、质量和存放位置与其数量同样重要,当其价值跌得过多时,智能合约可以自动将其卖出。
货币市场
在传统金融中,货币市场是借入和借出短期债务的市场。在 DeFi 中,这个词通常指一种借贷协议:用户供应资产以获取收益,其他人以抵押品借款,收益率随供求变化。
Chainlink CCIP
Chainlink CCIP(跨链互操作协议,Cross-Chain Interoperability Protocol)是在区块链之间发送消息和代币的标准。代币发行方可以原生采用它,让同一种代币跨链转移,而不是被第三方跨链桥发行的封装副本所取代。
流动性池
流动性池是一个持有两种或多种代币、供交易者兑换的智能合约,价格由公式而非订单簿决定。流动性提供者存入代币并分得一部分交易手续费,作为回报,他们承担价格风险和智能合约风险。
参考来源
- ethereum.org: Oraclesethereum.org
- Chainlink: What is a blockchain oracle?chain.link
- RedStone documentationdocs.redstone.finance
由 Tori Finance 团队撰写。不构成投资建议。收益会有波动,资金存在风险。