Harvest事件全回顾和闪电贷科普
Part 01
10月26日Harvest被攻击事件
Part 02
Harvest 攻击原理分析
Part 03
被攻击后的影响
Part 04
Harvest Finance的处理过程及解决方案
Part 05
Harvest Finance未来可能的缓解措施
Part 06
闪电贷科普及实操介绍
Harvest finance被闪电贷攻击了。10月26日总锁仓量超过10亿美元的DeFi项目Harvest Finance曝出遭到黑客攻击,已造成大约2400万美元的损失,很多参与者自称损失了15%以上的资金。受此消息影响,Harvest的治理代币FARM一度暴跌70%以上。
截至撰稿时,Harvest合约锁定的资金量已骤降至4.52亿美元。
Harvest 事件原理分析
2020 年 10 月 26 号,据慢雾区消息 Harvest Finance 项目遭受闪电贷攻击,损失超过 400 万美元。以下为慢雾安全团队对此事件的简要分析。
攻击者通过 Tornado.cash 转入 20ETH 作为后续攻击手续费
攻击者先通过 Curve 的 exchange_underlying 函数将 USDT 换成 USDC,此时 Curve yUSDC 池中的 investedUnderlyingBalance 将相对应的变小
随后攻击者通过 Harvest 的 deposit 将巨额 USDC 充值进 Vault 中,充值的同时 Harvest 的 Vault 将铸出 fUSDC,而铸出的数量计算方式如下:
amount.mul(totalSupply()).div(underlyingBalanceWithInvestment()); ??
计算方式中的 underlyingBalanceWithInvestment 一部分取的是 Curve 中的 investedUnderlyingBalance 值,由于 Curve 中 investedUnderlyingBalance 的变化将导致 Vault 铸出更多的 fUSDC
之后再通过 Curve 把 USDC 换成 USDT 将失衡的价格拉回正常。
最后只需要把 fUSDC 归还给 Vault 即可获得比充值时更多的 USDC。
随后攻击者开始重复此过程持续获利其他攻击流程与上述分析过程类似
参考交易哈希:
0x35f8d2f572fceaac9288e5d462117850ef2694786992a8c3f6d02612277b0877
总结:此次攻击主要是 Harvest Finance 的 fToken(fUSDC、fUSDT...) 在铸币时采用的是 Curve y池中的报价,导致攻击者可以通过巨额兑换操控预言机的价格来控制 Harvest Finance 中 fToken 的铸币数量,从而使攻击者有利可图。
简单的来说,就是黑客通过闪电贷瞬间操纵了CRV上稳定币的汇率,然后在harvest低价充值某稳定币、然后在CRV购回卖出稳定币,恢复正常汇率,harvest提现,赚取汇率差。
被攻击后的影响
受此事件影响,不少用户担心资产安全,纷纷提现转账,加上黑客操作及套现行为,根据 Debank 数据显示,去中心化交易平台(DEX)的单日成交量创历史新高,超过 30 亿美元。同时,Harvest 和 Curve 的总锁仓量(TVL)开始下降,Curve 24 小时锁仓量下跌 27 %,Harvest 24 小时锁仓量下跌60%。
用20个ETH搏了2400万美元,然后通过renbtc通道进行匿名洗币等操作。
当然这个攻击过程中,收益的不止黑客,还有uniswap、Curve、ETH矿工、RenVM,黑客攻击返还和给个平台创造的资金收入如下:
这么多协议受益,而受损的是fusdt持有者,也就是Harvest 中用稳定币挖矿的用户。
攻击过程中,uniswap的成交量一下达到19.7亿美金。
Harvest 黑客通过curve的y池借贷进行攻击,使y池交易量达到27亿美元,资金利用率2400%+,为LP提供了100+万美元的手续费利润,veCRV的年化收益也冲到了385%
Harvest Finance的处理过程及解决方案
在评估攻击并重建其过程后,Harvest Finance采取了行动,并立即从共享池中撤回了所有资金。这包括DAI,USDC,USDT,TUSD以及WBTC和renBTC。资金目前存在于金库中,不会受到进一步市场操纵的影响。攻击不涉及DAI,TUSD,WBTC和renBTC,这些金库中的存款人也没有受到影响。
Harvest finance有一个定期的每周计划,需要保持这个计划以使所有农民持续受益。根据2020年10月27日星期二的发放计划,Harvest Finance团队发布了19637.46枚农场代币。社区要求并计划在10月27日星期二发布的智能合同改进将被推迟,以便在攻击的背景下重新评估其安全性。使用共享池的金库中的资金将继续从战略中撤出,直到针对此类攻击的缓解措施到位。这些措施,以及为受影响的用户提供补救措施的基础设施,将是团队下一次开发冲刺的重点。我们对这个工程错误负责,并确保今后此类事故得到缓解。
Harvest团队的解决方案
承认是团队的错误造成了3000多万刀的损失,为此承担责任
黑客转回的200多万刀(不到损失的10分之一)会在下周发给受害者
会更改稳定币的机枪池策略
希望黑客能把钱送回来
其他补偿方案:无
未来可能的缓解措施
Harvest Finance团队致力于评估可能的缓解策略,并在即将发布的版本中实现这些策略以及任何必要的用户体验更改。我们将使用新金库的可升级特性和基于时间的投资策略替换,并在发布前很好地沟通缓解策略。
可能的补救技术包括以下选项:
对存款实行“提交-披露”机制。这将消除在单一交易中执行存款和取款的能力,因此,使基于闪贷的攻击变得不可行。在用户方面,这意味着在存储期间,他们的代币将在一次交易中被转移到Harvest。用户随后会在另一个交易中声明他们的份额,最好是在一个不同的块中。这将构成用户体验的变化,并可能导致储户支付更高但仍可接受的gas成本。
一个更严格的配置现有的arb存款检查策略。当前的阈值被设置为3%,这不足以保护金库免受这样的攻击。一个更严格的门槛可能使这样的攻击在经济上不可行,然而,在无常损失的影响下它可能限制存款。周日超过7分钟的事件表明,这一措施不够有效,因此应该被视为对其他措施的补充。
对基础/相关资产的提款。当用户将钱存入使用共享池(如Y池)的金库时,他们有效地将他们的单一资产交易为池资产(如yCurve)。如果用户只取出基础的资产,他们就可以根据当前的市场情况将其交易为一种资产组合。如果市场被操纵,交易也将受制于这种操纵,这将阻止攻击实体产生利润。从普通用户的角度来看,在提取yCRV之后,可以在单独的交易中转换为稳定币。虽然这需要改变用户的体验,但这也可以解决社交问题,从而对协议有利。这种方法的缺点是它将金库退出机制与目前正在使用的策略绑定:如果战略转向另一个策略,不使用共享底层池,或使用一个不同的池,撤出产生的资产也会改变。
用Oracle来确定资产价格。虽然大概的资产价格可以从外部预言家(由Chainlink或Maker提供)有效地确定,但它与实际股价的联系非常不紧密。如果基础的DeFi协议中的资产价值与Oracle报告的价值不同,金库就会暴露在自由套利和闪电贷款攻击之下。这不是Harvest的解决方案,但是,在系统设计和可能的缓解策略中将考虑Oracle(到目前为止已经考虑过了)。
在USDC和USDT中损失资金的用户的补救方法。通过快照和MerkleDistributor分发返回的资金,我们正与帮助创建这些工具的开发人员保持联系,并积极致力于构建基础设施,为受影响的用户提供补救措施。分配资金是当务之急。该发行版的更多细节将在工具构建完成后发布。
其他补救方法将在治理中进行分析和投票。
闪电贷的科普和实操介绍
随着 Harvest Finance 受到闪电贷(Flashloan)套利导致平台亏损 2400 万美金事件的影响,闪电贷又一次回大众视野。很多用户对闪电贷之于黑客的印象,就像是比特币之于暗网一样不乐观。其实闪电贷的设计本意是让开发者可以任意借贷而无需提供质押物。但在众多机智的以太坊开发者的挖掘之下,闪电贷被用作去中心化交易所之间套利、或为黑客提供漏洞攻击的资金。
?
那么,普通的用户有机会像黑客或懂程序的高阶玩家一样使用闪电贷等花式操作么?别急,借此机会学习一下可组合性 DeFi 工具 Furucombo,你也会组合出包含闪电贷的一套专属 DeFi 组合。
Furucombo 平台提供的可组合选项,覆盖 11 个不同协议,高达 39 个不同选项。
Furucombo介绍
Furucombo 是为 DeFi 用户构建的工具,就像建立自己的 DeFi 乐高积木一样,在不需要编程的情况下,只需拖放即可设计专属于自己的 DeFi 策略。它将复杂的 DeFi 协议可视化为多层操作组合。用户只需要输入/输出相关代币数量,并设置多层操作顺序(我们称其为「组合」),然后 Furucombo 就会将所有的数据集打包为一个交易发送出去。对于想要跨不同协议执行操作的用户,尤其是想要利用闪电贷的用户,是一个很好的工具。
简而言之,对于不熟悉代码,但可以实现逻辑设计的用户,可以使用Furucombo无需代码直接设计实施相关DeFi操作组合。同时平台也可以简化用户使用流程,此部分内容会在 Explore 涉及。
Furucombo 页面基本介绍
要开始创建一套高效的组合拳,第一步需要选择一个平台(如 Uniswap)。单击乐高块里面的「+」,然后会弹出众多平台和具体操作的选项。在这里,您可以选择要使用的 DeFi 协议。就如同直接使用该平台一样,每个平台下面的相应操作都需要设定相应的数量。顶部的搜索功能支持按 DeFi 名称,DeFi 操作(交换代币/Swap,增加流动性 Add Liquidity 等)或特定 DeFi 支持的代币名称 (搜索 Crv,就会显示所有支持 Crv 的平台) 进行搜索。
当您开始设置乐高块(Cube)时,会在左上角看到一个名为「初始资金」的部分。如上图 1ETH 换取 1143 枚 CRV 所示,这意味着用户必须在组合开始时提供 1ETH 资金以启动交易,如果钱包里没有足够资金,交易不会执行。每次更改乐高块时都会更新这些 ETH 和 CRV 参数。
创建简单的 Furucombo 组合
第 1 步:设置多层乐高组合
选择协议后,系统会提示您输入乐高块的详细信息。输入表示在执行此操作时花费的代币数量。输出表示在执行此操作时将收到的代币数量。需要注意到是,输入可以是钱包中的代币,也可以是先前乐高块的输出。设置乐高块后,始终可以通过单击每个块右上角的钢笔/垃圾桶图标来对其进行编辑/删除。
步骤 2:拖放
您设置的所有操作都是可拖动的。只需单击并按住乐高块,然后按所需顺序拖动它即可。组合完成并交易时,将根据乐高块的排列顺序执行操作。
?
示例:创建闪电贷时,将看到一对两个乐高块。(第一个表示「借用」,第二个表示「偿还」。)接下来,需要添加更多的乐高块操作,并将它们拖到闪电贷之间。
步骤 3:连接钱包
当然可以创建一个乐高组合而不用连接到自己的钱包。但是,如果想要真的想使用这个组合,就必须连接钱包。只需单击最后一个带有钱包图标的乐高块,然后就可以连接到自己的钱包。
步骤 4:发送组合
发送组合的完整流程为:
1. 单击「Approve/批准」。当初始代币为 ERC20 的时候,只需要执行一次批准操作。
?
2. 单击「Send/发送」,然后 Furucombo 将对这个 DeFi 乐高组合进行估算。如果交易失败,则会弹出一条消息提醒。相反,您会在钱包上看到一个弹出请求签名的交易请求。
?
3. 成功发送组合后,按钮变为「 New Combo」,并弹出带有交易链接的消息。当看到这些变化时,恭喜你已经熟悉了初步的 DeFi 组合拳。
安全性问题频繁发生,用户应该怎么办
在区块链的安全事件中,大多都是由于源代码存在漏洞使得黑客趁虚而入。智能合约受到区块链本身保护,所以智能合约代码可以最大限度的开源和让人阅读。但是代码的公开性使得黑客容易掌握代码的缺陷,进一步利用代码缺陷触发条件改变智能合约执行结果,使得区块链项目存在巨大的经济隐患。因此,智能合约代码的开源性需要代码的高可靠性,这种可靠性要求100%正确。
因此,其他开源项目应当始终把网络安全性列为最高优先级,努力为用户提供一个够安全、高性能、体验佳、可信赖的区块链基础设施。
越来越多的安全事故让大家更加注重资金安全,推荐2个方法判断DeFi应用安全性:
1.https://defisafety.com/
2. App.nexusmutual.io/cover
初学者用第一个,信息不是很及时,尽管不完美但可以做一个简单的参考;第二个最具时效性,因为成本是市场驱动的。
闪电贷你学会了吗?这种情况下你还会参加Defi挖矿吗?
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。