一、闪电贷基础:什么是闪电贷、工作原理与典型应用场景

1.1 什么是闪电贷?

闪电贷,说白了就是「借了马上还」的贷款。

传统贷款你得抵押资产、填表格、等审批。闪电贷不一样——它要求你在同一笔交易里完成「借→用→还」三个动作。只要还不上,整笔交易就回滚,就像什么都没发生过。

我刚开始接触这个概念时,也觉得挺反直觉的。借钱不用抵押?那岂不是随便借?后来才明白,它的安全机制不在链下,而在链上——靠的是以太坊交易的原子性。

核心定义: 闪电贷是一种无需抵押、在同一笔交易内完成借贷与还款的去中心化金融(DeFi)原语。

1.2 闪电贷的工作原理

理解闪电贷,你只需要记住一个词:原子性

什么意思呢?就是一笔交易要么全部执行成功,要么全部失败回滚。没有「借了一半被打断」这种中间状态。

具体流程是这样的:

  1. 借款请求:你调用闪电贷合约,说要借 1000 ETH。
  2. 资金划转:合约把 1000 ETH 转给你(或你的合约)。
  3. 执行操作:你用这笔钱做套利、清算或其他事情。
  4. 还款检查:操作完成后,合约检查你是否还回了 1000 ETH + 手续费。
  5. 成功或回滚:还上了,交易确认。没还上,整笔交易回滚,资金原路返回。

嗯,这里要注意:闪电贷的「还款」不是主动转账,而是合约在回调函数结束后自动检查余额。如果余额不够,交易直接 revert。

我曾经在审计一个项目时,发现他们把还款检查写在了回调函数之前。你想想看,钱还没还呢就先检查余额,那肯定永远通不过。这种低级错误其实挺常见的。

个人习惯: 我每次看闪电贷合约,第一件事就是定位「还款检查点」的位置。位置错了,整个逻辑就废了。

下面这张图可以帮你快速理解整个流程:

闪电贷原子交易流程 ① 借款请求 ② 资金划转 ③ 执行操作(套利/清算/抵押品交换) ④ 还款检查 ✅ 交易成功 ❌ 交易回滚 还上了 没还上

1.3 典型应用场景

闪电贷不是用来买咖啡的。它的真正价值在下面三个场景里体现得最充分。

场景一:套利

这是最常见的用法。不同 DEX 之间同一资产的价格经常有差异。比如 Uniswap 上 ETH 卖 2000 USDC,Sushiswap 上卖 2010 USDC。你借一笔闪电贷,在低价平台买入,高价平台卖出,差价就是利润。

我记得有个项目方找我审计时,信誓旦旦说他们的套利机器人「稳赚不赔」。结果我一看代码——滑点设置写死了 0.1%,但实际交易滑点经常超过 0.5%。说白了,赚的钱全喂给滑点了。

避坑指南: 我曾经见过一个套利合约,因为没考虑 gas 价格波动,导致套利利润还没 gas 费高。写套利逻辑时,一定要把 gas 成本算进去。

场景二:清算

在借贷协议里,当借款人的抵押率低于阈值时,任何人都可以触发清算。清算人偿还部分债务,获得抵押品(通常有折扣)。

但清算需要你先有资金去还债。闪电贷完美解决了这个问题——你借一笔钱去还债,拿到抵押品后卖掉,还掉闪电贷,剩下的就是利润。

我审计过一个清算合约,发现清算人拿到的抵押品价格是按预言机快照算的。但问题是,预言机快照可能已经过时了。如果市场剧烈波动,清算人可能反而亏钱。嗯,这种细节很容易被忽略。

场景三:抵押品交换

这个场景稍微进阶一点。假设你在 MakerDAO 里抵押了 ETH,借出了 DAI。现在你想把抵押品换成 WBTC,但不想还清债务重新抵押。

闪电贷可以帮你做到:借一笔 DAI 还掉债务,取出 ETH,换成 WBTC,重新抵押进去,再借出 DAI 还掉闪电贷。整个过程在一笔交易里完成,你的债务头寸保持不变,但抵押品从 ETH 变成了 WBTC。

应用场景 核心逻辑 常见风险点
套利 利用价差低买高卖 滑点设置、gas 成本、三明治攻击
清算 偿还债务获取折扣抵押品 预言机价格滞后、竞争清算
抵押品交换 不还债的情况下更换抵押品 多步操作中的重入风险
个人经验: 我建议你在写闪电贷逻辑时,把每一步操作都当成「可能失败」来处理。不要假设市场会按你的预期走。你想想看,如果套利时中间某一步的流动性突然没了,你的合约能优雅地回滚吗?

好了,闪电贷的基础就讲到这里。记住三个关键词:原子性、无抵押、单笔交易。后面的章节我们会深入每个场景的具体实现和攻击手法。


专注资料整理