编者按:本文来自加密谷Live,作者:Samczsun,翻译:Olivia,Odaily星球日报经授权转载。
2019年年底,我发表了一篇题为《Takingundercollateralizedloansforfunandforprofit》的文章。在其中,我描述了对以太坊DApp的经济攻击,这些攻击依赖于一个或多个Token的准确价格数据。目前已经到了2020年末,不幸的是,此后众多项目都犯了非常类似的错误,最近的例子是HarvestFinance黑客事件,导致协议用户集体损失2400万美元。虽然开发者对重入等漏洞很熟悉,但预言机操纵价格显然不是人们经常考虑的问题。相反,基于重入性的漏洞这些年有所下降,而基于价格预言机操纵的漏洞现在却在上升。因此,我决定是时候有人发表一篇关于价格预言机操纵的权威资源了。这篇文章分为三个部分。对于不熟悉这个问题的人,有一个关于预言机和预言机操纵的介绍。想要测试自己知识的人可以跳到案例研究,我们在这里回顾了过去与预言机相关的漏洞和利用。最后,我们总结了一些开发人员可以用来保护他们的项目不受预言机操纵的技术。在现实生活中预言机操纵
2015年12月1日,星期三。你的名字叫大卫-斯帕戈,你正在澳大利亚墨尔本的北京公爵演唱会上。你想亲自见见乐队,但你和后台通道之间站着两个保安,他们不可能让一些普通人直接走进去。你想知道,如果你表现得像个普通人,保安们会有什么反应。乐队的家人们肯定会被允许到乐队后台参观,所以你要做的就是让保安们相信你是他们的家人。你思考了一会儿,想出了一个只能用天才或疯子来形容的计划。迅速安排好一切后,你自信地走到保安面前。你自我介绍说是大卫-斯帕戈,PekingDuk的家人。当保安要求你提供证据时,你向他们展示了无可辩驳的证据--维基百科。
观点:Web3投资者面临巨大挑战,发展中国家仍需监管Web3:金色财经现场报道,由Coinlive、Beosin和FOMO Pay主办在新加坡举行的“在动荡的行业中讨论数字资产的未来”活动中,FOMO Pay联合创始人Zack Yang、经纬投资公司Web3投资人Zixi Zhu、Beosin董事总经理Tommy Deng和Web3SG创始人Goh Ying Hao组成小组讨论。Zack指出,Web3的投资者面临着巨大的挑战,因为投资期限真的很短;这个周期只有两到三年。此外,他还表示,Web3不是他们的目标,因为还会出现Web4甚至Web5;他们目前在Web2.5。另一方面,Ying Hao是Web3生态系统的忠实信徒,他认为我们不需要监管。他解释说,数字空间是下一个阶段,为什么要由监管来控制,因此不需要国家监管。Zixi表示,分散的跨链流动性池太小;最好是自己做流动性提供者,因为你永远不知道这个池是否肮脏。另外,最好自己做KYC和跨链,使流动性池更大。最后,Tommy总结说,如果没有监管,这对一些发展中国家来说并不理想,比如菲律宾、迪拜等。他还谈到了FTX,因为它目前还挂在每个人的嘴边;他认为,从长远来看,FTX对大众市场没有太大影响。[2022/11/25 20:45:57]
保安向你招手,让你稍作等待。五分钟过后,你在想是否应该在执法人员出现之前逃走。当你准备离开时,鲁本-斯泰尔斯走了过来并做自我介绍。你和他一起走到一个绿色房间,乐队对你的聪明才智印象深刻,最后你们一起喝了几瓶啤酒。后来,他们在自己的Facebook页面上分享了发生的事情。
观点:VanEck有信心申请比特币ETF表明SEC内部观点发生变化:过去几年,美国证交会(SEC)已经扼杀了任何追踪加密货币价格的ETF的想法,但VanEck正试图在新的一年重振这一想法。根据周三发布的一份文件,VanEck目前正试图推出自己的比特币追踪ETF。
投资咨询公司ETF Store的总裁Geraci表示:“美国证交会的所有迹象都表明,比特币ETF仍面临一场艰苦的战斗。VanEck有信心申请比特币ETF,这可能表明美国证交会内部的观点发生了变化。显然,随着事态的发展,一个关键问题是拜登将任命谁担任证交会主席。”Gainesville Coins的金融专家表示:“该ETF可以被视为比特币看涨,因为它确实扩大了比特币投资者的视野范围。”(金十)[2021/1/2 16:14:44]
什么是价格预言机?
价格预言机,大抵是指任何你可以咨询价格信息的东西。当Pam向Dwight询问SchruteBuck的现金价值时,Dwight就像一个价格预言机。
在以太坊上,一切都是智能合约,价格预言机也是如此。因此,了解价格预言机如何获取价格信息的方式更有用。一种方法是,你可以简单地从价格API或交易所获取现有的链外价格数据,并将其带到链上。另一种方式,你可以通过咨询链上去中心化交易所来计算即时价格。
这两种选择都有各自的优势和劣势。链外数据对波动的反应一般较慢,这一特点是好是坏取决于使用它的目的。不过它通常需要少数特权用户来推送链上数据,所以你必须相信他们不会变坏,不能被胁迫推送不良更新。链上数据不需要任何特权访问,并且总是最新的,但这意味着它很容易被攻击者操纵,这可能导致灾难性的后果。什么可能会出问题呢?
观点:NEAR协议抢先实施EIP-1559 但效果可能适得其反:开放性网络平台NEAR Protocol (NEAR)已于近日迎来主网。该网络目标是与以太坊竞争,争夺智能合约开发者。与此同时,NEAR也采用了EIP-1559提案,而根据加密货币研究员Hasu的分析表明,NEAR所采用的设计可能存在严重的错误,这会导致市场有强烈的动机来规避其目前的机制,从而产生适得其反的效果。EIP-1559大大改变了当前以太坊的费用模型,其带来了很多实质性的好处,其中之一是使用户更容易预测费用,几乎完全消除了出价过高的情况。乍一看,NEAR完全是复制了以太坊的EIP-1559。
例如,以太坊中每个区块的最大费用变化为12.5%,区块时间大约为12-13秒,而在NEAR中,每秒区块时间的最大变化为1%。但再细看,NEAR所实施的EIP-1559有两个大的不同:1.用户无法在协议中打赏(激励)区块生产者;2.它向智能合约支付基础费用的30%。综合考虑,NEAR的解决方案不仅不能改善结果,反而会使结果变得更糟。通过禁止向区块生产者支付费用,NEAR的解决方案会鼓励形成一个交易优先权的“黑市”。通过向应用开发者增加一个强制租金,其只会强迫应用向用户退款,甚至可能在此过程中破坏它的EIP-1559。(Deribit Insights)[2020/10/20]
让我们来看看几个案例,在这些案例中,一个集成度不高的价格预言机导致了DeFi项目的重大经济损失。SynthetixsKRWOracle故障
Synthetix是一个衍生品平台,它允许用户接触其他货币等资产。为了实现这一目标,Synthetix依靠定制的链外价格推送实现,其中从一组秘密的价格推送计算出的总价格以固定的时间间隔发布在链上。然后,这些价格允许用户针对支持的资产进行多头或空头交易。2019年6月25日,Synthetix所依赖的其中一个价格推送错误地报告了韩元的价格,比真实汇率高出1000倍。由于价格预言机系统的其他地方出现了其他的错误,这个价格被系统接受并发布在链上,在链上一个交易机器人迅速在sKRW市场上进行了买入和卖出。
观点:三大原因促使华尔街大投资者转向比特币投资:华尔街的大投资者正将其财富投入比特币,其投资将对比特币市场产生重大影响。这将对颠覆性技术产生重大影响。在2008年华尔街大投资者忽视比特币,现在却开始转向比特币投资,可能基于以下3个原因:
1. 法规增加。大投资者从不投资不理解的东西。这并不意味着他们无法理解区块链或比特币背后的概念。主要原因是比特币等加密货币不受监管,也没有中央机构。所以他们之前不想参与。而美国等国家出台税收法律法规,这是他们必须建立对投机性投资的信任的第一个原因。
2. 比特币价值趋于稳定,而且还在不断上升。2017年比特币徘徊在1.9万美元左右时,许多华尔街投资者对其产生兴趣。但2018年大跌后,他们放弃了投资比特币的想法。目前呈现出新的趋势,比特币在1.1万美元左右徘徊。随着比特币不断上涨,在比特币减半后显示出良好信号,大玩家现在想加入这场反弹。
3. COVID-19大流行的影响。每个投资者都在寻找替代投资。
大投资者转向比特币投资的主要原因是他们开始考虑比特币是可行的投资工具。但他们并没有完全信任比特币市场,只是在测试比特币的深度。一旦成为主流,比特币在未来几年内将飞涨。(Bmmagazine)[2020/9/7]
理论上讲,该机器人总共能够赚取超过10亿美元的利润,虽然Synthetix团队能够与交易员谈判,以换取漏洞奖金来返还资金。Synthetix正确地执行了预言机合约,并从多个来源提取价格,以防止交易者在链上发布价格变化之前预测价格变化。然而,一个上游价格源发生故障的孤立案例导致了毁灭性的攻击。这说明了使用链外数据的价格预言机的风险:你不知道价格是如何计算出来的,所以你的系统必须精心设计,使所有潜在的故障模式都能得到妥善处理。抵押贷款
如前所述,我在2019年9月发表了一篇文章,概述了使用依赖链上数据的价格预言机的相关风险。虽然我强烈建议阅读原帖,但它相当长,技术细节也很多,可能会让人难以消化。因此,我将在这里提供一个简化的解释。想象一下,你想把去中心化的借贷带到区块链上。允许用户存入资产作为抵押品,并借入其他资产,最高金额由他们存入的资产价值决定。假设用户想用ETH作为抵押品借入美元,ETH当前价格为400美元,抵押率为150%。如果用户存入375个ETH,相当于存入150000美元的抵押品。每1.5美元的抵押品可以借到1美元,所以他们最多可以从系统中借到10万美元。
观点:若比特币网络继续拥堵,用户将会转向其他山寨币:BitInfoCharts的数据显示,比特币的平均费用从5月20日的6.65美元降至5月25日的3.07美元,降幅近54%。中位数(最常见的费用)最高曾达到3.91美元,但现在已降至1.65美元。BCH支持者Hayden Otto表示,如果网络继续拥堵,用户将会转向其他山寨币。他认为这已经在2017年发生了。Hayden Otto认为比特币拥堵导致的费用上涨与用户转向其竞争对手之间存在直接关联。按照他的说法,这导致比特币的市场主导地位下降,而与之竞争的加密技术则出现爆炸式增长。有相当多的猜测认为,比特币的区块奖励减半可能会破坏其区块链的稳定性。Hayden Otto认为,减半确实确实对比特币的功能动态产生了这种不稳定的影响,尽管这种情况已经开始逐渐消除。他说,在达到今年的最高水平80,000之后,最近在比特币内存池中进行的未经确认的交易数量稳定在20,000以上。Hayden Otto表示,这是一个迹象,表明比特币网络在最近几次减半后的经济变化后正在恢复稳定。(Cointelegraph)[2020/5/27]
但当然,在区块链上,并不是简单地宣布1个ETH值400美元那么简单,因为一个恶意用户可以简单地宣布1个ETH值1000美元,然后从系统中拿走所有的钱。因此,对于开发者来说,想要获得预言机所读取的最近价格是很有诱惑力的,比如Uniswap、Kyber或其他去中心化交易所的当前现货价格。
乍一看,这似乎是正确的做法。毕竟,只要你想买入或卖出ETH,Uniswap的价格总是大致正确的,因为任何偏差都会被套利者迅速纠正。然而,事实证明,在交易过程中,去中心化交易所的现货价格可能会出现较大的错误,如下例所示。考虑一下Uniswap的储备金是如何运作的。价格是根据储备持有的资产数量计算的,但随着用户在ETH和美元之间进行交易,储备持有的资产会发生变化。如果一个恶意用户在从你的平台贷款前后进行交易怎么办?在用户贷款之前,他们用2000000美元购买了5000个ETH。Uniswap交易所现在计算出的价格是1ETH=1,733.33美元。现在,他们的375个ETH可以作为价值433,333.33美元资产的抵押品,他们借到了这些资产。最后,他们用5,000ETH换回他们原来的2,000,000美元,从而重置价格。最终的结果是,你的贷款平台只是让用户在没有投入任何抵押物的情况下,多借了333,333.33美元。
这个案例研究说明了使用去中心化交易所作为价格预言机时最常见的错误--攻击者在交易过程中几乎完全控制了价格,而试图准确地读出这个价格就像在秤上读出它完成结算前的重量一样。你很可能会得到错误的数字,根据情况,可能会让你损失很多钱。SynthetixMKR操纵
2019年12月,Synthetix又遭遇攻击,原因是价格预言机操纵。这次值得注意的是,它跨越了链上价格数据和链下价格数据之间的障碍。Reddit用户u/MusaTheRedGuard观察到,一名攻击者针对sMKR和iMKR进行了一些非常可疑的交易。攻击者首先通过买入sMKR购买了MKR的多头头寸,然后从UniswapETH/MKR交易对中购买了大量的MKR。等待一段时间后,攻击者将他们的sMKR卖出换成iMKR,并将他们的MKR卖回Uniswap。然后,他们重复这个过程。在幕后,攻击者通过Uniswap进行的交易让他们可以随意改变Synthetix上MKR的价格。这很可能是因为Synthetix所依赖的链外价格推送实际上是依赖于MKR的链上价格,没有足够的流动性让套利者将市场重新设置回最佳状态。这个事件说明,即使你认为自己使用的是链下价格数据,但实际上你可能仍然在使用链上价格数据,你仍然可能暴露在使用这些数据的复杂性之中。bZx黑客
2020年2月,bZx在几天内被黑了两次,损失约1百万美元。你可以在这里找到palkeo写的关于两次黑客的优秀技术分析,但我们只看黑客的第二次攻击。在第二个黑客攻击中,攻击者首先用ETH购买了Kyber上几乎所有的sUSD。然后,攻击者自己从Synthetix购买了第二批sUSD,并将其存放在bZx上。攻击者用sUSD作为抵押,借到了他们允许的最大数额的ETH。然后他们将sUSD卖回给Kyber。如果你一直在关注,你会认识到这本质上是相同的抵押贷款攻击,但使用不同的抵押品和不同的去中心化交易所。yVaultBug
2020年7月25日,我向yEarn报告了一个关于他们新的yVault合约推出的bug。我将在下面简单总结一下。yVault系统允许用户存入Token并在上面赚取收益率,而不需要自己管理。在内部,金库会跟踪yVaultToken的总发行量以及存入的基础Token总量。单个yVaultToken的价值由铸造的Token与存入的Token的比例给出。金库赚取的任何收益都会分摊到所有已发行的yVaultToken(因此,也就分摊到所有yVaultToken持有人身上)。第一个yVault允许用户通过向BalancerMUSD/USDC池提供流动性来赚取USDC的收益率。当用户向Balancer池子提供流动性时,他们会收到BPT作为回报,BPT可以兑换池子的一部分。因此,yVault根据可以用其BPT赎回的MUSD/USDC的数量来计算其持有的价值。这似乎是正确的实现方式,但不幸的是,与之前给出的原理相同--交易过程中Balancer池的状态并不稳定,不能被信任。在这种情况下,由于Balancer选择的价格曲线,用户从USDC换成MUSD时,不会得到1:1的汇率,但事实上会在池子里留下一些MUSD。这意味着BPT的价值可以暂时被放大,这使得攻击者可以随意操纵价格,随后将金库耗尽。这一事件表明,价格预言机并不总是清晰的反映价格数据,开发者需要警惕他们摄取的是什么样的数据,并考虑这些数据是否能被无权用户轻易操纵。对于收益率耕作的黑客攻击
2020年10月26日,一个不知名的用户入侵了流动性挖矿的池子,使用的技术你现在可能已经猜到了。你可以在这里阅读官方的事后报告,但我再一次为你总结一下:攻击者通过执行交易将曲线池中USDC的价格虚化,以降低的价格进入耕作池,通过逆转之前的交易恢复价格,并以更高的价格退出耕作池。这导致了超过3300万美元的损失。我该如何保护自己?
现在,我希望你已经学会了认识到共同点--你使用价格预言机并不总是安全的,如果你不遵循适当的预防措施,攻击者可能会攻击你的协议,将你的钱全部发送给他们。虽然没有一个万能的修复方法可以参考,但这里有一些过去对其他项目有效的解决方案。也许其中一个也会适用于你。寻找有流动性充足的池子
就像跳入游泳池的浅滩一样,跳入流动性不足市场是痛苦的,可能会导致重大的开支,这将永远改变你的生活。在你考虑你打算使用的具体价格预言机的复杂性之前,请考虑该代币的流动性是否足以保证与你的平台整合。一鸟在手,胜过两鸟在林
在Uniswap上看到潜在的汇率可能会令人着迷,但在你真正点击交易和代币放在你的钱包里之前,并不意味着那是最终价格。同样,确定两种资产之间汇率的最好方法是直接交换资产。这种方法很好,因为没有回扣,也没有万一。但是,对于借贷平台等协议来说,可能就不适用了,因为这些协议是需要持有原始资产的。去中心化的预言机
有一种方法可以总结出依赖链上数据的预言机的问题,那就是它们有点太新潮了。既然如此,为什么不引入一点人为的延迟呢?写一个合约,它可以用Uniswap这样的去中心化交易所的最新价格来更新自己,但只有当一小部分特权用户提出请求时才会更新。现在即使攻击者可以操纵价格,他们也无法让你的协议真正使用它。这种方法实现起来真的很简单,而且是速战速决,但也有一些缺点--在链路拥堵的时候,你可能无法像你希望的那样快速更新价格,而且你仍然容易受到三明治攻击。另外,现在你的用户需要相信你真的会保持价格更新。延迟防御
操纵价格预言机是一个时间敏感的操作,因为套利者总是在观察,并希望有机会优化任何次优市场。如果攻击者想把风险降到最低,他们会希望在一次交易中完成操纵价格预言机所需的两次交易,这样就不会有套利者在中间跳跃的机会。作为协议开发者,如果你的系统支持的话,可能只需要实现用户进入和退出系统之间短至1个block的延迟就可以了。当然,这可能会影响到可组合性,矿工与交易员的合作正在上升。在未来,不良行为者可能会在多个交易中进行价格预言机操纵,因为他们知道与他们合作的矿工会保证没有人可以跳到中间,从他们的收益中分一杯羹。时间加权平均价格(TWAP)
UniswapV2引入了一个TWAP预言机,供链上开发者使用。文档中更详细地介绍了该预言机提供的具体安全保障,但一般来说,对于长期没有链上拥堵的大池子来说,TWAP预言机对预言机操纵攻击有很强的抵抗力。不过,由于其实现的性质,在市场波动较大的时刻,它的响应速度可能不够快,而且只适用于链上已经有流动性代币的资产。M-of-N喂价
有时候人们会说,如果你想把一件事做好,你就自己去做。如果你召集N个值得信赖的朋友,让他们提交他们认为合适的链上价格,最好的M个答案就成了当前的价格,会怎么样?如今很多大型项目都在使用这种方法。Maker运行了一组由可信实体运营的价格源,Compound创建了Open预言机,并拥有Coinbase等报告器,Chainlink聚合了Chainlink运营商的价格数据,并在链上公开。只要记住,如果你选择使用这些解决方案之一,你现在已经将信任委托给第三方,你的用户也必须这样做。要求报告人手动在链上发布更新也意味着,在市场波动大、链上拥堵的时候,价格更新可能无法及时完成。结论
价格预言机是DeFi安全性的一个重要组成部分,但往往被忽视。安全地使用价格预言机是很难的,而且有很多方法可以让您和您的用户都吃亏。在这篇文章中,我们介绍了过去操纵价格预言机的例子,并确定了在交易中间读取价格信息可能是不安全的,可能会导致灾难性的财务损失。我们还讨论了一些其他项目过去用来打击价格预言机操纵的技术。不过最后,每一种情况都是独特的,你可能会发现自己不确定自己是否正确使用了价格预言机。如果是这种情况,请随时联系我们寻求建议!
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。