DeFi闪电贷原理介绍

闪电贷技术详解-Part 1

区块链网专职打假记者张春花报道:熊市就像一块试金石,DeFi的各核心业态,哪些能够穿越周期,更好的发展?在周期中又暴露了哪些问题,值得后来者借鉴?SharkTeam合约安全系列课程之【DeFi安全】和您一起讨论和深入,第二课【闪电贷技术详解】。

文章较长,分为3个部分,这是第1部分:

1.闪电贷原理和应用场景;

2.闪电贷合约实现和风险防范。

3.闪电贷相关项目协议分析。

1 闪电贷原理介绍

1.1 概念描述

闪电贷顾名思义,就是在极短的时间内(一个区块时间或者一笔交易内)完成贷款与还款的操作。

在DeFi领域,闪电贷为金融业务提供了免抵押借款服务,是DeFi世界的一款利器。

闪电贷的概念最早是由Marble协议提出来的,并由Aave、dYdX、Uniswap等协议进行了普及,第一笔闪电贷操作来自于Aave协议。

1.2 设计原理

闪电贷是通过智能合约的原子性,来完成零风险贷款的业务,因此闪电贷业务只能由智能合约来实现。

简单来讲,就是在一个区块交易中,同时完成借款和还款操作这两个操作,无需抵押任何资产,只需支付手续费即可。

用户在借到款之后,可以利用借到的资产进行其他操作,比如套利、偿还抵押借款、自清算等操作。

然后在交易结束的时候,用户只要把借到的款项及手续费及时归还就可以,否则该笔交易就会回滚,就像什么也没有发生过一样。

什么是原子性?

这里的原子性是指具有原子性的事务。该原子事务是不可分割的,在事务执行完毕之前,不会被任何其他操作所中断。而该事务中的所有操作,要么全部被成功执行,要么全部执行失败,不会出现一部分成功而另一部分失败的情况。

以太坊的每个交易都是具有原子性的,每笔以太坊交易中,可以包含多个操作,例如:

l 向dYdX进行借款、还款;

l 在Compound上提供ETH并借出DAI

l 在Curve上将借出的DAI的一半换成USDC

l 在Uniswap上为DAI/USDC池提供流动性等等。

所有这些操作都可以同时在一个交易中完成,而其中只要有一个操作失败,则整笔交易都会失败回滚,就像什么都没有发生一样。

单笔交易只受Gas费用限制,以及以太坊区块容量的限制,所以理论上可以有成千上万个操作步骤。

1.3 成功案例

首先,执行闪电贷最重要的是找到一个闪电贷提供商。

Aave或dYdX等项目开发了智能合约,允许DeFi用户从指定的池子中借到不同的币,前提条件是在同一个以太坊交易内偿还。

使用闪贷通常有固定的成本。例如,Aave合约要求借款人归还初始金额+0.09%的借款金额。0.09%这笔费用将会分给存款人和集成商,前者给出了可供借贷的资金,后者为使用Aave的闪电贷API提供便利。这笔费用的一部分也会被换成AAVE代币。

一旦从借贷池中借到金额,它就可以用于其他套利操作,只要在不同步骤所处的区块链末端快速偿还贷款。

由于贷款必须在一次交易内偿还,所以不存在借款人不偿还借款的风险。唯一的风险就是一直存在的智能合约和平台风险。

1.4 闪电贷与闪电兑

闪电贷(Flash Loan)和闪电兑(Flash Swap)是区块链独有的概念。下表显示了两者之间的一些关键区别。

闪电贷(Flash Loan)必须以你借入的同一资产偿还:如果借入Dai,就需要偿还Dai。生息协议Aave对闪电贷收取0.09%的费用。它至少需要进行三个操作:

1. 在Aave上借款

2. 在一个DEX上进行兑换

3. 在另一个DEX上进行套利交易以实现利润,最后偿还借款以及闪电贷费用。

闪电兑(Flash Swap)允许交易者在交易后期支付(或返还)资产之前,先接收资产并在其他地方利用该资产。就像在Uniswap上所做的那样,闪电交换没有固定费用,而是收取交换费。与闪电贷相比,闪电兑换可以看作是“免费”贷款,因为兑换手续费是从交易订单中扣除的,我们不必单独付款。最后一点区别:我们可以偿还兑换的任何资产。如果我们使用闪电兑换拿ETH买入Dai,那么用Dai或ETH偿还都可以,这使我们可以执行更复杂的操作。

闪电兑换和闪电贷均采用乐观转帐(Optimistic Tranfer),这是我们稍后将介绍的一种迷人的技术。

1.5 乐观转帐

闪电贷和闪电兑换均采用称为”乐观转账“的技术。这个了不起的DeFi创新技术使用户可以进行无抵押贷款或兑换交易,只要用户在交易结束时还清借款,就可以执行交易。为了更好地理解这个想法,让我们看一些代码。

