Gerrad Zhang
闪电贷与套利:还不上就当一切没发生过

闪电贷与套利:还不上就当一切没发生过

阶段 4(DeFi)第三篇:承接上篇结尾「池子里的钱谁都可能借——包括借了不还的,只要你在同一个区块内还回去」。没有抵押、没有信用审核,却能从 Aave 池子里借出上千万美元,到期不还也无人追债——这不是漏洞,是精心设计的机制。

Gerrad Zhang
Wuhan, China
1 min read

借了不还,也没有人来追债

上一篇(借贷协议)的结尾停在:池化借贷有一条铁律——想借,先押。但也留了一个口子:池子里的钱谁都可能借,包括「借了不还」的,只要你在同一个区块内还回去。听起来像绕口令,本篇就拆它:不用抵押、不用审核、额度上限就是池子里的全部可用流动性——这就是 闪电贷 ,DeFi 里最像「魔法」的一种借款。

无抵押借出巨额资产,搁在上一篇的框架里根本说不通:链上没有征信与追索,超额抵押是唯一答案,怎么突然冒出来一个例外?答案不在金融侧,在执行侧:闪电贷的信用不是借来的,是交易本身的性质送的。理解它只需要一个概念——原子性 ,而这正是智能合约篇讲过的执行模型的另一面。

口径说明:本篇机制描述与站内词典、Web3 深度报告阶段 4 章节保持一致;闪电贷费率、攻击案值等数字只用「量级/约」表述(各协议、各时期不同,不编造精确值)。


唯一的规则:同区块借还,不还就整体回滚

先写规则,再解释为什么规则成立。Aave 等协议的闪电贷只有一条硬约束:借款、用途、归还必须发生在同一笔交易内。交易结束时池子若没有收回本金加费用,整笔交易直接 revert(回滚)。

一笔闪电贷的两条命运长这样:

成功路径(一笔交易内完成):

  ┌─ 交易开始 ────────────────────────────────┐
  │ 1. 从 Aave 池借出 10,000 ETH              │
  │ 2. 执行任意操作:换币、套利、清算……        │
  │ 3. 归还 10,000 ETH + 费用(0.05% 量级)   │
  └─ 交易结束:所有状态变更一起生效 ───────────┘
    借款人拿走利润;池子拿回本金 + 费用

失败路径(同一笔交易,第 3 步还不上):

  ┌─ 交易开始 ────────────────────────────────┐
  │ 1. 从 Aave 池借出 10,000 ETH              │
  │ 2. 操作亏损 / 利润不够覆盖本金 + 费用      │
  │ ✗ 归还检查不通过 → revert                 │
  └─ 整笔交易回滚 ────────────────────────────┘
    借款、买卖、转账——全部像没发生过
    池子余额原封不动;发起者只损失 gas

支撑这条规则的是智能合约篇讲过的执行语义:交易是以太坊状态变更的最小单位。一笔交易里的一百个步骤,要么全部生效写进状态,要么在任何一个环节报错时全部作废——不存在「执行了一半」的中间态。闪电贷做的事,只是把「还款检查」放进交易的最后一步:检查不过,全盘作废。

为什么无抵押可行

传统贷款怕的是违约:钱出去了、人不还,银行拿抵押品抵损。闪电贷把「违约」这个状态从物理上删除了——不还钱的世界线根本不会被提交。回滚保证池子的状态零污染:借出动作既然随整笔交易作废,池子就从未真正少过钱。

所以协议不需要抵押品、不需要信用、不需要追索。唯一残余的风险是合约漏洞本身(比如代码里存在绕过还款检查的 bug)——那是所有 智能合约 共有的风险,不是闪电贷独有的。费用方面,各协议收取的本金比例通常在 0.05% 量级(随协议、时期变化),对协议而言是纯粹的「过路费」收入。


合法用途:它到底被用来干什么

套利:搬运两个池子之间的价差

AMM 篇讲过:AMM 的价格是池中两种资产的比值,不同池子、不同交易所会短暂偏离。外部行情变了、某个池子交易不活跃,价差就出现了——而价差正是套利者的食物。

传统套利有两个痛点:要本金(价差 2%,本金 100 万才赚 2 万)和跨交易风险(买入和卖出分两笔交易,中间价格可能变动)。闪电贷把两个痛点一起解决:

两个 AMM 池出现价差(示意,沿用 AMM 篇的池子口径):

  池 A:ETH ≈ $2,000          池 B:ETH ≈ $2,040
        └──────── 价差约 2% ────────┘

