闪电贷技术详解-Part 1

2022-08-06 10:29 栏目:行业动态 来源:网络整理 查看()

熊市就像一块试金石,德菲的核心业态哪个能跨越周期,发展得更好?周期中暴露出哪些问题,值得后来者借鉴?SharkTeam合约安全系列课程的【DeFi Security】将和大家一起探讨和深化,第二课【闪电贷技术详解】。

文章很长,分为三个部分。这是第一部分:

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

2.闪电贷款合同的实现及风险防范。

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

1 闪电贷原理介绍

1.1 概念描述

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

在德菲领域,闪电贷提供金融业务免抵押贷款服务,是德菲世界的利器。

闪贷的概念最早是由Marble协议提出的,后来由Aave、dYdX、Uniswap等协议推广。第一个闪贷操作来自于Aave协议。

1.2 设计原理

闪贷是通过智能合约的原子性实现的零风险贷款业务,所以闪贷业务只能通过智能合约来实现。

简单来说,在大宗交易中,你可以同时完成借款和还款两个操作,不需要抵押任何资产,只需要支付手续费。

借入资金后,用户可以将借入的资产用于其他操作,如套利、抵押还款、自我清算等。

然后在交易结束时,用户只需要及时归还借的钱和手续费,否则交易会像什么都没发生一样回滚。

什么是原子性?

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

以太坊中的每个事务都是原子的,以太坊中的每个事务都可以包含多个操作,比如:

从l dYdX贷款和还款;

提供以太上的复合,借戴;

l把半斋的戴换成了;在曲线中;

在L Uniswap等上为戴/USDC池提供流动性。

所有这些操作都可以在一个事务中同时完成,只要一个操作失败,整个事务就会像什么都没发生一样无法回滚。

单笔交易只受气费和以太坊块容量的限制,所以理论上可以有上千个操作步骤。

1.3 成功案例

首先,实施闪电贷最重要的是找一个闪电贷提供商。

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

通常有一个固定的成本使用快速贷款。例如,Aave合同要求借款人偿还初始金额0.09%的贷款金额。这笔费用的0.09%会分给存款人和集成商。前者提供可用于借贷的资金,而后者便于使用Aave的flash loan API。这笔费用的一部分也将被兑换成AAVE代币。

闪电贷技术详解-Part 1

闪电贷技术详解-Part 1

一旦从借贷池中借入该金额,就可以用于其他套利操作,只要在不同步骤所在的区块链结束时迅速偿还贷款。

因为贷款必须在一次交易中偿还,所以不存在借款人不偿还贷款的风险。唯一的风险是智能合约和平台的持续风险。

1.4 闪电贷与闪电兑

闪贷和闪换是区块链独有的概念。下表显示了两者之间的一些主要差异。

闪电贷技术详解-Part 1

闪电贷(Flash Loan)必须用与你借的资产相同的资产偿还:如果你借了戴,你需要偿还戴。生息协议Aave对闪电贷款收取0.09%的费用。它至少需要三个操作:

1.向一家银行借钱

2.赎回股票

3.在另一只DEX上进行套利交易实现盈利,最终偿还贷款和闪贷费用。

闪电兑(Flash Swap)交易者在交易后期支付(或返还)资产之前,允许接收资产并在其他地方使用。就像在Uniswap上做的一样,闪电换汇没有固定的费用,而是一个换汇费用。相对于闪贷,闪兑可以算是一种“免费”的贷款,因为兑换费用是从交易订单中扣除的,我们不用另外付费。最后一个区别是:我们可以偿还我们交换的任何资产。如果我们通过闪电交换用ETH买了Dai,就可以用Dai或者ETH来偿还,这样可以进行更复杂的操作。

乐观转帐(Optimistic Tranfer)既用于闪电换汇,也用于闪贷,这是一个很有意思的技术,我们后面会介绍。

1.5 乐观转帐

闪贷和闪汇都采用了被称为“乐观转让”的技术。这项令人惊叹的DeFi创新技术使用户能够进行无抵押贷款或兑换笔交易,只要用户在交易结束时还清贷款,就可以执行交易。为了更好地理解这个想法,让我们看一些代码。

1.5.1 闪电贷中的乐观转账

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

闪电贷技术详解-Part 1

在第878行中,我们可以看到智能合同“乐观地”将资金转移到用户的合同中——它直接转移资金,而不检查用户合同的余额,以确保用户有足够的资产来偿还贷款。

这怎么可能呢?用户不会带着这些代币跑路吗?好吧,如果这是交易的结束,那么这将是一个严重的问题。但是如你所见,代码还没有结束。用户的契约是否保留这些令牌取决于成功执行的下几行。

