译者注:价格预言机是去中心化金融的重要一环,然而,正是这一环节中可能存在的漏洞,导致很多DeFi项目遭受了灾难性损失,有的损失甚至达到了数千万美元,那这些攻击到底是怎么回事?又怎样去预防它们?在这篇文章中,知名白帽黑客、Paradigm研究合伙人Samczsun分析了5个关于价格预言机攻击的现实案例,并总结了6种抵御这类攻击的方法。
2019年末,我发表了一篇题为“利用低抵押获利”的帖子,在这篇文章中,我描述了一种针对以太坊dApp的经济攻击,这种攻击依赖于一个或多个代币的准确价格数据。现在是2020年末,不幸的是,很多项目都犯了类似的错误,最近的例子是HarvestFinance,其遭遇了黑客攻击,导致协议用户集体损失达3300万美元。
虽然开发者们已熟悉了可重入等漏洞,但预言机操纵显然不是经常被考虑的问题。事实上,基于可重入漏洞的攻击,在过去几年中有所下降,而基于价格预言机操纵的漏洞利用率,现在正在上升。因此,我认为是时候发表一些关于价格预言机操纵的确定性资料了。
这篇文章分为三个部分,在第一部分,我们会对那些不熟悉这一主题的人,对预言机和预言机操纵进行一个简单介绍。而第二部分,则是一些案例研究,那些想要测试自己知识的人,可以跳过它们。最后,我们总结了一些开发者可用来保护他们的项目不受预言机操纵的技术。
现实生活中的预言机操纵
时间回到2015年12月1日,假设你现在的身份是DavidSpargo,现在你正在澳大利亚墨尔本的PekingDuk演唱会,你想去后台休息室亲自见见这支乐队的成员,但有两名保安拦在你的面前,他们不可能让普通人直接进去。
你想知道,如果你表现得像PekingDuk乐队的亲属,保安会有什么反应。因为家庭成员肯定会被允许在后台访问乐队,所以你所要做的就是让保安相信你是乐队的亲戚。你想了一会儿,想出了一个计划,而这个计划只能被描述为“天才般”或“绝对疯狂的”。
在迅速安排好一切之后,你自信地走到保安面前。你自我介绍自己是DavidSpargo,是PekingDuk乐队的家庭成员,当警卫要求你提供证据时,你给他们看无可辩驳的证据——维基百科。
孙宇晨对话MarketAcross执行合伙人:加密货币更多的机会在于解决现实问题:7月25日消息,WebX大会在日本东京举行,波场TRON创始人、火币Huobi全球顾问委员会成员孙宇晨受邀出席,并与MarketAcross 执行合伙人Itai Elizur进行了对话。双方就加密领域热点话题进行了探讨和回应,孙宇晨表示,加密货币需要为全球用户服务,而不仅仅是行业内的交易者。他相信加密货币未来会像支付宝一样普及,有很多机会可以挖掘,且不仅限于基础设施。
孙宇晨认为,目前更多的机会在于实际应用和解决现实问题层面。他对加密货币行业的发展前景充满信心,同时他表示愿意倾听新人观点,并希望通过充分交流和合作,共同推动行业的发展。[2023/7/25 15:57:39]
警卫挥手让你过去,让你稍等一下。一分钟过去了,两分钟过去了……五分钟后,你想知道你是否应该在执法人员出现之前逃跑。就在你准备放弃的时候,PekingDuk乐队成员ReubenStyles走了过来,然后你和他一起走进休息室,乐队对你的聪明才智印象深刻,最后你们一起喝了几杯啤酒,再后来,他们在自己的Facebook页面上分享了当晚发生的事情。
什么是价格预言机?
价格预言机,大可指你向其咨询价格信息的任何东西。当帕姆向德怀特询问一Schrute元的现金价值时,德怀特就扮演了一个价格预言机。
在以太坊上,一切都是智能合约,价格预言机也是如此。因此,区分价格预言机获取价格信息的方式更为有用。在一种方法中,你可以简单地从价格API或交易所获取现有的链外价格数据,并将其带到链上。而另一类方式,你可以通过咨询链上去中心化交易所来计算即时价格。
赵长鹏:正在与 50 多家加密公司进行收购对话:金色财经消息,币安首席执行官赵长鹏在接受采访时表示,目前持有大量现金储备,正在积极寻求支持陷入困境的加密公司。赵长鹏强调并非所有项目都值得拯救,不想救助管理不善的公司,希望帮助大多数有一些流动性紧缩的公司度过这个周期,目前正在与 50 多家加密公司进行收购对话。(BlockWorks)[2022/7/3 1:46:59]
这两种选择各有利弊。链外数据对波动性的反应通常较慢,这是好是坏,取决于你试图使用它的目的,而这种方式通常需要少数特权用户将数据推送到链上,因此你必须相信这些人不会做恶,也不会被迫推送坏的更新。而链上数据不需要任何特权访问,并且总是最新的,但这意味着它很容易被攻击者操纵,从而导致灾难性的失败。
那可能出现什么问题?
让我们来看几个关于价格预言机集成问题导致DeFi项目重大财务损失的例子。
1、SynthetixsKRW预言机故障
Synthetix是一个衍生品平台,它允许用户访问其他货币等资产。为了实现这一目标,当时的Synthetix依赖于一个定制的链外喂价实现,其喂价数据以固定的时间间隔发布到链上。这些价格允许用户对支持的资产做多或做空。
2019年6月25日,Synthetix依赖的一份喂价报告称,韩元的价格比真实汇率高出1000倍。由于价格预言机系统中其他地方的错误,这一价格被系统接受并发布到链上,随后一个交易机器人迅速进出这个sKRW市场。
尽管Synthetix团队能与交易者协商,让其返还资金,但总的来说,这个机器人有能力赚取超过10亿美元的利润。
Synthetix正确地执行了价格预言机,并从多个来源获取价格,以防止交易者在价格变化发布到链上之前预测价格变化。然而,一个孤立的上游喂价故障导致了一次毁灭性的攻击。这说明了使用链外数据的价格预言机的风险:你不知道价格是如何被计算的,因此你的系统必须经过仔细设计,以便正确处理所有潜在的失败模式。
Ripple首席执行官希望与SEC新领导层进行对话:4月1日消息,Ripple首席执行官Brad Garlinghouse在最近接受彭博社采访被问及是否有和解的可能性时,他表示希望与SEC新领导层进行对话。Garlinghouse坚持认为,XRP交易了八年,SEC前主席Jay Clayton提出的诉讼毫无道理。详情见原文链接。(u.today)[2021/4/1 19:36:13]
低抵押借贷
如上面提到的,我在2019年9月发表了一篇文章,其中概述了使用链上数据价格预言机的相关风险。虽然我强烈建议你阅读这篇文章,但是它的篇幅很长,技术细节也很繁重,这可能会让人难以理解。因此,我会在这里提供一个简化的解释。
想象一下,你把去中心化的借贷放到区块链上。用户可以将资产作为抵押品存放,也可以借入其他资产,而能够借入的最高金额由他们存入的资产价值决定。假设一个用户用ETH作为抵押品,然后借入USD,目前ETH的价格为400美元,抵押率为150%。
如果用户存入375ETH,则其存入的抵押品价值15万美元,根据每1.5美元抵押品可借入1美元的规则,那么该用户最多可以从系统那借款10万美元。
当然,在区块链上,这并不像简单地声明1ETH值400美元那么简单,因为恶意的用户可以简单地声明1ETH价值1000美元,然后从系统中拿走所有的钱。因此,开发者很容易会去接入像Uniswap、Kyber或其他去中心化交易所的现货价格。
乍一看,这似乎是正确的做法。毕竟,无论何时你想买或卖出ETH,Uniwap的价格总是大致正确的,因为套利者很快就会纠正任何偏差。然而,事实证明,去中心化交易所的即期价格在交易期间可能会非常不正确,如下面的示例所示。
火币论坛对话陈志武教授:比特币在支付领域的重要性得到提升:新加坡时间12月30日下午,耶鲁大学金融学终身教授,香港大学经济学讲席教授,香港大学亚洲环球研究所所长陈志武教授做客火币论坛,以“回顾与展望,从疫情到复苏”为主题,与火币商务副总裁Ciara探讨在疫情的持续影响下,企业该如何进行数字化转型。
陈志武认为2020年在疫情的影响之下,数字化给人们的生活带来了全新的体验, 就交易方式而言,2020年比特币在支付领域的重要性得到提升,包括其他数字货币或数字支付形式,已经渐渐成为一种标准。“现在大家都离不开数字货币,出门也无需携带大量纸币,这是一种全新的交易和合作方式,也再次体现出数字经济的重要性。”陈志武表示。
但陈志武同时提醒,“信任”问题依然是当前区块链和加密货币亟待解决的一大挑战。“我们必须应对这一新的挑战,找到解决方案,从而促进这种新的数字化生活方式和工作方式的持续发展。”[2020/12/31 16:08:56]
思考一下Uniswap的存储功能,价格以储备资产金额为基础计算,但由于用户在ETH和USD之间交易,储备所持有的资产会发生变化。如果恶意用户在从平台贷款之前和之后执行交易,会怎样?
在用户贷款之前,他们以200万USD的价格购买了5000ETH,现在,Uniswap交易所计算的价格为1ETH=1,733.33USD?。现在,他们的375个ETH可以作为抵押,并借取最高433,333.33美元的资产。最后,他们将200万美元换回5000ETH,这将重置价格,而你的借贷平台则损失了333,333.33美元。
这个案例研究,说明了将去中心化交易所用作价格预言机时遇到的最常见的错误——攻击者在交易过程中几乎完全控制了价格,而试图准确读取该价格就像在完成结算之前先读取磅秤上的重量一样。
你可能会得到错误的数字,根据具体情况,这可能会花费你很多钱。
Dogecoin创始人将小说对话与区块链技术相结合:据CCN消息,Dogecoin的创始人Jackson Palmer将要创建一个Twitter机器人,这款机器人将会通过区块链技术从小说《五十度灰》中随机抽取一些短语,从而创造出幽默、不连贯的句子以此来取悦粉丝。[2018/7/8]
2、SynthetixMKR操纵
2019年12月,Synthetix再次遭受价格预言机操纵攻击,值得注意的是,这次攻击跨越了链上数据和链外数据的界限。
用户名为u/MusaTheRedGuard的Reddit用户观察到,一名攻击者对sMKR和iMKR进行了一些非常可疑的交易。攻击者首先通过购买sMKR来做多MKR,然后从UniswapETH/MKR资产交易对中购买大量MKR。在等待了一段时间后,攻击者将他们的sMKR换成了iMKR空头仓位,并将他们的MKR卖回Uniswap。然后他们重复了这个过程。
在幕后,攻击者通过Uniswap进行的交易,允许他们随意移动Synthetix上MKR的价格。这很可能是因为Synthetix所依赖的链外喂价,实际上依赖于MKR的链上价格,而且套利者没有足够的流动性来将市场重新设置到最佳条件。
这起事件说明了一个事实:即使你认为自己在使用链外价格数据,但实际上你可能仍然在使用链上价格数据,而且你可能仍然会因为使用这些数据,而遭遇到复杂的攻击。
3、bZx黑客事件
2020年2月,bZx在几天内遭受两次黑客攻击,损失价值约为100万美元。你可以这里找到由palkeo编写的关于两次黑客攻击的优秀技术分析文章,但我们在这只关注第二次攻击。
在第二次黑客攻击中,攻击者首先使用ETH购买了Kyber上几乎所有的sUSD,然后,攻击者从Synthetix平台购买了第二批sUSD,并将其存放在bZx上。利用sUSD作为抵押品,攻击者借用了他们被允许的最大数量的ETH,然后他们把sUSD卖回给了Kyber。
如果你注意到了,你会发现,这本质上是同样的低抵押借贷攻击,但使用了不同的抵押品和不同的去中心化交易所。
4、yVault漏洞
2020年7月25日,我报告了一个关于yEarn推出的新yVault合约的漏洞,你可以在这里读到关于这个漏洞的官方公告,但我将在下面简要总结一下。
yVault系统允许用户在不需要自己管理的情况下存入代币并赚取收益。在内部,这个金库跟踪铸造的yVault代币的总金额以及存放的基础代币的总金额。单个yVault代币的价值,由铸造的代币与存入的代币的比率来确定。金库获得的任何收益,都会分摊到所有铸造的yVault代币上。
第一个yVault允许用户通过向BalancerMUSD/USDC储备池提供流动性来获得USDC收益。当用户向Balancer提供流动性时,他们会收到BPT作为凭证。因此,yVault根据其BPT可赎回的MUSD/USDC金额计算其持有的价值。
这似乎是正确的实现,但不幸的是,与前面提到的原理相同——交易期间,Balancer池的状态是不稳定的,因此不可信任。在这种情况下,由于Balancer选择的联合曲线,在USDC和MUSD之间进行交换的用户将不会获得1:1的汇率,但实际上会在储备池中留下一些MUSD。这意味着BPT的值可以暂时膨胀,这使得攻击者可以随意操纵价格并随后耗尽金库。
这一事件表明,价格预言机并不总是可靠的,开发者需要警惕他们正在摄取什么样的数据,并考虑这些数据是否可以被非特权用户轻易操纵。
5、HarvestFinance黑客攻击
2020年10月26日,一位匿名用户用一种技术攻击了HarvestFinance储备池。你可以在这里阅读官方的分析报告,但我要再次为你总结下:攻击者通过执行交易使得Curve池中的USDC价格降低,然后以降低的价格进入Harvest池子,通过逆转先前的交易恢复价格,并以更高的价格退出Harvest池子。这最终导致用户损失了3300万美元。
如何自我保护?
现在,我希望你了解了价格预言机操纵攻击,此外,如果你不采取适当的防御措施,攻击者可能会你的协议,让其乖乖把钱交给他们。虽然目前并没有适用于所有情况的解决方案,但还是有一些曾在其他项目中奏效的解决方案,也许其中一款也会适合你。
建议1:不跳入浅市场
就像跳入游泳池的浅水区一样,跳入一个浅市场也是痛苦的,这可能会导致巨大的损失,从而永远改变你的生活。在考虑具体的价格预言机计划之前,先考虑一下代币的流动性是否足以保证与你的平台集成。
建议2:一鸟在手胜过两鸟在林
看到Uniswap上的潜在汇率可能会让人着迷,但在你真正点击“trade”按钮,并将代币放到钱包中之前,一切都不会是最终的。同样,要确定两种资产之间的汇率,最好的方法就是直接交换资产。这种方法很好,因为没有撤消,也没有假设。然而,对于贷款平台这样的协议来说,它可能不起作用,因为这些协议需要保留原始资产。
建议3:几乎去中心化的预言机
总结依赖链上数据预言机所存在的一种问题是,它们的更新有点过快。如果是这样,为什么不引入一点人为的延迟呢?写一个合约,用去中心化交易所的最新价格更新自己,但需要通过少数特权用户。现在,即使攻击者可以操纵价格,他们也无法利用这一点。
这种方法实现起来很简单,而且很容易见效,但它也有一些缺点——在区块链拥堵的时候,你可能无法按自己希望地那样快速更新价格,而且你仍然容易受到三明治攻击。另外,现在,你的用户还需要信任你会保持价格的更新。
建议4:增加最短延迟
操纵价格预言机是一种对时间敏感的操作,因为套利者总是在观察,并希望有机会优化任何次优市场。如果攻击者想把风险降到最低,他们会想在单笔交易中完成操纵价格预言机所需的两笔交易,这样套利者就没有机会跳到中间。作为协议开发者,如果你的系统支持它,那么只需要在用户进入和退出系统之间实现一个最短的延迟就足够了。
当然,这可能会影响可组合性,并且矿工与交易者的合作正在增加。在未来,不良行为者有可能在多笔交易中执行价格预言机操纵,因为他们知道矿工将确保没有人能够跳入中间并从中获利。
建议5:时间加权平均价格
UniswapV2引入了一种时间加权平均价格预言机,以供链上开发者使用。这篇文档详细地介绍了这种预言机提供的确切安全保证,一般来说,对于长时间没有链拥堵的大型资产池,这种TWAP预言机对预言机操纵攻击具有很强的抵御能力。然而,由于其实施的性质,它可能无法对市场剧烈波动的时刻做出足够快的反应,而且它只适用于具有链上流动性的代币资产。
建议6:M-of-N报告者机制
有时候人们会说,如果你想把事情做好,就自己去做。那如果你把N个值得信赖的朋友集合起来,让他们提交他们认为正确的链上价格,然后取M个最好的答案汇聚成当前价格,那会怎么样呢?
如今,很多大型项目都在使用这种方法:Maker运行一组由可信实体操作的喂价,Compound创建了OpenOracle,并有像Coinbase这样的预言机报价者,Chainlink聚合了来自Chainlink运营商的价格数据,并在链上公开了这些数据。请记住,如果你选择使用这些解决方案之一,那么你现在已经将信任委托给了第三方,而你的用户也必须这样做。要求报价者在链上手动发布最新信息也意味着,在市场高度波动及区块链拥堵的时期,价格更新可能无法按时完成。
结论
价格预言机对于DeFi安全性而言,是一个重要,但经常被忽视的组成部分。安全地使用价格预言机是很困难的,有很多方法可以让你以及你的用户都措手不及。在这篇文章中,我们讨论了一些价格预言机被操纵的例子,并确定在交易过程中读取价格信息可能是不安全的。我们还讨论了其他项目在过去采用的,用于抵御预言机价格操纵的一些技术。最后,每一种情况都是独一无二的,你可能会发现自己不确定是否正确地使用了价格预言机。如果是这种情况,请随时寻求建议。
特别感谢DanRobinson和GeorgiosKonstantopoulos审阅了这篇文章。
Ethereum生态的DeFi发展之路听说过DeFi的朋友,想必都知道Uniswap,它的AMM模式给DeFi的发展奠定了良好的基础.
链捕手消息,区块链游戏平台MOBOX目前总质押金额突破2亿美元,总共打开Chests:超过44000个,最近24小时总交易数为3054,总成交价格为256万美元,7天总成交价格为1018万美元.
在基础设施逐渐完善、DeFi应用日益繁荣的当下,加密世界对Web3.0充满期待,但Web3.0的建设需要各种各样的基础设施与生态应用.
本文于2020年8月24日发于非小号网站,原文标题为《Aragon(ANT)的经济学》,作者为区块链投资机构Placeholder合伙人—撰文:ChrisBurniske在过去三年中.
撰文:KevinYang、CaraCao、LeoZhu、DamonShen,均就职于数字资产管理公司IDEG自年初以来,一场突如其来的疫情席卷全球.
链捕手消息,AlphaFinanceLab与CreamFinance发表联合声明,公开此前遭受攻击被盗资金的处理方式.