Crypto OS
Non-Technical Crypto OS第三阶段 · Crypto 如何重新创造金融

第 16 章 · DeFi Lending 如何运行

没有信用审查,怎么敢把钱借给陌生人?

练习的能力
Financial LiteracyOnchain Literacy
动手
在测试网或小额真实环境里存入抵押品、借出资产,把抵押率推到接近清算线再还回去。
AI Lab
让 AI 把一个借贷协议画成资产负债表,与银行对照,再核对它的利率模型参数。

一个现实问题

你去银行申请一笔 5 万元的贷款。

银行要看你的收入证明、工作单位、征信记录、名下资产、负债情况,可能还要一个担保人。材料齐全的情况下,两周左右给答复。

这一整套流程的目的只有一个:银行需要判断你这个人是否可信。 因为如果你不还,银行只能走催收和诉讼,可能要花上几个月甚至几年。

现在换一个场景。你打开一个链上借贷协议,连上钱包,点两下,十秒钟后 5 万美元的稳定币到账。

协议不知道你是谁。没有你的收入,没有你的身份,没有你的国籍,甚至不知道你是人还是一段程序。它也不可能起诉你——它不知道去哪里起诉。

它凭什么敢把钱给你?

思想实验

设想一台自动当铺。

它是一台机器,立在街边,规则写在外壳上,没有人值守:

  1. 你把一件东西放进左边的槽口。机器有办法随时知道这件东西当前值多少钱
  2. 假设它值 10000 块。机器最多借给你 5000 块。
  3. 任何时候,只要这件东西的价值跌到 6250 块以下,机器会亮红灯。
  4. 红灯亮起,任何路人都可以跑过来,替你还掉那 5000 块,然后把你的东西拿走——而且机器会额外给他一点好处,比如让他只花 4750 就能把东西拿走。
  5. 你随时可以还钱赎回,也可以随时再押点东西进去把红灯灭掉。

请注意这台机器根本没有判断你。它不关心你是谁、还不还得上、会不会跑。它甚至希望你别还——你不还,它就把东西卖了,还多赚一笔。

对机器来说,「借款人违约」这件事根本不构成风险。它把整个问题换掉了:从「这个人可信吗」换成了「这件东西跌得够不够快」。

但这台机器有三个前提,缺一不可:

  • 它必须随时知道那件东西值多少钱,而且这个价格不能被人操纵。
  • 红灯亮的时候,必须真的有人跑过来。没人来,机器就一直亮着灯,债务收不回。
  • 那个人拿走东西之后,必须能在市场上卖掉。卖不掉,他就不会来。

这三个前提在平静的日子里都成立。这一章后半部分要讲的,全都是它们不成立的那些时刻。

你来决定

你有价值 10000 美元的 ETH,想借出稳定币。协议允许你最多借到抵押品价值的 75%,清算线在 80%。

借多少?

观察结果

把这件事变成可以拖的东西。三个滑块:抵押品值多少、借出比例、价格跌多少。

借出金额
5,000 美元
健康度(小于 1 触发清算)
1.12
当前状态
安全

清算线按 80% 计算。在这个 LTV 下,抵押品跌掉约 37.5% 就会被清算。注意:所有人都在同一条曲线上,价格快速下跌时,清算本身会继续压低价格。

先把「抵押品价格下跌」拖到 0,只调中间那个借出比例,看右边的健康度怎么变。再把跌幅慢慢拉大,看健康度什么时候跌破 1。

会得到这样一张表(清算线按 80% 算):

借出比例 LTV抵押 10000 能借出价格不动时的健康度跌多少会被清算
20%20004.0075%
30%30002.6762.5%
40%40002.0050%
50%50001.6037.5%
60%60001.3325%
70%70001.1412.5%
75%75001.076.25%

规律很干净,不需要背,能推出来就行:

健康度     = 抵押品当前价值 × 清算线 ÷ 借出金额
可承受跌幅 = 1 − LTV ÷ 清算线

然后是这一章真正的转折。上面那张表假设了一件事:你被清算的时候,抵押品能卖得掉。

看看清算发生时的完整链条:

  1. 抵押品价格下跌
  2. 大量头寸健康度跌破 1
  3. 清算人买走抵押品
  4. 清算人把抵押品卖到市场上
  5. 价格进一步下跌
  6. 更多头寸健康度跌破 1
最后一环接回第一环。平静时这是一条直线,压力时它是一个循环。

清算本身是一个卖出动作。 它把抵押品推到市场上,而市场的深度——第 15 章那个 y——是有限的。所有人的头寸都建立在同一条价格曲线上,所以清算不是各自独立发生的事件,它们会互相触发。

