闪电贷攻击频发,这份以太坊闪电贷的发展史值得研究
前言
2018年年中Marble首次提出了闪电贷这一概念,但在一年后闪电贷才开始慢慢发展起来,并于2020年进入区块链用户的视线中。闪电贷交易基于区块链的原子化特性而成立,是一种特殊的无抵押借贷交易。原子化特性要求用户所有的相关操作必须是在一笔交易哈希之中,包括还款操作。若有任意一个要求未达到,则涉及多个操作的整笔交易必须回滚,失败的交易无法被打包。
在这种设定之下,理论上闪电贷交易允许用户通过无抵押的方式借出流动性池内的所有通证,但需在进行一系列互换抵押清算操作之后、交易结束之前归还所借通证以及固定的借贷成本。这种借贷方式完美解决了当前链上借贷的违约风险,相较于传统链上借贷通过超额抵押完成借贷行为,闪电贷为区块链用户带来了一种新的可能。
在这种可能被发现之前,闪电贷却因为两笔攻击进入大众视野。2020年2月份bZx分别于15日、18日遭受了两次闪电贷攻击,损失金额各自达到33万和64万美金。同时自流动性挖矿引起DeFi浪潮以来,DeFi迎来了闪电贷攻击密集期。
下图是截止至目前发现的12起闪电贷攻击事件,总损失高达9965万美金。损失金额最高来自于21年2月13日Cream.Finance所遭受的攻击,有趣的是在遭受攻击2个月后,Cream.Finance于4月8日提出将提供跨协议闪电贷(Cross-Protocol Flash Loans)服务,该跨协议闪电贷将通过Iron Bank完成。
闪电贷攻击事件总结
来源: Huobi DeFi Labs
从区块链的区块时间维度看待闪电贷,闪电贷在区块链上的到期期限为零。这意味着闪电贷的借贷利息应该为零,即借贷利率乘以到期期限为零。但现有提供闪电贷服务的主流协议之中仅dYdX不收取所谓的借贷费用,Aave要求收取0.09%,而Uniswap V2要求收取更高的费用0.3%。Huobi DeFi Labs认为在较远未来,闪电贷协议的服务费费率将趋向于零,从这一角度看dYdX似乎对闪电贷用户更友好,而Aave与Uniswap V2在未来是否能剥离闪电贷业务,提供独立于协议整体设定的服务费率仍未可知。但在当前在这场闪电贷竞赛中,三者协议以各自优势和特色割据闪电贷市场,
Uniswap V2在三者主流协议中最迟提供闪电贷服务,但作为DEX龙头,Uniswap V2以流动性高的优势在交易频次和借贷通证比较中脱颖而出,瓜分了闪电贷60-70%的交易市场。而dYdX作为最早发现闪电贷交易的协议平台,尽管只提供三个主流资产借贷,即ETH(WETH)、USDC和DAI,却同样不可小觑。dYdX上闪电贷交易涉及的DeFi协议高达21个。Aave在三者之中作为最纯正的借贷协议,与其它两者不同的地方是提供可直接调用的闪电贷函数;同时Aave目前是多个DeFi协议主要调用闪电贷的对象,如DeFi Saver和Furucombo都是Aave闪电贷交易的主要客户。
在这三者主流协议之外,Huobi DeFi Labs同样关注到Uniswap V2同期的提供闪电贷服务的协议——Instadapp。这一协议在出现伊始提供COMP加杠杆流动性挖矿和债仓管理,并在上线内一个月引起了一个闪电贷交易的小浪潮。同时它是第一个提出批量闪电贷概念的协议,但该协议却在Uniswap V2上线和Aave爆红之后归于沉寂。
本报告聚焦这四个协议的链上数据,共追踪了约11万条闪电贷交易数据,力图通过分析该数据呈现闪电贷交易的链上全貌。分析角度涵盖了交易笔数、地址分析、借贷通证类型和主流资产的借贷金额等,同时总结并对比了市面上围绕闪电贷功能的几乎所有协议。
约11万笔闪电贷交易来自四个协议平台
报告中闪电贷链上数据截止至2021年3月16日,根据以太坊上提供闪电贷的协议有Uniswap V2、Aave、 dYdZ和InstaDapp这一基本事实,Huobi Defi Labs追踪这四大协议获得闪电贷共10万8千笔历史交易数据。不同协议采用不同的方式提供基础闪电贷服务,Huobi DeFi Labs根据不同协议的特色使用不同方法获得链上数据。
总体方法概括如图中所示,Aave直接为用户提供封装好的闪电贷函数,通过闪电贷函数调用情况追踪闪电贷交易哈希;dYdX则是基于四个事件日志获得交易哈希;UNIswap V2的闪电贷链上交易数据通过Dune Analytics的UNISWAPV2CALL确定交易哈希;Instadapp的交易数据获得方式与Aave一致,通过其闪电贷函数调用情况追踪获得。
闪电贷链上数据来源及其获取方式汇总
来源:Huobi DeFi Labs
四个闪电贷协议获取的闪电贷交易数据总览如下图,Instadapp至2020年七月份之后再无新的闪电贷交易数据,但因其可观的交易数据仍为本报告闪电贷链上数据的研究对象之一。
闪电贷交易频发于Uniswap V2
闪电贷市场随牛市进入稳定期
闪电贷交易笔数时间分布图
来源:Etherscan.io, Huobi DeFi Labs
以太坊上闪电贷历史交易的时间分布如图所示,第一笔闪电贷交易出现于2019年6月21日,由dYdX产生。闪电贷于2019年只发生于dYdX上,且这一年闪电贷笔数仅有148条,直至2020年1月18日第二个产生闪电贷交易的协议Aave开始出现。但到此时闪电贷仍并不被大众所知,直到2月15日和18日著名的bZx攻击事件发生。
2020年四月和五月份InstaDapp与Uniswap V2先后上线提供闪电贷服务,六月份闪电贷交易笔数数据显示第一轮爆发开始。这一轮爆发与六月份Compound启动流动性挖矿有关。流动性挖矿引起DeFi狂热潮的开端,而Instadapp在同期适时推出COMP加杠杆流动性挖矿、债仓和抵押品互换管理功能,成为该轮爆发的主要驱动力。
第二轮爆发发生于去年10月,由uniswap V2推动,同时从当月起闪电贷攻击进入高发期。且在Uniswap V2上发生的闪电贷交易比例一直维持在60%左右,甚至最高曾接近90%。但在Aave V2上线之后,Aave V2瓜分了部分闪电贷交易市场。目前闪电贷市场交易频次稳定在Uniswap V2占七成,Aave占二成,dYdX一成。
闪电贷交易比例时间分布图
来源:Etherscan.io, Huobi DeFi Labs
Uniswap V2闪电贷交易失败回滚率高达9.1%
闪电贷交易由于其特性可产生失败回滚的结果,但由于获取数据的方式不同我们仅捕捉到Uniswap V2的失败回滚现象。Uniswap V2的6.6万条交易中有约6千条交易失败回滚,Uniswap V2闪电贷交易失败回滚率高达9.1%。
Uniswap V2分别于2020年7月22日、2021年1月22日发生大量失败回滚的交易,具体数值为1139笔和308笔。此现象可能是由于当日有用户频繁调试其策略。在本报告中所有数据分析结果如无特别说明,均不包含此回滚交易的数据。
Uniswap V2上失败回滚的闪电贷交易笔数历史分布
来源:Etherscan.io, Huobi DeFi Labs
批量闪电贷功能或仍处早期阶段
2020年12月3日,Aave宣布其V2版本主网上线,并伴随着多个功能的更新。这其中就包含批量闪电贷,批量闪电贷允许用户在闪电贷中一次性借多种不同的通证。但这并非批量闪电贷的先例。
在2021年3月12日之前以太坊上共发生145笔批量闪电贷交易,仅占总历史交易笔数的0.13%。其交易数分布比例如下图,尽管Aave最晚提供批量闪电贷功能,但约超过六成批量闪电贷交易通过Aave发生。Uniswap V2与Instadapp_batch均约有15%批量闪电贷交易,而dYdX并未发生任何批量闪电贷交易。
批量闪电贷交易协议分布图
来源:Etherscan.io, Huobi DeFi Labs
如下图为链上数据显示的批量闪电贷历史交易分布图,图中显示史上第一笔批量闪电贷为2020年6月17日Instadapp上发生的批量闪电贷交易。图中同时显示各个协议平台提供的批量闪电贷交易聚集在不同时间段,且存在似有后来者完全取缔前者批量闪电贷功能的现象。
自Aave上线批量闪电贷功能以来,几乎囊括了所有的批量闪电贷交易。但批量闪电贷交易数实在太少,由于相较于其它协议平台Aave上的闪电贷交易套利性较低,我们认为目前批量闪电贷的真正价值仍为被发现。
批量闪电贷历史交易频次分布图
来源:Etherscan.io, Huobi DeFi Labs
平均1.5个调用者对应1个策略智能合约
以太坊中存在两类账户:外部账户和合约账户。外部账户不包含代码,合约账户包含合约代码,基于该认识,通过etherscan解析的闪电贷交易From Address为外部账户或者合约账户,To Address为合约账户。换言之,From Address为调用合约账户的调用者,可为普通用户或者机器人,而To Address为闪电贷策略本身。
地址存续时间以短期为主
在此之前,Huobi DeFi Labs首先对From Address与To Address时间序列进行分析。8365个From Address中第一笔与最新一笔交易时间间隔最长为583天;5591个To Address中第一笔与最新一笔交易时间间隔最长为613天。此外在本报告中,为方便表达第一笔与最新一笔交易时间间隔被定义为存续时间,但由于这些地址有可能在未来再次发生闪电贷交易,需注意最新一笔交易不代表最后一笔交易。
From Address与To Address的个数比例为1.5,表明平均约有1.5个用户/机器人调用并执行闪电贷策略的合约。
而有约35%的From/To Address的时间间隔在半年以内,20%在30天内,这一结果揭示出闪电贷策略作为特制化交易可能存续时间极短;或者多数为针对当下某个热点协议、通证、特殊目的等的特制化交易,因此受限于链上市场条件,多数策略随着市场变化可能仅能维持一段时间。存续时间分布图显示,两种地址均存在约60%仅在当天发生闪电贷交易的情况,这表明可能存在大量闪电贷策略合约失败;或者链上市场条件并不符合闪电贷策略交易,而这些地址不得不等待链上市场条件达到预设的判断条件,才能再次触发/被调用等的情况。
From/To Address 时间存续分布图
来源:Etherscan.io, Huobi DeFi Labs
存续时间与频数历史趋势
下图为From Address 与To Address的所有交易、交易笔数大于100、交易笔数大于500的历史数据图;图中圆形的大小表示交易笔数的大小,横轴为某一地址第一笔交易发生的时间,纵轴为相应地址最新一笔交易发生的时间。因而From/To两种地址均分布在图左上角区域。
2020年3月以前,散点数量与面积均较小,表明闪电贷处于偶发状态。2020年3月起散点数量之多显示From/To两种地址数量进入暴增阶段,同时散点面积随时间明显增加亦表示From Address发起与To Address被调用的次数呈现相同白热化趋势。
图中显示多数散点分布在45度线周围,这表明散点所代表的From Address/To Address都仅存在短期行为,即第一笔交易与最新一笔交易发生的时间间隔较短。部分散点分布在横轴顶部则表明这些地址在近期仍存在闪电贷交易行为。
From Address与To Address交易时间与频数分布图
来源:Etherscan.io, Huobi DeFi Labs
不同协议的闪电贷呈现差异化地址分布规律
From Address与To Address于各个协议的数量分布图
来源:Etherscan.io, Huobi DeFi Labs
前文已谈到From Address与To Address的总个数比例为1.5,当聚焦于不同协议上时,AAVE_d119、Uniswap V2与dYdX均比例的比例大约为1.3,与1.5相近。而AAVE_c7a9与Instadapp及其批量闪电贷Instadapp_batch的From/To比例却十分不同。Instadapp的From Address与To Address二者个数相等,而AAVE_c7a9则呈现完全不一的比例,其To Address仅有33个。
四大协议占领不同闪电贷借款通证市场
闪电贷交易半成以上借款通证为ETH、DAI及USDC
闪电贷链上交易数据显示总共有1015种通证以闪电贷方式被借出,其中超过53%的交易其借款通证为ETH、DAI以及USDC,分别占据28%、15%和11%。三种通证在以太坊上有不同的角色,ETH为以太坊原生资产,DAI与USDC则为以太坊上的稳定币。
而前十个最常被借款通证占总交易笔数的61%,在各个协议的频次分布图如下所示。除三大常被借款通证外,其余通证为:稳定币TUSD,通证化资产WBTC,以14个DeFi资产为底层资产的可交易指数型通证DeFi Pulse Index,算法稳定币项目的通证Dynamic Set Dollar和Frax,预言机Chainlink的通证LINK,以及只发生于Uniswap V2的KP3R。
前十大借款通证各协议频次分布图
来源:Etherscan.io, Huobi DeFi Labs
通过前十大借款通证于各个协议上的比例分布,我们发现Uniswap V2上闪电贷交易中仅有三成来自这十大借款通证。Uniswap V2作为头部DEX,提供的可借通证为平台上所有池子的通证,实际数据表明总共有927个通证通过Uniswap V2闪电贷的方式被借用。这一优势表明Uniswap V2占据着长尾资产的闪电贷交易市场。
此外dYdX仅提供ETH、USDC和DAI的交易,并主要占领该三大通证的闪电贷交易市场,图中dYdX存在1%的其它通证为借款通证解析结果为空的情形。
前十大借款通证各协议比例分布图
来源:Etherscan.io, Huobi DeFi Labs
dYdX前三大借款通证各累计借款数额为其它协议数倍
闪电贷历史交易数据显示最频繁的三种借款通证为DAI、USDC和ETH,基于这三大通证我们通过进一步研究三大借款通证在不同协议上的借款数额分布情况。由于三个通证在不同时期的价格数值不一同,此处数额以数量多少表明;以及报告中的所有数据并不对WETH和ETH进行区分。
结果如下图显示,dYdX前三大闪电贷借款通证的数额在多个协议中以压倒性的优势脱颖而出。这种情况的出现恰好反应dYdX上闪电贷交易手续费低廉甚至为0的绝对吸引力。而dYdX之外的Uniswap、Aave与Instadapp呈现不规律的通证数量分布。
闪电贷借款总累计数额分布图
来源:Etherscan.io, Huobi DeFi Labs
闪电贷交易涉及的协议覆盖面广
闪电贷交易所借通证常被用于其它平台交易,不同协议平台的交易手续费、流动性池数量和大小各异,因此闪电贷交易中所涉及的DeFi协议是一个可反映闪电贷当下策略的复杂及用途广泛程度。Etherscan与Bloxy均对链上交易数据进行协议字段层面的解析,但二者解析程度不一,导致统计结果有所差异。为此,这部分数据结果为二者取最高值为最终统计结果。
下图为闪电贷交易所涉的DeFI协议情况,左边为提供闪电贷功能的四大协议平台Uniswap V2、Aave、dYdX和Instadapp,右边为每笔闪电贷交易涉及的协议平台情况总共有22个(含dYdX)。
数据统计结果显示发生在dYdX协议的闪电贷交易涉及的DeFI协议平台数量最多高达21个DeFi协议,这意味着在该协议上使用的策略更加复杂、多元,导致由它产生的闪电贷交易可以涉及较广范围的协议平台。相反Instadapp协议的闪电贷交易涉及的协议平台数量最为单一,只有8种,分别为Curve、Kyber V3、Oasis DEX、Uniswap及其V2、Sushiswap、Aave V1和dYdX。
而在被调用的DeFi协议平台中被调用次数达上万的协议为Sushiswap(~2.4万次)、Uniswap V2(~2.1万次)、Balancer(~1.2万次)和Compound(~1.0万次),被调用次数不足百笔的有dYdX(79次)、Bancor(37次)、Lendf.ME(3次)和EtherDelta(1次)。
闪电贷交易所涉DEX分布图
来源:Etherscan.io, Bloxy, Huobi DeFi Labs
基于闪电贷功能的生态正在建立
超10个协议平台直接或间接提供闪电贷服务
Huobi DeFI Labs视闪电贷为区块链的一种功能技术,围绕该功能可发展出繁茂的生态。目前经统计至少有10个协议平台具有闪电贷功能,除了本报告前文分析对象之Uniswap V2、Aave、dYdX和Instadapp,还有如DeFi Saver、Furucombo、Kollateral、Deerfi、Collateralswap、NFT20等项目直接提供闪电贷服务或者通过调用其它协议的闪电贷功能提供相关服务。
Uniswap V2的闪电贷服务拥有最高自由度
闪电贷功能常被用于套利的手段之一,因此调用闪电贷的自由度极大地限制了闪电贷被调用的可能性。闪电贷的自由度可从2个基本维度衡量其程度高低:
1.调用手段为代码层面或者前端层面。通常可通过代码直接调用闪电贷协议其自由度高于前端层面的闪电贷协议,因为代码层面的闪电贷协议可用于多种多样的闪电贷策略,这些策略通过智能合约实现。智能合约由复杂的操作指令组成,因此代码层面的闪电贷协议更容易与智能合约结合。如Furucombo尽管为没有编码经验的用户构建闪电贷工具,使用户通过简单的拖放即可定制DeFi策略,但其可实现的闪电贷策略与通过调用Uniswap V2的闪电互换功能相比较弱。
2.闪电贷协议所能提供的通证种类及额度大小。如dYdX、Aave与Uniswap V2相比能提供的闪电贷通证种类远小于Uniswap V2所能提供的种类,因此这两类协议自由度当小于Uniswap V。
来源:Etherscan.io, Bloxy, Huobi DeFi Labs
DeFi Saver 旨在打造DeFi协议一站式管理解决方案,凭借着一步(去)杠杆(Boost and Repay)、CDP自动管理(CDP Automation)和一步CDP平仓(1-transaction CDP Closing)等独特功能,目前已经提供了以Aave为闪电贷基础的丰富产品体验。用户能够管理在MakerDAO、Aave和Compound的债务头寸。
Deerfi协议基本沿用了Uniswap的模式,但其目前已有的池子数量较少,资产沉淀仍需较长时间;此外其提供前端页面,用户可提供含策略的部署合约地址后调用Deerfi闪电贷。
Kollateral旨在将dYdX、Aave等大资金池的流动性汇总,并通过简单的界面提供给开发人员。劣势在于闪电贷资金为三方平台,对于开发人员而言不如直接自己开发。
Collateralswap帮助用户快速Swap抵押资产,无需偿还未偿还的债务。其功能实现与DeFi Saver的Loan Shifter类似,只是目前Collateralswap的ALPHA版本仅支持MakerDAO。
NFT20作为NFT的去中心化交易所和交换协议,NFT20 团队3月26日官宣上线NFT闪电贷,支持无抵押从各个NFT池中借贷NFT,目前池子流动性大于0的池子总数为61个,且暂不收费。NFT20团队称其闪电贷功能的实现方式和Aave很相似,使用场景包括套利、领取奖励等。NFT20作为闪电贷最异类的一种,其自由度较前端操控类型高。
Cream.Finance作为近期新上线的跨协议闪电贷服务商,支持64种借款通证,仅收取0.03%的手续费。
总结
闪电贷市场总交易数仅有11万条,在以太坊上这是一个不十分起眼的交易数据。闪电贷作为以太坊的原生功能,可用于帮助用户实现抵押品转换、平仓、债仓管理等操作。同时闪电贷作为特殊的借贷工具以其无抵押的特色成为特殊的攻击、套利手段,并因之成为DeFi中的风险来源。可见闪电贷为以太坊提供了解决信用风险的方法,却也带来了攻击风险。闪电贷作为风险来源之一,目前DeFi项目需考虑如何有效预防闪电贷攻击,但今年2月份三起闪电贷攻击事件的出现表明当前的DeFi项目似乎没有有效的防御手段。
本报告中分析的dYdX、Aave以及Uniswap V2以各自独特的方式提供具有一定差异性的闪电贷服务。dYdX只提供三大主流资产USDC、DAI和ETH并占领了这些资产的闪电贷市场。Uniswap V2提供还款通证可以与借款通证不一致的特殊闪电贷服务,从套利角度来看,可以减少用户交易时必须换回借款通证的步骤因而降低一定Gas费用。而Aave提供封装好的闪电贷函数,在用户还款时可以直接通过调用智能合约(the flash smart contract)获得计算好的借款金额和手续费,而另外两个协议则需在外部计算并手动归还。同时Aave的闪电贷功能也是其他服务类协议(如DeFi Saver、Frucombo)的主要调用对象。
当前市场这三个主流闪电贷协议提供的闪电贷服务在技术层面(调用方式)、生态条件(流动性池数量和大小等)存在多元化趋势,然而有人希望在技术层面实现融合。Yield Protocol开发者于2020年11月提出标准化版本的闪电贷提案EIP-3156,于21年1月底提出标准化版本的批量闪电贷提案EIP-3234。技术层面的融合对闪电贷功能开发难度的降低有一定好处,但或许对闪电贷用户而言,闪电贷协议能提供的流动性大小和种类更重要。
闪电贷未来的发展方向仍值得思考,如跨链闪电贷交易实现的可能性。2020年9月份,FlashEx在Medium上发表了一篇关于跨链稳定币闪电贷的文章;该项目预想在比 特币、以太坊和波卡之间完成跨链闪电贷,但该项目官网及官方社区均再无任何更新。尽管如此,我们仍期待跨链借贷成熟之后,跨链闪电贷能有所突破。
此外基于闪电这个概念,闪电铸造也成为少数研究者和用户关注的议题,相比闪电贷借款金额受限于流动性池子的流动性大小,闪电铸造打破了流动性池大小的限制。但由于在本报告撰写期间未观察到闪电铸造成熟的协议或市场数据很匮乏,本报告并不针对闪电铸造进行分析。但并不代表Huobi DeFi Labs对该功能的不看好,相反,我们注意到如Yield Protocol、WETH10等具有闪电铸造特色的存在。我们期待有更多创新性的功能及相关协议出现以丰富区块链整体市场。
微信扫描关注公众号,及时掌握新动向
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场