价格预言机为什么对DeFi如此重要?( 四 )


我该如何保护自己?
现在 , 我希望你已经学会了认识到共同点--你使用价格预言机并不总是安全的 , 如果你不遵循适当的预防措施 , 攻击者可能会攻击你的协议 , 将你的钱全部发送给他们 。 虽然没有一个万能的修复方法可以参考 , 但这里有一些过去对其他项目有效的解决方案 。 也许其中一个也会适用于你 。
寻找有流动性充足的池子
就像跳入游泳池的浅滩一样 , 跳入流动性不足市场是痛苦的 , 可能会导致重大的开支 , 这将永远改变你的生活 。 在你考虑你打算使用的具体价格预言机的复杂性之前 , 请考虑该代币的流动性是否足以保证与你的平台整合 。
一鸟在手 , 胜过两鸟在林
在Uniswap上看到潜在的汇率可能会令人着迷 , 但在你真正点击交易和代币放在你的钱包里之前 , 并不意味着那是最终价格 。 同样 , 确定两种资产之间汇率的最好方法是直接交换资产 。 这种方法很好 , 因为没有回扣 , 也没有万一 。 但是 , 对于借贷平台等协议来说 , 可能就不适用了 , 因为这些协议是需要持有原始资产的 。
去中心化的预言机
有一种方法可以总结出依赖链上数据的预言机的问题 , 那就是它们有点太新潮了 。 既然如此 , 为什么不引入一点人为的延迟呢?写一个合约 , 它可以用Uniswap这样的去中心化交易所的最新价格来更新自己 , 但只有当一小部分特权用户提出请求时才会更新 。 现在即使攻击者可以操纵价格 , 他们也无法让你的协议真正使用它 。
这种方法实现起来真的很简单 , 而且是速战速决 , 但也有一些缺点--在链路拥堵的时候 , 你可能无法像你希望的那样快速更新价格 , 而且你仍然容易受到三明治攻击 。 另外 , 现在你的用户需要相信你真的会保持价格更新 。
延迟防御
操纵价格预言机是一个时间敏感的操作 , 因为套利者总是在观察 , 并希望有机会优化任何次优市场 。 如果攻击者想把风险降到最低 , 他们会希望在一次交易中完成操纵价格预言机所需的两次交易 , 这样就不会有套利者在中间跳跃的机会 。 作为协议开发者 , 如果你的系统支持的话 , 可能只需要实现用户进入和退出系统之间短至1个block的延迟就可以了 。
当然 , 这可能会影响到可组合性 , 矿工与交易员的合作正在上升 。 在未来 , 不良行为者可能会在多个交易中进行价格预言机操纵 , 因为他们知道与他们合作的矿工会保证没有人可以跳到中间 , 从他们的收益中分一杯羹 。
时间加权平均价格(TWAP)
Uniswap V2引入了一个TWAP预言机 , 供链上开发者使用 。 文档中更详细地介绍了该预言机提供的具体安全保障 , 但一般来说 , 对于长期没有链上拥堵的大池子来说 , TWAP预言机对预言机操纵攻击有很强的抵抗力 。 不过 , 由于其实现的性质 , 在市场波动较大的时刻 , 它的响应速度可能不够快 , 而且只适用于链上已经有流动性代币的资产 。
M-of-N 喂价
有时候人们会说 , 如果你想把一件事做好 , 你就自己去做 。 如果你召集N个值得信赖的朋友 , 让他们提交他们认为合适的链上价格 , 最好的M个答案就成了当前的价格 , 会怎么样?
如今很多大型项目都在使用这种方法 。 Maker运行了一组由可信实体运营的价格源 , Compound创建了Open预言机 , 并拥有Coinbase等报告器 , Chainlink聚合了Chainlink运营商的价格数据 , 并在链上公开 。 只要记住 , 如果你选择使用这些解决方案之一 , 你现在已经将信任委托给第三方 , 你的用户也必须这样做 。 要求报告人手动在链上发布更新也意味着 , 在市场波动大、链上拥堵的时候 , 价格更新可能无法及时完成 。
结论
价格预言机是 DeFi 安全性的一个重要组成部分 , 但往往被忽视 。 安全地使用价格预言机是很难的 , 而且有很多方法可以让您和您的用户都吃亏 。 在这篇文章中 , 我们介绍了过去操纵价格预言机的例子 , 并确定了在交易中间读取价格信息可能是不安全的 , 可能会导致灾难性的财务损失 。 我们还讨论了一些其他项目过去用来打击价格预言机操纵的技术 。 不过最后 , 每一种情况都是独特的 , 你可能会发现自己不确定自己是否正确使用了价格预言机 。 如果是这种情况 , 请随时联系我们寻求建议!