这就是为什么把滑块拖到极端才有意义:单看一个仓位,37.5% 的安全垫很厚;但如果所有人都在 37.5% 这个位置,那么价格跌到 35% 的时候,整个系统离第一张骨牌只差一点点。

建立模型

和银行并排放

借贷协议不是一个新物种,它是一张被重写的资产负债表。

银行链上借贷协议
资产贷款、国债、准备金借款人的欠款 + 池子里没借出去的部分
负债储户的存款存款人手里的凭证
资本股东权益,用来吸收坏账通常没有,或只有一笔不大的储备金
放款依据信用:收入、征信、担保抵押品的市价
放款速度数天到数周一个区块
违约怎么办催收、诉讼、拍卖,几个月清算人,几秒钟
杠杆倍数资产可达资本的十几倍不放大,每一笔都超额抵押
期限错配严重:短期存款支持长期贷款几乎没有:两边都是活期
挤兑长什么样储户排队,取不到钱利用率冲到 100%,存款人提不出来
谁兜底股东、存款保险、央行没有人。坏账由存款人按比例承担
利率谁定央行政策 + 银行定价一条公开的公式,按利用率自动算

看这张表,能看清三件事:

  1. 协议放弃了信用评估,换来了速度和无需许可。 代价是它只能借给「本来就有资产的人」——它不做普惠信贷,它做的是流动性。
  2. 协议没有资本缓冲。 银行亏了,先亏股东的钱;协议亏了,直接亏存款人的钱。这是最容易被忽略的一行。
  3. 协议没有期限错配,但有利用率风险。 银行挤兑是因为钱被长期借出去了;协议挤兑是因为钱被借出去的比例太高了。表现形式不同,感受一样:你想提,提不出来。

利率是一条公式,不是一个人定的

存款人和借款人之间的价格,由一个叫利用率的数字决定:

利用率 = 已借出的金额 ÷ 池子里总共存入的金额

利率模型通常长这样:利用率低的时候,借款利率缓慢上升;超过某个拐点(常见设在 80% 附近)之后,利率陡峭地往上翻。

这个拐点不是随便设的,它是一个用价格赶人的机制:利用率太低,利率低,借款便宜,吸引借款人进来;利用率太高,利率暴涨,借款人还钱、存款人涌入,利用率降回来。

换句话说,拐点之后的陡峭段是这个系统的「挤兑刹车」。它不承诺你随时能提款,它承诺的是「提不出来的时候,会有很强的经济压力把钱推回来」。

存款人拿到的利率是从借款人那里来的:

存款利率 ≈ 借款利率 × 利用率 × (1 − 协议抽成)

这个式子在第 17 章会反复用到。先看一个直接的推论:利用率 50% 时,存款利率大约只有借款利率的一半。 如果一个产品告诉你「存款年化和借款年化差不多」,那说明利用率接近 100%——而利用率接近 100% 意味着你大概率提不出来。

三个前提,对应三类事故

那台自动当铺的三个前提,各自对应一类真实发生过的失败:

前提失效时发生什么属于哪类风险
价格随时可知且不可操纵用错误的价格清算,或者该清算的没清算Oracle Risk
有人愿意来清算红灯一直亮着,债务收不回,形成坏账Operational / Liquidity
抵押品能在市场上卖掉清算人接了货却出不掉,于是没人愿意接Liquidity Risk

第 24 章会把这三类放进统一的风险模型。这里要记住的是:它们都不是代码 Bug,代码可以完美执行,系统照样亏钱。

它叫什么

Collateral抵押品

你锁进协议、用来支持借款的资产。

关键不是数量,而是质量:它的波动率有多大、深度有多好、有没有被广泛接受。一个波动 80% 的代币作抵押,和一个稳定币作抵押,是完全不同的两种头寸,哪怕 LTV 一模一样。

LTVLoan-to-Value,贷款价值比

借出金额除以抵押品当前价值。

协议通常有两个数:最高可借 LTV(你建仓时的上限)和清算线 LTV(触发清算的位置)。两者之间的空隙就是你的安全垫。很多人只看前一个数,而决定你命运的是后一个。

Health Factor健康度

抵押品价值乘以清算线,再除以借款金额。小于 1 就会被清算。

它是把「还剩多少空间」压缩成的一个数。健康度 1.1 听起来还好,换算成跌幅只有 9%。 建议永远把它换算回跌幅来看,直觉才对得上。

Utilization利用率

已借出的资金占池子总存款的比例。