一笔交易内完成四步(借 → 买 → 卖 → 还):

  闪电贷借入大额 USDC(零本金)


  在池 A 低价买入 ETH ──► 池 A 价格被买高


  在池 B 高价卖出 ETH ──► 池 B 价格被压低


  归还闪电贷本金 + 费用,剩余利润落袋

  副产品:两个池子的价差被搬平——
  这正是 AMM「靠套利者跟住大盘」的实现方式

真实利润 = 价差 − 两池手续费 − 闪电贷费 − Gas 。价差稍现就会被机器人抢平,竞争让纯套利的利润非常稀薄——但它对系统有价值:套利是 AMM 价格发现的执行机构,闪电贷则让这件事不再被本金门槛垄断。

清算:Keeper 的弹药库

借贷篇讲过 清算 :HF < 1 时任何人可替借款人还债并按折扣拿走抵押品。但清算需要先垫付一笔「还债资产」——池子里的坏账头寸越大,需要的弹药越多。闪电贷让零本金的 Keeper 也能执行大额清算:借入债务资产、替还、拿走折扣抵押品、卖出换回、还贷——一笔交易内闭环,利润是那笔 5-10% 量级的罚金。

这其实是清算经济学的加强版:参与门槛更低 → 竞争更激烈 → 清算更快 → 协议更安全。闪电贷在这里是让风险控制机器转得更快的润滑油

一键换仓:原子化的资产置换

第三个用途更朴素:把多步操作打包成一步。比如把 LP 头寸从 A 池迁到 B 池,传统做法是「撤出 → 卖 → 买 → 重新加池」四笔交易,每步之间都暴露在价格波动下;用闪电贷可以在一笔交易内先借入目标资产完成配置、再用旧资产偿还——要么整个换仓完成,要么维持原样,没有中间态被价格插队。这种「多步合一、整体成败」的编排能力,是后面讲 DeFi 乐高组合的底层前置条件。


攻击面:同样的工具,换个方向用

最经典的模式是配合预言机操纵。回顾借贷篇的伏笔:协议靠 预言机 喂价,而「喂价是否可信」是一个新的信任假设。如果某个协议的喂价来源恰好是单一薄流动性池的现货价,攻击路径就成立了:

预言机操纵攻击(简化示意):

  1. 闪电贷借入巨额 USDC(零本金启动)
  2. 全部砸进薄流动性的 X/USDC 池买入 X

        ▼  x*y=k:池子越薄,价格被砸得越歪
  3. 协议的价格源正是这个池 → 协议以为 X 暴涨


  4. 攻击者用少量 X 作抵押,按虚高价
     从协议借出大量真实资产(USDC 等)


  5. 池价回落,X 恢复原价;卖掉借来的资产,
     归还闪电贷,利润离场
  ── 受害者是协议金库与它的存款人

注意攻击的每一步单看都合法:买卖是正常交易、抵押借贷是正常功能、闪电贷是正常工具。被击穿的只有一处——协议相信了一个可以被临时操纵的价格。所以社区的共识是:工具无善恶,责任在协议设计——不要用单一现货价做关键决策。防御手段一句话带过:TWAP(时间加权平均价,让瞬时操纵难以影响均值)与多源聚合喂价(如 Chainlink 类网络,操纵单一来源无济于事)。

顺带把两个相关名词放进视野(口径与站内词典一致):MEV 指验证者通过操纵交易顺序获取的额外利润——上一节那些「抢平价差的机器人」就在参与这场竞价;三明治攻击 是 MEV 的典型形态:看到你的大额买单排着队,攻击者抢先买入推高价格、在你的交易成交后立刻卖出,前后两笔交易像两片面包夹住你,你以更差的价格成交。闪电贷常被用作这类策略的弹药,但同样地——被夹的根因是订单流可见,不是闪电贷本身。


总结:从攻击者的工具箱到安全设计的必修课

复盘本篇:闪电贷只有一条规则——同区块借还,不还就整体回滚;规则的地基是交易原子性,回滚让「违约」在物理上不存在,于是无抵押成立;它的正常用途是套利、清算、一键换仓,本质都是单区块内的原子编排;而当它与单价格源的协议相遇,就成了攻击的杠杆——教训不是禁用工具,而是协议必须假设「任何人都可能零本金借用整个池子的购买力」,把 TWAP 与多源喂价当成必修课。

阶段 4 走到这里,四块积木已就位三块:AMM 给了定价,借贷给了杠杆,闪电贷给了原子编排。但每篇讲的都还是单点策略——真实用户面对的问题是组合性的:一笔兑换要跨多个池找最优价,一笔存款要跨多个协议比收益。把策略打包的组合层——聚合器与收益金库——是阶段 4 的收官篇。

相关文章:

Comments

Link copied to clipboard!