1.5.1 闪电贷中的乐观转账

这是Aave(V1)的LendingPool.sol合约的代码。让我们注意flashLoan函数的实现,尤其是以下方法:

在878行中,我们可以看到智能合约“乐观地”将资金转移到用户的合约中 - 它并没有检查用户合约的余额以确保用户有足够的资产偿还借款,就直接转账了。

这怎么可能?难道用户不会拿着这些代币逃跑?好吧,如果这是交易的结束,那么那将是一个严重的问题。但是正如你所看到的,代码还没有结束。用户的合约是否保留这些代币取决于成功执行的接下来的几行。

乐观转账后,在第881行,我们看到Aave合约然后使用代币的乐观余额(Optimistic Balance)和用户已传入的任何参数调用用户的合约。这些参数将是用户需要将其传递给其合约的任何东西。交易成功执行。现在,交易工作流程在Aave合约上暂时中止,并移至用户的合约继续执行,该合约将执行其逻辑并有望成功交易。

在第884行,用户的合约代码已执行完成,工作流程现在返回到Aave合约,该合约使用require语句检查用户合约返回的值。乐观精神到这里就结束了,现在我们必须看看用户合约是否已经执行了有利可图的交易!如果是这样,Aave合约将能够扣除其费用。如果交易没有获利,则该require声明将失败,这意味着整个交易都将失败,也意味着我们之前的乐观转账实际上并不会发生。

1.5.2 闪电兑中的乐观转账

让我们看一下 Uniswap 如何实现其乐观转账。这是从他们的 UniswapV2Pair.sol 合约中获得的,特别注意swap函数:

乐观转账发生在170-171行,就是这个_safeTransfer方法。Uniswap甚至给出了这种乐观转账的注释,以便更好地识别它(顺便说一下,Uniswap提供有关其协议合约的大量文档和教程)。下一行是Uniswap合约以乐观余额调用用户的合约。

再次,假设事务工作流在Uniswap合约上暂停执行,并携带乐观转移的代币到用户合约继续执行。一旦执行完用户合约,交易工作流就会回到Uniswap合约。然后,Uniswap合约分配用户合约的新余额,并尝试收取兑换手续费(第180-181行)。

如果用户合约未能通过代币获利,则第182中的require声明将失败,并且整个交易将回滚。这是乐观转账的关键,即100%取决于交易是否成功。如果不成功,则交易无效,并且将恢复为代币转让之前的状态。但是,如果成功,则可以保持乐观转账,并且用户可以获利。

2 闪电贷应用场景

闪电贷最常见的使用案例有3种,即套利(Arbitrage)、更换抵押品(Swapping Collateral)、自我清算(Self-Liquidation)。

2.1 套利(Arbitrage)

套利,即闪电贷可以放大成功套利的利润。

让我们想象一下,Uniswap 和 Curve 之间的 DAI/USDC 池存在价格差异。你可以在 Curve 上用 1 个DAI 换取 1 个 USDC,但在 Uniswap 上您只需要 0.99 个 DAI 就可以买到 1 个 USDC。现在你可以尝试执行以下套利:

1. 通过闪电贷向 Aave 借 100,000 DAI。

2. 在 Uniswap 上将 100,000 DAI 换成 USDC,收到 101,010 USDC。

3. 在 Curve 上将 101,010 USDC 换成 101,010 DAI

4. 偿还初始 100,000 DAI + 0.09% Fees = 100,090 DAI

5. 利润 101,010 DAI - 100,090 DAI = 920 DAI

在整个套利过程中,我们必须考虑到以下几个因素:

1. 网络费用(Network Fees):这里的网络费用指的是区块链共识后将交易写入区块链时所要支付的手续费(如以太坊中的Gas费)。多步骤的套利交易可能成本不菲,在计算利润时,一定要将手续费用考虑在内。

2. 价格滑点(Price Slippage): 一定要计算你在执行订单时将会遇到多少价格滑点(提示:这取决于交易额的大小和流动性池的流动性)。

3. 抢先交易(Frontrunning):很有可能别人会发现同样的机会,并且会设法抢先你一步行动。最重要的是,监控 mempool 的机器人可以发现你的盈利套利机会,并以更高的gas费发送相同的交易把你的盈利机会“偷走”。

2.2 更换抵押品(Swapping Collateral)

假设你用 ETH 作为抵押品从 Compound 借了 DAI 。你可以通过以下方式将抵押品从 ETH 换成例如 BAT :

1. 发起一笔闪电贷借出 DAI

2. 用借来的 DAI 偿还 Compound 中的贷款

3. 提取你的 ETH

4. 在 Uniswap 上将你的 ETH 换成 BAT

5. 提供 BAT 作为 Compound 的抵押品

6. 以你的 BAT 抵押品借出 DAI

7. 用借来的 DAI + Fees 偿还步骤1的闪电贷