在乐观传输之后,在第881行,我们看到一个Aave契约,然后用令牌的乐观余额(Optimistic Balance)和用户传入的任何参数调用用户的契约。这些参数将是用户需要传递给他们的合同的任何内容。交易已成功执行。现在交易工作流在Aave合约上暂时暂停,移到用户的合约上继续,会执行其逻辑,有望成功交易。

在第884行,用户的合同代码已经执行,工作流现在返回到Aave合同,它使用require语句检查用户合同返回的值。这是乐观主义的终结。现在要看用户合约是否执行了盈利交易!如果是这样的话,一份ave合同将能够扣除其费用。如果交易不盈利,require语句就会失败,也就意味着整个交易都会失败,也就意味着我们之前乐观的转让不会实际发生。

1.5.2 闪电兑中的乐观转账

我们来看看Uniswap是如何实现其乐观转移的。这是从他们的UniswapV2Pair.sol合同中获得的,特别注意交换函数:

闪电贷技术详解-Part 1

乐观转移发生在第170-171行,这是this _safeTransfer方法。Uniswap甚至对这种乐观的转让给出了评论,以便更好地识别它(顺便说一下,Uniswap提供了大量关于其协议和合同的文档和教程)。下一行是调用乐观余额用户的Uniswap合约。

第三,假设事务工作流在Uniswap契约上暂停执行,并携带乐观转移的令牌给用户契约继续执行。一旦执行了用户合同,事务工作流将返回到Uniswap合同。然后,Uniswap合同分配用户合同的新余额,并试图收取交换费(第180-181行)。

如果用户合约未能通过代币获利,182条的require语句将失效,整个交易将回滚。这是乐观转让的关键,即100%取决于交易成功与否。如果不成功,则交易无效,恢复令牌转账前的状态。但如果成功,可以保持对转网的乐观,用户可以获利。

2 闪电贷应用场景

闪贷最常见的使用案例有三种,分别是套利、互换抵押品和自我清算。

闪电贷技术详解-Part 1

2.1 套利(Arbitrage)

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

让我们想象一下Uniswap和Curve在戴/USDC池中有一个价格差。在Curve上可以用1戴换1,但在Uniswap上只需要0.99戴就可以买1。现在你可以尝试执行以下套利:

1.通过闪电贷向Aave借10万戴。

2.在Uniswap中将100,000戴换成USDC,领取101,010 USDC。

3.将曲线上的101,010 USDC改为101,010戴

4.偿还最初的100,000戴伊0.09%的费用=100,090戴伊

5.101,010戴伊-100,090戴伊=920戴伊的利润

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

闪电贷技术详解-Part 1

1.网络费用(Network Fees):这里的网费是指区块链共识后交易写入区块链时要支付的手续费(如以太坊的燃气费)。多步套利交易可能成本很高,所以在计算利润时,我们必须将手续考虑在内。

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

3.抢先交易(Frontrunning):很可能其他人会发现同样的机会,并试图抢在你前面。最重要的是,监控mempool的机器人可以发现你的利润套利机会,并通过以更高的气费发送相同的交易来“窃取”你的利润机会。

2.2 更换抵押品(Swapping Collateral)

假设你用ETH做抵押从Compound借了DAI。例如,您可以通过以下方式将担保品从ETH更改为BAT:

1.发起闪电贷款借给戴

2.与借款人戴复合偿还借款

3.提取你的ETH

4.把你的ETH换成Uniswap的球棒

5.提供BAT作为化合物的抵押品

6.把你的球棒抵押借给戴

7.用借来的戴费用偿还步骤1中的闪电贷款。

通过此轮操作,你只需额外支付贷款金额的0.09%,就可以成功将你的抵押物从ETH变更为BAT。

2.3 自我清算(Self-Liquidation)

想象以下场景:

你有一笔贷款,以联邦银行为抵押,借给戴复利。ETH价格不断下跌,已经接近平仓水平。你也没有或者不想存更多的ETH来降低你的变现水平,你也没有还贷款所需的DAI。现在,与其让MakerDAO contract清算您的抵押品并向您收取清算费,不如采取以下步骤:

1.启动闪电贷款,借给阿呆,数额是你的债务复合。

2.以复利偿还戴贷款并提取ETH

3.用戴替换足够的ETH来偿还步骤1中的闪电贷款费用

4.抓紧你剩下的时间

经过以上步骤,可以实现自清算,避免合同清算和清算费用。

来源:DeFi Way

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发