它同时决定三件事:借款利率、存款利率,以及你能不能提款。利用率 100% 时,池子里一分钱都没有,存款人要等到有人还钱或者有人存钱才能提出来。看任何一个借贷池子,这个数字要和 APY 一起看。

Interest Rate Model利率模型

把利用率映射到利率的那条曲线,通常带一个拐点。

它是协议里为数不多的「可以被治理投票改掉」的参数之一。改拐点位置、改斜率,都会立刻改变所有人的成本。去看一眼这个参数归谁管,是研究一个借贷协议的必做项。

Liquidation清算

健康度跌破 1 时,第三方替借款人偿还部分债务、按折扣价取走对应抵押品的过程。

三个细节经常被忽略:清算通常不是一次性全平,而是清掉一部分让健康度回到安全区;清算人拿到的折扣(清算罚金)由借款人承担;执行清算的是逐利的机器人,它们只在有利可图时出现

Bad Debt坏账

抵押品价值已经低于债务,但清算没能及时完成,缺口留在协议里。

谁承担?没有股东,没有保险,通常是存款人按比例承担,或者由协议的储备金填补——而储备金几乎总是小于极端情况下的缺口。这是链上借贷与银行最本质的区别。

动手

动手把一个真实仓位推到接近清算线,再安全地退回来一个借贷协议,优先选测试网测试网 0 元;主网请用你能接受全部损失的金额

优先在测试网上做。 如果你选择在主网上做,请用你能接受全部损失的金额,一般几美元到几十美元足够——这个 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

AI Lab让 AI 把借贷协议画成资产负债表,你去核对利率参数Level 2 · AI Copilot

两段任务,第二段才是重点:

第一段:
把一个链上超额抵押借贷协议画成一张资产负债表,
左边资产、右边负债与权益,每一项写清楚它对应链上的什么东西。
然后把它和一家商业银行的资产负债表并排对比,
重点说明这三行的差异:资本缓冲、期限错配、坏账由谁承担。

第二段:
针对协议 [名称] 的 [某个资产] 市场,查出并列表:
- 最高可借 LTV、清算线 LTV、清算罚金
- 利率模型的拐点利用率、拐点前斜率、拐点后斜率
- 协议抽成比例(储备金系数)
- 当前的利用率、借款 APY、存款 APY
- 这些参数由谁可以修改,修改要走什么流程

每一项给出来源链接和取数时间。查不到写「未找到」,不要用记忆里的数字。
最后用你查到的参数,验算一次:存款 APY 是否约等于 借款 APY × 利用率 × (1 − 抽成)。

最后那句验算是整个任务的抓手。它是一个闭合的检验:如果模型给的三个数算不出第四个数,那么这四个数里至少有一个是编的,你不需要去查也知道有问题。

顺便观察一件事:借贷协议的参数是这个行业里变化最频繁的东西之一,治理投票随时在改。模型训练数据里的那一套参数,大概率已经不是今天的了。

AI 说完之后,你必须自己验证

  • 它列的资产端和负债端能否对上:存款是负债,借款是资产,很多模型会写反
  • 它有没有在「资本」那一行写上股东权益——链上协议通常没有这一项
  • 它给的清算线、最高可借 LTV、清算罚金,你能在协议文档或链上参数里逐个找到
  • 利率模型的拐点位置和斜率,它是查到的还是编的,让它给出处
  • 它写的存款利率公式里有没有利用率这一项,没有就是错的
  • 它说「坏账由协议承担」时,追问具体由哪一笔钱承担、那笔钱现在有多少
  • 让它写清楚每个数字的取数时间:利率和利用率是分钟级变化的

真实案例

拥堵的那一天,抵押品被以接近零的价格拿走2020 年 3 月

一次剧烈下跌中,网络严重拥堵,Gas 价格暴涨。某抵押借贷系统的清算以拍卖形式进行,而当时绝大多数清算人因为 Gas 成本或系统故障没能出价。

结果是部分拍卖只有一个出价者,他以接近零的价格拿走了抵押品。系统留下了一笔坏账,最终通过增发治理代币来补。

这一次事故同时打穿了三个前提中的两个:清算人没来,来的那个没有竞争。 代码完全按设计执行,损失照样发生。

用一个浅池子的价格当预言机多次发生

若干次攻击的结构是一样的:协议直接用某个链上池子的即时价格作为抵押品估值来源,而那个池子的深度很小。

攻击者先用一笔资金把池子价格拉高,让自己的抵押品「瞬间变得很值钱」,借空另一边的资产,然后收手让价格回落。

第 15 章那个公式在这里变成了攻击成本的计算器:池子越浅,把价格推上去越便宜。 这也是为什么成熟协议会用多个来源的中位数、时间加权价格,并对深度不足的资产设置借款上限。