通过这样一轮操作,额外付出借款金额的 0.09% 就能成功把你的抵押品从 ETH 换成了 BAT

2.3 自我清算(Self-Liquidation)

想象如下场景:

你在 Compound 上有一笔以 ETH 作为抵押借出 DAI 的贷款。ETH 价格不断下跌,已经接近清算水平。你也没有或不想存入更多的 ETH 来降低你的清算水平,你也没有偿还贷款所需的 DAI。现在,与其让 MakerDAO 合约清算你的抵押品并向你收取清算费,不如采取以下步骤:

1. 发起闪电贷,借出一笔 DAI,金额是你在 Compound 上的欠债

2. 偿还 Compound 上的 DAI 贷款,提取 ETH

3. 将足够的 ETH 换成 DAI,以偿还步骤1的 闪电贷+费用

4. 拿住你剩下的 ETH

经过以上步骤,就可以实现自我清算,避免了合约清算以及清算费用。

24小时热点

​张庭夫妇:收割完国内100亿再转战马来西亚!比炒币来钱快多了

区块链网QKLW.COM记者报道:张庭夫妇收割完国内100亿 ... 置顶

8814

网信办整治“币圈”乱象,关闭上万个违规账号和105家网站

网信办整治“币圈”乱象,关闭上万个违规账号和105家网站 ... 置顶

45961

加密交易平台Hotbit在8月11日爆雷了

继安银(AEX)、虎符(Hoo)之后,又一家虚拟货币交易平台 ...

4158

MakersPlace

加密货币基金三箭资本欠35亿美元爆雷

加密货币基金三箭资本破产清算的更多细节被曝出。 ...

3705

zTag

加密期货交易所 CoinFLEX爆雷

加密货币冬天让 Nuri 资不抵债,而 CoinFlex 正 ...

3688

宙核

以太坊 Gas 费真的越低越好吗

高 Gas 会导致糟糕的用户体验,但也能为以太坊带来性感的市 ...

1037

比特币康先森

美债收益率创11年新高 投资者抛售风险资产 美股、加密市场被“双杀”

华尔街自 6 月以来最糟糕的一周刚刚结束,美股期货本周再次大 ...

2573

洞壹元典

瞄准高净值客户 新加坡星展银行计划扩大加密货币业务

金融时报消息指出,尽管存在加密货币熊市,新加坡最大的银行仍计 ...

4151

秦储

Tornado 混币器有可能爆雷

隐私对于 Crypto 来说是一件很奇怪的事,很多人不以为然 ...

8941

One Art数字藏品

全球前十交易所BKEX招募合伙人,高额佣金天天返!

当前的加密市场是大趋势。越来越多的人开始身兼数职。交易所板块 ...

39661

BKEX(币客)

Sui 生态中有哪些项目值得关注

近期,在新一轮公链叙事中,有着 Move 双子星之称的高性能 ...

4792

LBank

吸血、迁移与资本局 Move 公链大火背后

区块链网QKLW.COM记者报道:“这个 Aptos Bui ...

1717

1inch

热点专题

以游戏带动引擎发展实现功能迭代与技术演进

游戏引擎作为游戏创作工具与游戏运行的底层控制器,着力于在虚拟 ... 置顶

24543

2022年打假总结:存活近3年 疯狂的“传销币”GEC是怎么苟延残喘至今?

币圈从来不缺乏资金盘或是传销币,但多数都不长久,一夜之间项目 ...

2756353

加密兔

2022年打假总结:Pi Network项目的传销性质Pi币

曾经,号称“走路就能赚钱”拥有大量用户和广泛影响的国内APP ...

2159467

文昌链

国内460种传销币套路和骗子币名单大曝光

全员警惕!!!国内460种传销币套路和骗子币名单大曝光(附全 ...

1468618

Coin Metrics

柴犬币SHIB来了

受狗狗币启发,柴犬币(SHIB)近两天被创造出来。

1195451

Luart

专门忽悠企业家的中国十大骗子大师

“大师”的伎俩: 最近几年,在网络、机场的书店, ...

1144342

希壤

非常硬核的LP流动性挖矿的核算

2021年1月19日20:00MDX正式上线交易挖矿和流动性 ...

1067608

RMRK

什么是去中心化交易所(DEX)?

去中心化交易所是一个基于区块链的交易所,它不将用户资金和个人 ...

1053018

bitFlyer交易所

骗走了中国人5000亿MBI集团的“易物币”长什么样的

人性终究还是舍弃不掉自己贪婪的一面! 今年10月 ...

823414

a16z

在Mdex上挖矿教程

Mdex是火币生态链上的去中心化交易所,Mdex挖矿于1月1 ...

752806

大都会资本

国家区块链相关政策汇总

据零壹智库不完全统计,截至2019年12月,国家层面共计出台 ...

652259

利得链