闪电贷最初为开发者设计,所以闪电贷业务只能由智能合约实现,虽然现在有些如 Furucombo 等平台已经省去了写代码的复杂流程,但是想要清楚理解闪电贷原理我们需要从底层代码开始。
本文从技术角度带你了解到什么是闪电贷和闪电贷流程。
什么是闪电贷
闪电贷最早是由 Marble 协议引入的概念,当时是为了让用户可以在以太坊借用 Ether 和 ERC-20 代币,后来由 Aave、dYdX 等进行了普及。
简单来说,闪电贷就是在一个区块交易中,同时完成借款和还款操作这两个操作,无需抵押任何资产,只需支付手续费即可。
用户在借到款之后,可以利用借到的资产进行其他操作,然后在交易结束的时候,用户只要把借到的款项及手续费及时归还就可以,否则该笔交易就会回滚,就像什么也没有发生过一样。
当用户使用闪电贷借款后可以使用其资金进行套利、抵押物互换、自我清算等操作。
但是由于闪电贷能以低风险,低投入的方式快速借到大量资金,很多黑客便利用智能合约中的漏洞,用极低的成本,从闪电贷协议借得大量资金,用于攻击操作。
近段时间闪电贷攻击事件频繁发生,这也不得不让开发者在合约开发的安全性上引起更多的注意。
常见的闪电贷方式
目前市面上主流的几种提供闪电贷业务的 DeFi 项目,主要有 Aave、Uniswap、dYdX 等。
Aave闪电贷
Aave是最早将闪电贷进行实际应用的DeFi 协议,主要原理是通过调用 Aave 中 lendingPool 合约中的 flashLoan() 函数实现借贷,通过executeOperation() 函数实现具体的业务逻辑,下文将进行具体讲解。该闪电贷在实际借贷操作中有详细的官方文档,较为方便,对新手学习较友好。
特点
-手续费 0.09%
-代币种类多(ETH,USDC,DAI,MAKER,REP,BAT,TUSD,USDT… ),简短代码,详细文档支持
Uniswap闪电贷
Uniswap 作为 DeFi 中最受欢迎的去中心化交易所之一,从V2版本开始支持闪电贷(Flash Swaps)功能,该功能通过调用UniswapV2pair 合约实例的 swap 方法带入额外 data 实现,和 Aave 一样也有着较为详细的官方文档供借贷者参考。
特点
-手续费 0.3%
-代币种类多,使用闪电贷可直接在 Uniswap 上交易,可以直接借 ETH,详细文档支持
dydx闪电贷
dYdX 是一个针对专业交易者的去中心化交易所,本身并没有闪电贷功能,但是可以通过对 SoloMargin 合约执行一系列操作来实现类似闪电贷功能。
其主要原理是通过继承 DydxFlashloanBase 合约编写initiateFlashLoan() 回调 callFunction() 实现借贷、套利、还款等操作。但没有提供官方文档去参考,只能通过第三方网站找到较为详细的参考资料,对新手借贷难度较大。
特点<