---
title: 闪电贷的原子可组合性
date: '2020-08-17 10:40:55'
draft: false
summary: 闪电贷的关键不是无抵押借款，而是区块链把借款、使用和归还绑定进同一个原子交易里，让跨主体协作也获得了接近事务的效果。
slug: flash-loan-as-atomic-composability
syndication:
- platform: Weibo
  url: https://weibo.com/1648815335/JgiVH0x72
tags:
- blockchain
- defi
- flash-loan
- smart-contract
topics:
- blockchain
type: post
---

前面转了一篇介绍 `flash loan` 的微博，有朋友说还是不太好理解。我后来想了个更直觉的比方。

假设你要娶一个姑娘，丈母娘说要先看到你卡上有 `100` 万才点头。你自己没钱，于是去找银行借，说只是拿来展示一下，立刻就还。

传统世界里，银行大概率不会借。因为一旦钱先打给你，后面“立刻还回来”这件事没有办法和前面的动作强绑定，银行承担的是实打实的信用风险。

闪电贷的特别之处在于，它把“借钱”“使用这笔钱”“归还”这几个动作，全部打包进同一个原子交易（atomic transaction）里。

如果最后归还没有发生，整个交易就失败，前面的状态全部回滚，相当于什么都没发生。对贷款方来说，这不是传统意义上的无抵押放贷，而是一种借助执行环境提供的原子性约束，把风险压到极低的资金调用机制。

所以闪电贷最核心的创新，不是“可以空手套白狼”，而是区块链终于把多个主体之间的协作，也放进了一个统一事务里。

传统数据库当然也有事务，但数据库事务通常只能覆盖数据库自己的操作。你很难把“银行放款”“第三方资产交换”“还款确认”这种跨多个主体、跨多个合约的业务动作，像数据库事务那样一把包起来。

而智能合约的可组合性恰好提供了这种能力。用户把后续逻辑写成一个合约方法，借贷合约先把钱转出去，再代理调用这个方法，最后再检查资金是否回到位。如果没有回到位，就直接报错，让整个交易回滚。

从实现上看，机制并不复杂，本质上就是把一串本来分散的动作，压缩到一个不可分割的执行单元里。

这件事为什么重要？因为它不只是催生了一个新的 DeFi 工具，而是提示我们：区块链的价值，不只是“记账”或者“发币”，而是能不能把多个参与方的操作，组织成一个更强的协作原语。

当然，这种能力也会反过来带来新的攻击面。前一段时间一些协议被闪电贷放大漏洞，本质上不是闪电贷本身有问题，而是协议设计时没有把“攻击者可以在一个原子事务里临时调度巨大资金”当成前提。

所以我会觉得，理解闪电贷，关键不是盯着“无抵押借贷”这几个字，而是先看清它背后的执行模型：原子性、可组合性，以及跨主体事务化。
