闪电贷:去中心化金融的无抵押借贷利器

·

闪电贷是一种特殊的区块链交易,允许用户在无需提供任何抵押品的情况下借入资产,但借入的金额(加上手续费)必须在同一笔交易(也称为“单区块借贷”)结束前归还。由于其无抵押的特性,闪电贷在传统金融世界中并无直接对应的概念,理解它需要一些关于区块链区块状态管理的基础知识。

闪电贷是一个面向开发者的高级概念。要使用这一功能,您需要对以太坊虚拟机(EVM)、编程和智能合约有良好的理解。

闪电贷概述

闪电贷允许用户在一个交易内访问资金池的流动性(仅适用于已启用借贷的储备资产),只要在交易结束前归还所借金额及费用,或者(如果允许)通过开设债务头寸来结算。

Aave V3 提供了两种闪电贷选项:

注意:对于经批准的闪电贷借款人(由 ACLManager 管理),闪电贷手续费会被免除

执行流程

对开发者而言,在构建解决方案时,可以遵循以下心智模型:

  1. 您的合约调用 Pool 合约,使用 flashLoanSimple()flashLoan() 请求特定数量的某种或某几种储备资产的闪电贷。
  2. 经过一些完整性检查后,Pool 合约将所请求数量的储备资产转移至您的合约,然后调用接收者合约的 executeOperation() 函数。
  3. 您的合约此时持有闪电贷获得的资产,并执行其代码中的任何任意操作。

    • 如果您执行的是 flashLoanSimple,那么在您的代码执行完毕后,您需要授权 Pool 合约提取(approve)闪电贷金额 + 手续费。
    • 如果您执行的是 flashLoan,那么对于所有储备资产,根据为该资产传递的 interestRateMode,要么必须授权 Pool 合约提取闪电贷金额 + 手续费,要么必须有足够的抵押品或信用委托来开设债务头寸。
    • 如果应偿还的金额不足(由于余额不足、授权不足或抵押品不足无法负债),则整个交易将被回滚(revert)。
  4. 上述所有步骤均在1笔交易内完成(因此也在同一个以太坊区块内)。

闪电贷的应用场景

Aave 闪电贷已在 Aave V3 中用于流动性切换功能。其他实际应用案例包括:

如果您对如何利用这些高级策略进行套利或优化资金效率感兴趣,👉 可以查看实时工具和策略示例,深入了解市场机会。

闪电贷手续费

闪电贷手续费在部署时初始化为 0.05%,并可通过治理投票进行更新。使用 FLASHLOAN_PREMIUM_TOTAL 可以获取当前的总费用值。

闪电贷手续费可以在流动性提供者(LP)和协议国库之间共享。FLASHLOAN_PREMIUM_TOTAL 代表了借款人支付的总费用,其中:

分步指南

1. 设置准备

接收闪电贷资金的合约必须通过实现相应的 executeOperation() 函数来符合 IFlashLoanSimpleReceiverIFlashLoanReceiver 接口。

另请注意,由于应付金额将从您的合约中提取(pulled),您的合约必须授权(allowance)Pool 合约提取这些资金以偿还闪电贷本金 + 溢价。

2. 调用 flashLoan() 或 flashLoanSimple()

要调用 Pool 合约上的两种闪电贷方法之一,我们需要传入相关参数。您可以通过以下 3 种方式完成此操作:

  1. 从外部账户(EOA,即“普通”以太坊账户)调用
    要使用 EOA,请向相关的 Pool 合约发送一笔交易,调用 flashLoan()flashLoanSimple() 函数。有关参数详情,请参阅 Pool 文档,并确保使用您在步骤 1 中创建的合约地址作为 receiverAddress 参数。
  2. 从其他合约调用
    与上述从 EOA 发送交易类似,确保 receiverAddress 是您在步骤 1 中的合约地址。
  3. 同一个合约调用
    如果您想使用与步骤 1 中相同的合约,请在闪电贷方法的 receiverAddress 参数中使用 address(this)

完成闪电贷

一旦您利用闪电贷获得的资产执行了您的逻辑(在您的 executeOperation() 函数中),如果您使用了 flashLoanSimple(),或者在 flashLoan() 中对 modes 参数中的任何资产使用了 interestRateModes = 0,您将需要偿还闪电贷资金。

确保您的合约拥有足够的相关金额 + 溢价来偿还所借资产。您可以通过计算传入 executeOperation() 函数的 amountspremiums 数组中相应条目之和来得到该金额。

不需要将应付金额转移回 Pool 合约。资金将在您的操作结束时自动提取

如果您最初在 modes 参数中对任何资产使用了 mode=1mode=2,那么为 onBehalfOf 参数传递的地址将产生债务,前提是onBehalfOf 地址之前已授权 msg.sender 代表其产生债务。

这意味着您可以偿还部分资产,同时让其他资产产生债务。

常见问题

Q1: 什么是闪电贷?
闪电贷是一种无需抵押品的区块链借贷方式,允许用户在同一笔交易内借入并归还资产,只需支付少量手续费。其核心在于“使用即归还”,所有操作原子化完成,极大降低了风险。

Q2: 使用闪电贷需要什么条件?
使用者需要具备智能合约开发能力,能够部署实现特定接口的合约。同时,需要对 EVM、交易机制以及闪电贷的执行流程有清晰的理解。

Q3: 闪电贷的主要风险是什么?
主要风险在于智能合约的代码缺陷。如果合约中的逻辑(尤其是在 executeOperation 函数中)未能正确计算或预留足够的资金来偿还贷款+手续费,整个交易将失败,但用户仅损失燃气费,不会承受资产损失。

Q4: 闪电贷手续费是如何计算的?
手续费通常按贷款金额的固定比例收取(例如 Aave V3 初始为 0.05%)。总手续费(FLASHLOAN_PREMIUM_TOTAL)的一部分给流动性提供者,另一部分进入协议国库。

Q5: 普通用户(非开发者)能使用闪电贷吗?
通常不能。直接与闪电贷交互需要通过部署和调用智能合约来完成,这超出了普通用户的操作范围。但用户可能间接使用到基于闪电贷构建的应用程序(如某些DeFi聚合器)。

Q6: 除了套利和清算,闪电贷还有哪些潜在用途?
其他用途包括抵押品置换(快速将一种抵押品换成另一种)、债务再融资(以更低的利率重组债务)以及一些创新的代币互换和组合策略,这些都得益于其无需前置资本的特点。