去中心化借贷
目录
核心摘要 (Key Takeaways)
- 核心机制:去中心化借贷协议本质上是一个资金池,存款人 (Lender) 提供闲置资产赚取利息,借款人 (Borrower) 通过超额抵押资产来借出其他资产,整个过程由智能合约自动执行。
- 动态利率模型:借贷利率并非固定不变,而是由资金使用率 (Utilization Rate) 动态调节。当资金池中大量资产被借出时(使用率高),利率会自动升高以抑制借款、鼓励存款;反之则降低利率。
- 安全基石:超额抵押与清算:为应对加密资产的价格波动,所有借款都必须超额抵押。协议通过健康因子 (Health Factor) 监控每笔贷款的风险。一旦抵押物价值跌破清算阈值,监控者 (Keeper) 会触发清算程序(如拍卖或市场售出)以保护存款人的资金。
- 关键外部依赖:预言机 (Oracle):协议需要预言机来获取抵押物和借出资产的实时价格,以准确计算健康因子。因此,预言机的稳定性和安全性至关重要,是协议最主要的攻击点之一,对于黑客来说,预言机就是提款机。
- 记账方式的演进:协议通过向存款人发放凭证Token(如Compound的cToken)来代表其在资金池中的份额。这种方式相比传统的复式记账法,极大地简化了利息计算和用户资产追踪。
1. 去中心化借贷的核心价值与传统对比
1.1. 为什么需要借贷?
借贷是源远流长的金融活动,核心在于提高资金利用效率和满足流动性需求,而非简单地“没钱才借”。
- 案例:创业与投资:创业者可能通过借贷或股权融资来扩大规模;投资者通过贷款买房、买车,可以将自有资金用于其他投资,利用杠杆放大收益。
- 例子:过去人们预期房价上涨,会将200万资金分为3个60多万的首付购买三套房,以期获得更大回报。
- 案例:个人流动性需求
- 例子:讲师分享了自己大学时每月仅有400元生活费的经历,感叹如果当时能借到一些钱,生活状态会有很大改善。这说明借贷在满足必需性需求时有其积极的一面。
1.2. 传统金融中的借贷
- 商业银行:主要利润来源是存贷利差。银行吸收存款后,必须将资金放贷出去以赚取利润。
- 例子:当前经济环境下,银行放贷压力大,会频繁致电用户推销消费贷(如30万授信),这在以前是很少见的。
- 互联网借贷:如支付宝的“借呗”、微信的“微粒贷”,审核相对宽松。但也存在大量不正规的“网贷”,它们通过“砍头息”(如借1万到手9千,还款1万3)和暴力催收(电话轰炸、喷漆)等方式牟取暴利。
- 案例:个人经历的警示
- 信用卡:讲师大学时被学长学姐以“越早办信用卡,额度涨得越快,对以后买房买车有好处”为由推销了建设银行龙卡。后来发现这完全是谎言。这张500元额度的信用卡至今仍显示在他的征信报告中。
- 结论:对普通人而言,应谨慎办理多张信用卡,并坚决远离不正规的网贷。
1.3. 区块链借贷的演进
- 中心化托管阶段:早期产品如 Genesis Capital 和 BlockFi,用户将加密资产存入平台,平台承诺固定利息。但资金的实际运作不透明,存在对手方风险。
- 去中心化协议阶段:以 Aave、Compound 和 dYdX 为代表,所有借贷逻辑都在链上通过智能合约执行,公开透明。
- 市场规模:链上借贷的总锁仓量(TVL)已达数百亿美元(截至视频录制时为360亿美元)。在牛市中,借贷需求会显著增加,因为投资者不愿出售自己看涨的资产(如BTC),而是选择抵押它们来借出稳定币等进行再投资,以放大收益。
2. 去中心化借贷的业务流程与核心角色
2.1. 核心参与方
- 存款人 (Lender):拥有闲置加密资产,将其存入资金池(智能合约)以赚取利息。
- 借款人 (Borrower):需要资金,将一种资产作为抵押品存入资金池,借出另一种资产。
- 监控者 (Keeper):链下机器人或角色,持续监控所有借款的健康状况,一旦发现抵押不足,立即触发清算程序。
- 预言机 (Oracle):为智能合约提供外部世界(即链下)的资产价格信息,是清算机制和借贷能力计算的基础。
2.2. 业务流程可视化 (Mermaid Diagram)
flowchart TD
subgraph 用户端
A[存款人 Lender]
B[借款人 Borrower]
end
subgraph 协议核心
C{资金池-智能合约}
D[监控者 Keeper]
E[预言机 Oracle]
end
A -- 存入闲置资产 --> C
C -- 支付利息 --> A
B -- 存入抵押物 --> C
C -- 借出资产 --> B
E -- 提供资产价格 --> D
D -- 监控抵押物价值 --> C
subgraph 清算流程
F[抵押物价值不足]
G[触发清算]
H[拍卖或出售抵押物]
I[偿还贷款保护存款人]
end
C -- 发现健康状况恶化 --> F
F -- Keeper检测到 --> G
G -- Keeper执行 --> H
H -- 获得资金 --> I
flowchart TD
subgraph 用户端
A[存款人 Lender]
B[借款人 Borrower]
end
subgraph 协议核心
C{资金池-智能合约}
D[监控者 Keeper]
E[预言机 Oracle]
end
A -- 存入闲置资产 --> C
C -- 支付利息 --> A
B -- 存入抵押物 --> C
C -- 借出资产 --> B
E -- 提供资产价格 --> D
D -- 监控抵押物价值 --> C
subgraph 清算流程
F[抵押物价值不足]
G[触发清算]
H[拍卖或出售抵押物]
I[偿还贷款保护存款人]
end
C -- 发现健康状况恶化 --> F
F -- Keeper检测到 --> G
G -- Keeper执行 --> H
H -- 获得资金 --> I
flowchart TD
subgraph 用户端
A[存款人 Lender]
B[借款人 Borrower]
end
subgraph 协议核心
C{资金池-智能合约}
D[监控者 Keeper]
E[预言机 Oracle]
end
A -- 存入闲置资产 --> C
C -- 支付利息 --> A
B -- 存入抵押物 --> C
C -- 借出资产 --> B
E -- 提供资产价格 --> D
D -- 监控抵押物价值 --> C
subgraph 清算流程
F[抵押物价值不足]
G[触发清算]
H[拍卖或出售抵押物]
I[偿还贷款保护存款人]
end
C -- 发现健康状况恶化 --> F
F -- Keeper检测到 --> G
G -- Keeper执行 --> H
H -- 获得资金 --> Iflowchart TD
subgraph 用户端
A[存款人 Lender]
B[借款人 Borrower]
end
subgraph 协议核心
C{资金池-智能合约}
D[监控者 Keeper]
E[预言机 Oracle]
end
A -- 存入闲置资产 --> C
C -- 支付利息 --> A
B -- 存入抵押物 --> C
C -- 借出资产 --> B
E -- 提供资产价格 --> D
D -- 监控抵押物价值 --> C
subgraph 清算流程
F[抵押物价值不足]
G[触发清算]
H[拍卖或出售抵押物]
I[偿还贷款保护存款人]
end
C -- 发现健康状况恶化 --> F
F -- Keeper检测到 --> G
G -- Keeper执行 --> H
H -- 获得资金 --> I
流程解释: 上图展示了去中心化借贷协议中各方的交互流程。
- 存借交互:存款人和借款人直接与核心的资金池(智能合约)进行交互。
- 监控与价格信息:预言机不断地向监控者(Keeper)提供最新的资产价格。
- 清算触发:监控者根据预言机的价格,持续计算资金池中每笔贷款的健康状况。一旦发现某笔贷款的抵押物价值低于安全阈值,就会触发清算流程。
- 清算执行:监控者调用智能合约的清算功能,将该笔贷款的抵押物进行拍卖或在市场上出售,用所得资金偿还借款,从而保护了存款人的本金安全。
2.3. 核心经济模型
协议的收支平衡可以用一个简化公式来表示,它确保了支付给存款人的利息来源于借款人支付的利息。
存款 \times 存款利率 + 平台费 = 借款 \times 借款利率- 这个公式解释了为什么存款利率总是低于借款利率。即使平台费为零,因为总存款额总是大于或等于总借款额(为了保留流动性),所以存款利率必然小于或等于借款利率。
3. 借贷协议设计的核心问题
一个稳健的借贷协议需要周全地考虑各方需求和潜在风险。
- 存款人 (Lender) 的考量:
- 资产托管:资产是托管在机构账户还是智能合约中?(DeFi选择后者)
- 存款利率:利率是固定的还是浮动的?如何计算?
- 借款人 (Borrower) 的考量:
- 抵押物类型:接受哪些资产作为抵押品?(通常是主流、高流动性的资产)
- 抵押率:不同资产的抵押率如何设定?
- 借款利率:利率是多少?如何随市场变化?
- 清算机制:清算过程是怎样的?价格来源是什么?
- 平台方 (Platform) 的考量:
- 资金安全:如何保护存款人的资金不被盗或因协议漏洞而损失?
- 资金利用率与流动性:如何在提高资金利用率(多放贷)和保障存款人随时提款(留有准备金)之间找到平衡?(类似银行的存款准备金)
- 平台收费:如何设定服务费,既能盈利又不会吓跑用户?
- 应急预案:当发生黑天鹅事件(如市场极端波动、预言机故障)时,如何应对?(很多协议设有紧急暂停开关
emergency stop)
4. 关键参数设计与实现
4.1. 贷款利率的确定:资金使用率模型
贷款利率是动态的,其核心目标是在保证健康流动性的前提下,尽可能多地将资金借出。
- 核心指标:存款使用率 (Utilization Rate) 存款使用率 = \frac{未还的借款数量}{未还的借款数量 + 剩余存款数量}
- 利率调整机制:利率是资金使用率的函数。
- 低使用率:当池子里大量资金闲置时,协议会提供较低的借款利率,以吸引用户来借款。
- 高使用率:当大部分资金被借走,流动性紧张时,协议会急剧提高借款利率,以抑制新的借款,并鼓励现有借款人还款。
- 案例:不同协议的利率曲线
- Compound:采用分段线性模型。在使用率低于一个拐点(如90%)时,利率随使用率平缓线性增长;一旦超过该拐点,利率曲线的斜率会急剧变大,利率飞速上升。
- dYdX:采用非线性曲线模型。前期非常平缓,但超过某个阈值(如70%)后,利率会呈指数级急剧升高。
4.2. 存款利率的确定
存款利率并非独立设定,而是根据贷款利率和资金使用率派生出来的。可以理解为,协议将从借款人那里收取的总利息,按比例分配给所有存款人。
- 案例:真实世界的利率差
- DeFi (Compound):借款利率8.53%,存款利率7.22%,利差较小。
- 传统银行:存款利率极低(活期接近0,定期2-3%),而贷款利率较高(最低3.5%,通常4-5%),利差巨大。
4.3. 资产托管与记账方式
-
核心问题:如何精确计算每个存款人在不同时间点应得的本金和利息?
-
方式一:复式记账法
- 原理:协议记录下每个用户在每个时间点的状态,每次有新的存款或利率变动时,都需要为所有用户重新计算。这种方法计算量大,效率低下。
- 案例:复式记账计算
- T0时刻:用户A存入100 DAI。
- T1时刻:池子产生20 DAI利息,A的总权益为120 DAI。用户B存入100 DAI。池子总额220 DAI。
- T2时刻:池子又产生了20 DAI利息,这20 DAI需要按T1时刻的资金占比分配。
- 取款计算:
- A的总资产 ≈ 100 (本金) + 20 (第一阶段利息) + (第二阶段利息) = 130.91 DAI。
- B的总资产 ≈ 100 (本金) + (第二阶段利息) = 109.09 DAI。
-
方式二:Token 凭证 (Tokenized Receipt)
- 原理:当用户存款时,协议会按一个动态汇率给他一个凭证Token(如Compound的cDAI)。这个凭证代表了他在资金池中的份额。利息会不断累积在资金池中,使得凭证Token相对于底层资产越来越值钱。
- 案例:Token凭证计算
- T0时刻:用户A存入100 DAI,获得100 cDAI (汇率 1:1)。
- T1时刻:池子总资产变为120 DAI。汇率变为 1 cDAI = 1.2 DAI。用户B存入100 DAI,获得 cDAI。
- T2时刻:池子总资产变为240 DAI。池中总凭证为 183.33 cDAI。最新汇率为 。
- 取款计算:
- A取款 = 100 cDAI 1.309 ≈ 130.9 DAI。
- B取款 = 83.33 cDAI 1.309 ≈ 109.08 DAI。
- 结论:Token凭证法结果一致,但极大简化了计算,只需维护一个全局汇率即可。
4.4. 抵押物与抵押率
- 核心原则:超额抵押 (Over-collateralization),即抵押物的价值必须高于借款的价值。
- 抵押率设定规律:
- 高波动性、低流动性的代币,需要极高的抵押率。案例:视频中展示了一个不知名代币的抵押率高达 10000%。
- 低波动性、高流动性的代币(如WBTC, ETH),需要较低的抵押率(通常在130%-175%之间)。
- 准入机制:并非任何资产都能成为抵押物,通常需要经过严格的风险评估和社区治理投票。
4.5. 清算机制 (Liquidation)
-
目的:在借款人抵押物价值不足以覆盖其债务时,强制出售其抵押物,以保护存款人的资金安全。
-
健康因子 (Health Factor):衡量一笔贷款安全性的关键指标。
健康因子 = \frac{抵押物总价值 \times 清算阈值}{总借款价值}- 当健康因子 > 1时,贷款是安全的。
- 当健康因子 < 1时,贷款即可被清算。
- 清算阈值 (Liquidation Threshold):一个百分比参数(如75%),代表抵押物价值相对于债务的最低安全线。注意:这个词念作 yù zhí,而非“fá zhí”。
-
案例:清算触发计算
- 初始状态:假设ETH价格为2000 DAI,清算阈值为75%。用户抵押1 ETH,借出1250 DAI。
- 健康因子计算: 健康因子 = \frac{2000 \times 0.75}{1250} = \frac{1500}{1250} = 1.2 此时健康因子 > 1,贷款安全。
- 价格下跌:ETH价格跌至1600 DAI。
- 新的健康因子计算: 健康因子 = \frac{1600 \times 0.75}{1250} = \frac{1200}{1250} = 0.96 此时健康因子 < 1,这笔贷款可以被任何一个Keeper触发清算。
-
清算方式对比:
- 荷兰式拍卖 (Dutch Auction):如MakerDAO采用。
- 优点:可能获得更好的清算价格。
- 缺点:效率较低,需要时间。
- 现货市场出售 (Direct Market Sale):直接在DEX上卖掉。
- 优点:速度极快,能迅速消除风险。
- 缺点:若市场价格是因短暂的“插针”(价格瞬间大幅下跌后迅速恢复)导致的,可能会造成用户不必要的巨大损失。
- 荷兰式拍卖 (Dutch Auction):如MakerDAO采用。
4.6. 价格来源:预言机 (Oracle) 的重要性
预言机是借贷协议的“命脉”,任何失误都可能导致灾难性后果。
- 风险:黑客可以通过操纵预言机,使其在短时间内提供一个错误的价格,然后利用这个价格差进行套利,从而掏空协议资金。
- 案例:历史上的预言机攻击
- 2019年 Synthetix:因预言机问题,导致价值10亿美元的3700万枚sETH被低价交易。
- 2020年 bZx:因预言机被操纵,损失800万美元。
5. 使用借贷产品的理由
- 存款人:
- 赚取利息:将闲置资产放入协议中,获得比放在钱包里更高的收益。
- 借款人:
- 加杠杆做多:抵押ETH借出稳定币,再用稳定币买入ETH,重复此过程,可以放大ETH上涨带来的收益。
- 加杠杆做空:抵押稳定币借出看跌的代币,立即卖掉。待该代币价格下跌后,再用更少的稳定币买回并偿还借款,赚取差价。
- 无卖出再投资:持有并看好ETH的长期价值,但又发现另一个有潜力的项目(如PEPE)。可以抵押ETH借出稳定币去投资PEPE,这样既没有丢失ETH的头寸,也抓住了新机会。
- 获取使用价值:某些代币具有投票等治理功能。如果不想卖掉自己的主流资产,可以抵押它们,借出治理代币去参与投票,事后再还回。