抵押品卖不掉的那一笔坏账2022 年

一个大额头寸用一种流动性较差的代币作抵押、借出稳定币。价格下跌后触发清算,但清算人算了一笔账:拿到抵押品之后,市场上根本没有足够的深度让他卖掉。

于是没有人来清算,头寸一路恶化,协议最终留下了一笔八位数的坏账。

教训很具体:清算能否执行,取决于抵押品在那一刻的深度,而不是它在行情网站上的市值。 第 15 章的四步动作,在这里是一个风控工具。

利用率冲到 100% 的那几天多次发生

某些市场在需求突增时,利用率会长时间贴在接近 100% 的位置。存款人看到的 APY 非常高,但同时发现一件事:提不出来。

利率模型的陡峭段确实在发挥作用,但这个过程需要时间,而且如果借款人是为了套取某个更高的补贴而借,高利率也拦不住他。高存款 APY 和无法提款,经常是同一个事实的两种显示方式。

改一个变量

如果清算线从 80% 提到 95%

借款人的资金效率大幅提升,同样的抵押品能借出更多钱。

代价是安全垫变得极薄:LTV 90% 时,可承受跌幅只有 5.3%。更麻烦的是清算人的空间也被压缩了——从触发清算到抵押品跌破债务价值之间,只剩下很短的时间窗口和很薄的利润。

所以高清算线只在一种情况下合理:抵押品和借出资产是高度相关的(比如用一种稳定币抵押借另一种稳定币,或者用质押凭证抵押借它的底层资产)。你会看到协议对这类资产单独开一档参数,就是这个原因。

如果取消清算罚金

对借款人友好了:被清算时不再额外损失一笔。

但清算人就没有理由来了。清算要付 Gas、要承担抵押品在卖出期间继续下跌的风险,没有折扣就是做慈善。

结果是所有的清算都不会发生,坏账全部留在协议里,由存款人承担。罚金不是惩罚,是付给清算人的酬劳。 它的高低是在「借款人的成本」和「清算的可靠性」之间取舍。

如果抵押品换成一种稳定币,借出另一种稳定币

价格风险几乎消失,可承受跌幅大到不可能触发。这也是为什么这类市场的清算线可以设得很高。

但风险没有消失,它换了形式:现在你的风险是抵押品那一侧脱锚。第 13 章讲过,脱锚分两种,储备性脱锚不会恢复。

而且这时候会出现一个新的结构:如果所有人都用同一种稳定币作抵押、借出另一种,那么一旦第一种出问题,清算会把它大量抛向市场,加速它的脱锚。这和第 21 章要讲的反身性是同一个东西。

如果协议开始提供无抵押信用贷

它就必须重新引入银行做的那件事:判断这个人可不可信。

这意味着要么引入链下身份与征信(那么它不再是无需许可的),要么引入某种链上信誉(那么要回答「怎么防止一个人创建一万个地址」),要么引入担保人机制(那么风险转移给了担保人,问题没消失只是换了承担者)。

这是链上借贷至今没有大规模解决的问题。超额抵押不是一个过渡方案,它是「不认识对方」这个约束下唯一能自动执行的方案。

带走的问题

2
为什么需要 Blockchain?

这一章给出了一个相当有力的答案:借贷需要 Blockchain,是因为抵押、估值、清算这三件事必须在同一套规则下自动执行,而且任何人都能验证和参与。如果清算要靠一家公司来执行,那么这家公司出问题时整个系统就停了——2020 年那次事故里,失灵的恰恰是清算的执行环节。

5
谁在支付?

借款人付利息,存款人收利息,协议抽走中间一部分。这是链上少见的结构清晰、来源明确的现金流。第 17 章会告诉你这有多稀有:大多数链上收益说不出这么干净的一条链。

10
激励是什么?

清算人的激励是清算罚金。这是整个系统里最关键的一根弦:罚金太低,没人来清算;罚金太高,借款人被过度惩罚。 研究任何一个借贷协议,去看这个数字,并问一句「在最坏的行情里,这个折扣还够吸引人吗」。

9
谁承担风险?

借款人承担价格风险和清算罚金;存款人承担利用率风险(提不出来)和坏账风险;协议本身几乎不承担——它没有资本。「没有股东兜底」这一条,是把银行的表搬到链上之后,最重要的那一行差异。

本章自测

一句话带走

超额抵押把信用问题换成了清算问题,风险从违约转移到了价格与速度。

做完这一章的动手环节了?勾上它查看全部进度

本页目录