第 16 章 · DeFi Lending 如何运行
没有信用审查,怎么敢把钱借给陌生人?
- 练习的能力
- Financial LiteracyOnchain Literacy
- 动手
- 在测试网或小额真实环境里存入抵押品、借出资产,把抵押率推到接近清算线再还回去。
- AI Lab
- 让 AI 把一个借贷协议画成资产负债表,与银行对照,再核对它的利率模型参数。
一个现实问题
你去银行申请一笔 5 万元的贷款。
银行要看你的收入证明、工作单位、征信记录、名下资产、负债情况,可能还要一个担保人。材料齐全的情况下,两周左右给答复。
这一整套流程的目的只有一个:银行需要判断你这个人是否可信。 因为如果你不还,银行只能走催收和诉讼,可能要花上几个月甚至几年。
现在换一个场景。你打开一个链上借贷协议,连上钱包,点两下,十秒钟后 5 万美元的稳定币到账。
协议不知道你是谁。没有你的收入,没有你的身份,没有你的国籍,甚至不知道你是人还是一段程序。它也不可能起诉你——它不知道去哪里起诉。
它凭什么敢把钱给你?
思想实验
设想一台自动当铺。
它是一台机器,立在街边,规则写在外壳上,没有人值守:
- 你把一件东西放进左边的槽口。机器有办法随时知道这件东西当前值多少钱。
- 假设它值 10000 块。机器最多借给你 5000 块。
- 任何时候,只要这件东西的价值跌到 6250 块以下,机器会亮红灯。
- 红灯亮起,任何路人都可以跑过来,替你还掉那 5000 块,然后把你的东西拿走——而且机器会额外给他一点好处,比如让他只花 4750 就能把东西拿走。
- 你随时可以还钱赎回,也可以随时再押点东西进去把红灯灭掉。
请注意这台机器根本没有判断你。它不关心你是谁、还不还得上、会不会跑。它甚至希望你别还——你不还,它就把东西卖了,还多赚一笔。
对机器来说,「借款人违约」这件事根本不构成风险。它把整个问题换掉了:从「这个人可信吗」换成了「这件东西跌得够不够快」。
但这台机器有三个前提,缺一不可:
- 它必须随时知道那件东西值多少钱,而且这个价格不能被人操纵。
- 红灯亮的时候,必须真的有人跑过来。没人来,机器就一直亮着灯,债务收不回。
- 那个人拿走东西之后,必须能在市场上卖掉。卖不掉,他就不会来。
这三个前提在平静的日子里都成立。这一章后半部分要讲的,全都是它们不成立的那些时刻。
你来决定
你有价值 10000 美元的 ETH,想借出稳定币。协议允许你最多借到抵押品价值的 75%,清算线在 80%。
借多少?
观察结果
把这件事变成可以拖的东西。三个滑块:抵押品值多少、借出比例、价格跌多少。
清算线按 80% 计算。在这个 LTV 下,抵押品跌掉约 37.5% 就会被清算。注意:所有人都在同一条曲线上,价格快速下跌时,清算本身会继续压低价格。
先把「抵押品价格下跌」拖到 0,只调中间那个借出比例,看右边的健康度怎么变。再把跌幅慢慢拉大,看健康度什么时候跌破 1。
会得到这样一张表(清算线按 80% 算):
| 借出比例 LTV | 抵押 10000 能借出 | 价格不动时的健康度 | 跌多少会被清算 |
|---|---|---|---|
| 20% | 2000 | 4.00 | 75% |
| 30% | 3000 | 2.67 | 62.5% |
| 40% | 4000 | 2.00 | 50% |
| 50% | 5000 | 1.60 | 37.5% |
| 60% | 6000 | 1.33 | 25% |
| 70% | 7000 | 1.14 | 12.5% |
| 75% | 7500 | 1.07 | 6.25% |
规律很干净,不需要背,能推出来就行:
健康度 = 抵押品当前价值 × 清算线 ÷ 借出金额
可承受跌幅 = 1 − LTV ÷ 清算线然后是这一章真正的转折。上面那张表假设了一件事:你被清算的时候,抵押品能卖得掉。
看看清算发生时的完整链条:
- 抵押品价格下跌
- 大量头寸健康度跌破 1
- 清算人买走抵押品
- 清算人把抵押品卖到市场上
- 价格进一步下跌
- 更多头寸健康度跌破 1
清算本身是一个卖出动作。 它把抵押品推到市场上,而市场的深度——第 15 章那个 y——是有限的。所有人的头寸都建立在同一条价格曲线上,所以清算不是各自独立发生的事件,它们会互相触发。
这就是为什么把滑块拖到极端才有意义:单看一个仓位,37.5% 的安全垫很厚;但如果所有人都在 37.5% 这个位置,那么价格跌到 35% 的时候,整个系统离第一张骨牌只差一点点。
建立模型
和银行并排放
借贷协议不是一个新物种,它是一张被重写的资产负债表。
| 银行 | 链上借贷协议 | |
|---|---|---|
| 资产 | 贷款、国债、准备金 | 借款人的欠款 + 池子里没借出去的部分 |
| 负债 | 储户的存款 | 存款人手里的凭证 |
| 资本 | 股东权益,用来吸收坏账 | 通常没有,或只有一笔不大的储备金 |
| 放款依据 | 信用:收入、征信、担保 | 抵押品的市价 |
| 放款速度 | 数天到数周 | 一个区块 |
| 违约怎么办 | 催收、诉讼、拍卖,几个月 | 清算人,几秒钟 |
| 杠杆倍数 | 资产可达资本的十几倍 | 不放大,每一笔都超额抵押 |
| 期限错配 | 严重:短期存款支持长期贷款 | 几乎没有:两边都是活期 |
| 挤兑长什么样 | 储户排队,取不到钱 | 利用率冲到 100%,存款人提不出来 |
| 谁兜底 | 股东、存款保险、央行 | 没有人。坏账由存款人按比例承担 |
| 利率谁定 | 央行政策 + 银行定价 | 一条公开的公式,按利用率自动算 |
看这张表,能看清三件事:
- 协议放弃了信用评估,换来了速度和无需许可。 代价是它只能借给「本来就有资产的人」——它不做普惠信贷,它做的是流动性。
- 协议没有资本缓冲。 银行亏了,先亏股东的钱;协议亏了,直接亏存款人的钱。这是最容易被忽略的一行。
- 协议没有期限错配,但有利用率风险。 银行挤兑是因为钱被长期借出去了;协议挤兑是因为钱被借出去的比例太高了。表现形式不同,感受一样:你想提,提不出来。
利率是一条公式,不是一个人定的
存款人和借款人之间的价格,由一个叫利用率的数字决定:
利用率 = 已借出的金额 ÷ 池子里总共存入的金额利率模型通常长这样:利用率低的时候,借款利率缓慢上升;超过某个拐点(常见设在 80% 附近)之后,利率陡峭地往上翻。
这个拐点不是随便设的,它是一个用价格赶人的机制:利用率太低,利率低,借款便宜,吸引借款人进来;利用率太高,利率暴涨,借款人还钱、存款人涌入,利用率降回来。
换句话说,拐点之后的陡峭段是这个系统的「挤兑刹车」。它不承诺你随时能提款,它承诺的是「提不出来的时候,会有很强的经济压力把钱推回来」。
存款人拿到的利率是从借款人那里来的:
存款利率 ≈ 借款利率 × 利用率 × (1 − 协议抽成)这个式子在第 17 章会反复用到。先看一个直接的推论:利用率 50% 时,存款利率大约只有借款利率的一半。 如果一个产品告诉你「存款年化和借款年化差不多」,那说明利用率接近 100%——而利用率接近 100% 意味着你大概率提不出来。
三个前提,对应三类事故
那台自动当铺的三个前提,各自对应一类真实发生过的失败:
| 前提 | 失效时发生什么 | 属于哪类风险 |
|---|---|---|
| 价格随时可知且不可操纵 | 用错误的价格清算,或者该清算的没清算 | Oracle Risk |
| 有人愿意来清算 | 红灯一直亮着,债务收不回,形成坏账 | Operational / Liquidity |
| 抵押品能在市场上卖掉 | 清算人接了货却出不掉,于是没人愿意接 | Liquidity Risk |
第 24 章会把这三类放进统一的风险模型。这里要记住的是:它们都不是代码 Bug,代码可以完美执行,系统照样亏钱。
它叫什么
你锁进协议、用来支持借款的资产。
关键不是数量,而是质量:它的波动率有多大、深度有多好、有没有被广泛接受。一个波动 80% 的代币作抵押,和一个稳定币作抵押,是完全不同的两种头寸,哪怕 LTV 一模一样。
借出金额除以抵押品当前价值。
协议通常有两个数:最高可借 LTV(你建仓时的上限)和清算线 LTV(触发清算的位置)。两者之间的空隙就是你的安全垫。很多人只看前一个数,而决定你命运的是后一个。
抵押品价值乘以清算线,再除以借款金额。小于 1 就会被清算。
它是把「还剩多少空间」压缩成的一个数。健康度 1.1 听起来还好,换算成跌幅只有 9%。 建议永远把它换算回跌幅来看,直觉才对得上。
已借出的资金占池子总存款的比例。
它同时决定三件事:借款利率、存款利率,以及你能不能提款。利用率 100% 时,池子里一分钱都没有,存款人要等到有人还钱或者有人存钱才能提出来。看任何一个借贷池子,这个数字要和 APY 一起看。
把利用率映射到利率的那条曲线,通常带一个拐点。
它是协议里为数不多的「可以被治理投票改掉」的参数之一。改拐点位置、改斜率,都会立刻改变所有人的成本。去看一眼这个参数归谁管,是研究一个借贷协议的必做项。
健康度跌破 1 时,第三方替借款人偿还部分债务、按折扣价取走对应抵押品的过程。
三个细节经常被忽略:清算通常不是一次性全平,而是清掉一部分让健康度回到安全区;清算人拿到的折扣(清算罚金)由借款人承担;执行清算的是逐利的机器人,它们只在有利可图时出现。
抵押品价值已经低于债务,但清算没能及时完成,缺口留在协议里。
谁承担?没有股东,没有保险,通常是存款人按比例承担,或者由协议的储备金填补——而储备金几乎总是小于极端情况下的缺口。这是链上借贷与银行最本质的区别。
动手
优先在测试网上做。 如果你选择在主网上做,请用你能接受全部损失的金额,一般几美元到几十美元足够——这个 Lab 的产出是「你亲眼看到健康度变化」,不是收益,所以金额小到可笑也完全不影响效果。
记录建仓前的参数。 在协议界面或文档里找到你要用的抵押品的三个数:最高可借 LTV、清算线 LTV、清算罚金。抄下来。
再记下当前的存款 APY、借款 APY 和利用率。
存入抵押品,先不借。 看界面显示的「可借额度」是多少,验证它等于「抵押品价值 × 最高可借 LTV」。对不上就去文档里找原因(很多协议对不同资产有不同的折扣系数)。
借出一小笔,观察健康度。 借到大约 30% LTV,记下健康度。然后手算一遍:抵押品价值 × 清算线 ÷ 借款额,看和界面显示的对不对得上。
分几次加借,把健康度推到 1.2 左右。 每加一次记一次健康度,同时换算成「还能跌多少」。你会亲眼看到:健康度从 2.0 降到 1.5 感觉没什么,从 1.2 降到 1.05 是悬崖。 这个非线性的手感是这个 Lab 最值钱的部分。
在 1.2 的位置停住。 然后用两种方式各把它拉回安全区一次:先追加一点抵押品,看健康度怎么变;再还掉一部分借款,看健康度怎么变。
这两个动作在真实的下跌行情里,就是你全部的选项。做过一次,和临时查怎么做,是两件事。
全部还清,取回抵押品,记录总成本。 把利息和 Gas 加起来,对照你借出的金额,算出这笔操作的真实成本。
如果这一步你愿意在测试网上多做一次:把健康度推到 1.0 以下,看清算实际发生时你损失了多少。这件事只在测试网上做。
AI Lab
两段任务,第二段才是重点:
第一段:
把一个链上超额抵押借贷协议画成一张资产负债表,
左边资产、右边负债与权益,每一项写清楚它对应链上的什么东西。
然后把它和一家商业银行的资产负债表并排对比,
重点说明这三行的差异:资本缓冲、期限错配、坏账由谁承担。
第二段:
针对协议 [名称] 的 [某个资产] 市场,查出并列表:
- 最高可借 LTV、清算线 LTV、清算罚金
- 利率模型的拐点利用率、拐点前斜率、拐点后斜率
- 协议抽成比例(储备金系数)
- 当前的利用率、借款 APY、存款 APY
- 这些参数由谁可以修改,修改要走什么流程
每一项给出来源链接和取数时间。查不到写「未找到」,不要用记忆里的数字。
最后用你查到的参数,验算一次:存款 APY 是否约等于 借款 APY × 利用率 × (1 − 抽成)。最后那句验算是整个任务的抓手。它是一个闭合的检验:如果模型给的三个数算不出第四个数,那么这四个数里至少有一个是编的,你不需要去查也知道有问题。
顺便观察一件事:借贷协议的参数是这个行业里变化最频繁的东西之一,治理投票随时在改。模型训练数据里的那一套参数,大概率已经不是今天的了。
AI 说完之后,你必须自己验证
- 它列的资产端和负债端能否对上:存款是负债,借款是资产,很多模型会写反
- 它有没有在「资本」那一行写上股东权益——链上协议通常没有这一项
- 它给的清算线、最高可借 LTV、清算罚金,你能在协议文档或链上参数里逐个找到
- 利率模型的拐点位置和斜率,它是查到的还是编的,让它给出处
- 它写的存款利率公式里有没有利用率这一项,没有就是错的
- 它说「坏账由协议承担」时,追问具体由哪一笔钱承担、那笔钱现在有多少
- 让它写清楚每个数字的取数时间:利率和利用率是分钟级变化的
真实案例
一次剧烈下跌中,网络严重拥堵,Gas 价格暴涨。某抵押借贷系统的清算以拍卖形式进行,而当时绝大多数清算人因为 Gas 成本或系统故障没能出价。
结果是部分拍卖只有一个出价者,他以接近零的价格拿走了抵押品。系统留下了一笔坏账,最终通过增发治理代币来补。
这一次事故同时打穿了三个前提中的两个:清算人没来,来的那个没有竞争。 代码完全按设计执行,损失照样发生。
若干次攻击的结构是一样的:协议直接用某个链上池子的即时价格作为抵押品估值来源,而那个池子的深度很小。
攻击者先用一笔资金把池子价格拉高,让自己的抵押品「瞬间变得很值钱」,借空另一边的资产,然后收手让价格回落。
第 15 章那个公式在这里变成了攻击成本的计算器:池子越浅,把价格推上去越便宜。 这也是为什么成熟协议会用多个来源的中位数、时间加权价格,并对深度不足的资产设置借款上限。
一个大额头寸用一种流动性较差的代币作抵押、借出稳定币。价格下跌后触发清算,但清算人算了一笔账:拿到抵押品之后,市场上根本没有足够的深度让他卖掉。
于是没有人来清算,头寸一路恶化,协议最终留下了一笔八位数的坏账。
教训很具体:清算能否执行,取决于抵押品在那一刻的深度,而不是它在行情网站上的市值。 第 15 章的四步动作,在这里是一个风控工具。
某些市场在需求突增时,利用率会长时间贴在接近 100% 的位置。存款人看到的 APY 非常高,但同时发现一件事:提不出来。
利率模型的陡峭段确实在发挥作用,但这个过程需要时间,而且如果借款人是为了套取某个更高的补贴而借,高利率也拦不住他。高存款 APY 和无法提款,经常是同一个事实的两种显示方式。
改一个变量
借款人的资金效率大幅提升,同样的抵押品能借出更多钱。
代价是安全垫变得极薄:LTV 90% 时,可承受跌幅只有 5.3%。更麻烦的是清算人的空间也被压缩了——从触发清算到抵押品跌破债务价值之间,只剩下很短的时间窗口和很薄的利润。
所以高清算线只在一种情况下合理:抵押品和借出资产是高度相关的(比如用一种稳定币抵押借另一种稳定币,或者用质押凭证抵押借它的底层资产)。你会看到协议对这类资产单独开一档参数,就是这个原因。
对借款人友好了:被清算时不再额外损失一笔。
但清算人就没有理由来了。清算要付 Gas、要承担抵押品在卖出期间继续下跌的风险,没有折扣就是做慈善。
结果是所有的清算都不会发生,坏账全部留在协议里,由存款人承担。罚金不是惩罚,是付给清算人的酬劳。 它的高低是在「借款人的成本」和「清算的可靠性」之间取舍。
价格风险几乎消失,可承受跌幅大到不可能触发。这也是为什么这类市场的清算线可以设得很高。
但风险没有消失,它换了形式:现在你的风险是抵押品那一侧脱锚。第 13 章讲过,脱锚分两种,储备性脱锚不会恢复。
而且这时候会出现一个新的结构:如果所有人都用同一种稳定币作抵押、借出另一种,那么一旦第一种出问题,清算会把它大量抛向市场,加速它的脱锚。这和第 21 章要讲的反身性是同一个东西。
它就必须重新引入银行做的那件事:判断这个人可不可信。
这意味着要么引入链下身份与征信(那么它不再是无需许可的),要么引入某种链上信誉(那么要回答「怎么防止一个人创建一万个地址」),要么引入担保人机制(那么风险转移给了担保人,问题没消失只是换了承担者)。
这是链上借贷至今没有大规模解决的问题。超额抵押不是一个过渡方案,它是「不认识对方」这个约束下唯一能自动执行的方案。
带走的问题
这一章给出了一个相当有力的答案:借贷需要 Blockchain,是因为抵押、估值、清算这三件事必须在同一套规则下自动执行,而且任何人都能验证和参与。如果清算要靠一家公司来执行,那么这家公司出问题时整个系统就停了——2020 年那次事故里,失灵的恰恰是清算的执行环节。
借款人付利息,存款人收利息,协议抽走中间一部分。这是链上少见的结构清晰、来源明确的现金流。第 17 章会告诉你这有多稀有:大多数链上收益说不出这么干净的一条链。
清算人的激励是清算罚金。这是整个系统里最关键的一根弦:罚金太低,没人来清算;罚金太高,借款人被过度惩罚。 研究任何一个借贷协议,去看这个数字,并问一句「在最坏的行情里,这个折扣还够吸引人吗」。
借款人承担价格风险和清算罚金;存款人承担利用率风险(提不出来)和坏账风险;协议本身几乎不承担——它没有资本。「没有股东兜底」这一条,是把银行的表搬到链上之后,最重要的那一行差异。
本章自测
把信用风险换成了价格风险和清算执行风险。
银行需要判断「这个人会不会还」,链上协议不需要——它只需要保证「抵押品跌破线的时候,有人能及时把它卖掉」。
代价是三条新的依赖:价格必须可知且不可操纵、必须有人愿意来清算、抵押品必须卖得掉。风险没有变少,它换了一个地方,也换了一批承担者。
危险。把它换算回跌幅就清楚了。
健康度 = 抵押品价值 × 清算线 ÷ 借款额。健康度 1.1 意味着抵押品再跌约 9%,健康度就到 1。
对一个波动率高的资产来说,9% 是一天之内就可能走完的幅度,而且很可能发生在你睡着的时候。
经验做法:永远把健康度换算成「还能跌多少」,再拿这个数去对照这个资产过去 12 个月的最大单日跌幅。 直觉对不上的时候,通常是直觉错了。
因为存款人的利息来自借款人,而池子里的钱不是全部都借出去了。
近似关系是:存款利率 ≈ 借款利率 × 利用率 × (1 − 协议抽成)。
利用率 50%、抽成 10% 时,6% 的借款利率对应大约 2.7% 的存款利率。差额的去向有两处:没被借出去的那一半钱不产生利息,以及协议抽走的那一部分。
反过来推论也成立:如果存款 APY 接近借款 APY,说明利用率接近 100%,而那意味着你提不出钱。 这两个数要一起看。
因为清算人拿到抵押品之后,通常会立刻在市场上卖掉——他要的是折扣的差价,不是持仓。
这意味着每一次清算都是一笔真实的卖单,落在第 15 章讲的那个有限深度上。价格被推低,更多头寸的健康度跌破 1,触发更多清算,更多卖单。
这是一个自我加强的循环,而且所有人的头寸都建立在同一条价格曲线上,所以它不是独立事件的叠加,是连锁反应。第 18 章会在永续合约上看到同一个结构的更快版本。
没有标准答案,但下面这些至少要覆盖:
- 抵押品清单:每种资产的最高可借 LTV、清算线、清算罚金、借款上限。看有没有流动性很差的资产被给了高 LTV。
- 价格从哪来:预言机是单一来源还是多源中位数?用现货价还是时间加权?深度不足的资产有没有额外限制?
- 利率模型:拐点在哪、斜率多陡、当前利用率是多少。
- 谁能改参数:多签、治理投票、还是某个地址直接能改?改动有没有时间锁?
- 储备金有多少:出了坏账,那笔钱够不够填?
- 历史上有没有坏账:查它的公开记录和治理讨论。
- 压力测试:用第 15 章的四步算一遍——如果最大的那个抵押品跌 50%,需要被清算的总量是多少?市场吃得下吗?
最后一步最能区分认真的研究和照抄文档。它也最可能得出一个「我算不出来」的结论——把这个结论写下来,也是有价值的产出。
一句话带走
超额抵押把信用问题换成了清算问题,风险从违约转移到了价格与速度。