广告

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小时热点

比特币链上指标全解析

比特币链上指标可以用于判断加密货币所处市场周期,本文从MVR ...

123182

Coin Metrics

数字人民币跟其他的数字货币有什么区别?

简单来说,数字人民币和支付宝、微信支付的使用体验没什么差别

103415

Layer2

fil币是主流币吗?fil币的前景分析!

在数字货币的浩瀚海洋中,各种加密货币层出不穷,各有其独特之处 ...

1634

区块链圈小菜鸡

大模型不是一跃而起的

大模型不是一跃而起的 大模型发展的前期被称为预训 ...

5210

币信

GameFi链游平台

GameFi是一家专业的游戏运营平台,为游戏评测届的开发者和 ...

240640

CryptoPunks

曝光非法集资:时空云

FIL头部矿商再暴雷!第一大矿池时空云被警方调查! 去 ...

62784

Entropot

夏天韭菜几天割一次

夏天韭菜几天割一次? 韭菜是农作物的一种,属于蔬菜作物,与 ...

4785

K网

PUNDIX币(Pundi X [new])走势?

Pundi X(new)是一种新型的加密数字货币,它的发行是 ...

3879

coinbestex

睿蜂群(北京)旗下的“睿链库”是什么?

睿蜂群(北京)旗下的"睿链库"是一个区块链资源数据库,旨在帮 ...

7430

ImToken 多链钱包

Coinw币赢交易所APP涉嫌诈骗?

Coinw币赢交易所APP涉嫌诈骗问题最近受到大量投资者关注 ...

411166

中币交易所
广告

热点专题

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

区块链网创立于2015年初,为国内第一批有资质的区块链媒体, ...

2752704

希壤

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

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

2425274

文昌链

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

打着区块链旗号,以聚集性传销、网络传销为手段,以每枚3元的价 ...

2093978

Coin Metrics

原力元宇宙佛萨奇骗局

原力元宇宙佛萨奇骗局是一种不可思议的幻想计划,它由一群英勇可 ...

1866395

聚币网

诈骗披露:成功学周文强

又一个“成功学”大师周文强翻车 你想一夜暴富吗?你想年薪百 ...

1717304

Lazy Lions

中国十大骗局之pi network(π币、pi币、派币、兀币)

中国十大骗局之pi network(π币、pi币、派币、兀币 ...

1435289

Gemini 交易所

柴犬币SHIB来了

因其可爱形象和马斯克代言,近段时间最耀眼的加密货币非狗狗币莫 ...

1268509

Luart

链圈打诈:3000名解放军去缅甸真的假的?

3000名解放军去缅甸这个是假新闻,出兵这是个大问题,如果我 ...

1173268

a16z

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

MDX不同挖矿方法的真实收益率 如何挖取高APY?2021年 ...

1157405

RMRK

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

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

1145010

bitFlyer交易所