在 TradFi 中,当有人违约贷款时,债权人有权扣押资产或扣发工资。
在 DeFi 中,当有人违约时,无法从其钱包中直接拿走资产。为了强制还款,用户存入的加密货币名义价值必须大于他们借出的价值。
例如,用户必须先存入 1,000 美元的 Ether,才能借入 800 美元的 USDC。在这种情况下,Ether 被称为“抵押品”(collateral)。存入的抵押品价值高于借款金额的行为被称为“超额抵押”(overcollateralization)。
DeFi 借款的动机
DeFi 借款的一个常见用途是加杠杆。用户可以存入 1000 美元的 ETH,借出 800 美元的 USDC,然后用 USDC 购买 800 美元的 ETH。现在他们实际上拥有了 1,800 美元的 ETH,如果 ETH 价格上涨,他们将获得更多的上行收益(同时在价格下跌时承担更多风险)。
在某些司法管辖区,将 ETH 兑换成美元被视为应税事件,因此使用 ETH 作为抵押品借入 USDC(稍后再偿还贷款)可能比直接兑换资产成本更低。
更广泛地说,以资产(如汽车、房屋等)作为抵押物进行借款以满足短期流动性需求是非常普遍的,因此 DeFi 借贷协议有助于实现这种使用场景。
抵押因子
抵押因子是指可借款金额占抵押品价值的百分比。在上面的例子中,抵押因子为 80%。
具体来说
抵押因子以百分比表示。通常,波动性更大、流动性较差的资产需要_较低_的抵押因子。例如,对于极端波动的资产,如果价格容易发生剧烈波动,合约可能要求存入 1,000 美元的抵押品才能借出 500 美元。这就是 50% 的抵押因子。
另一方面,如果资产流动性很好且非常稳定,合约可能会容忍非常高的抵押因子,比如 90%。
所需的抵押因子越高,借贷协议就越具竞争力,因为借款人希望相对于他们想要借出的贷款,存入尽可能少的抵押品。
抵押因子越低,贷款人的安全边际就越高。抵押因子与安全边际之间的关系如下方 GIF 所示。

贷款价值比 (LTV)
贷款价值比是指贷款的**当前**价值占抵押品价值的百分比。例如,要求的抵押因子可能是 80%,但由于资产和抵押品价值的波动,资产价值与抵押品价值的比例可能变为 70%。
清算因子
如果贷款价值比过于接近 100%,借款金额就可能面临超过抵押品价值的风险,从而导致贷款人蒙受损失。当抵押品价值低于贷款金额时,LTV 超过 100%,我们就会面临坏账 (bad debt),协议也面临资不抵债 (insolvent)(无法向贷款人还款)的风险。
示例: Alice 抵押了价值 $1000 的资产,借出了 $800 贷款。Alice 会从协议中提取 $800。贷款人目前拥有 $200 的缓冲空间。

现在,假设经过 20 个区块后,抵押品资产的价格下跌了 30%。现在价值 $700。

由于 Alice 借出了 800 美元的贷款,而她的抵押资产现在只值 700 美元,她将没有动机去还款。
持有其资产的协议必须向贷款人偿还 800 美元,但仅有价值 700 美元的资产,从而产生了 100 美元的“坏账”。
为了防止发生这种情况,资产具有清算因子——即抵押品可以被强制从借款人手中拿走的一个百分比阈值。
清算因子的百分比始终高于抵押因子。如果不是这样,借款人可能会在借款的那一刻就被清算。例如,抵押因子可能是 80%,而清算因子为 90%。将清算因子设置得过于接近 100% 会增加坏账风险,因为在清算时抵押因子可能会超过 100%。
LTV 如何上升
贷款价值比有三种方式会上升并逼近清算因子。
-
贷款产生利息,其名义价值变大
-
抵押品价值下跌
-
借出的资产价值上涨
1) 示例:贷款产生利息,名义价值变大
用户存入 1,000 美元的 ETH 并借入 800 美元的 USDC。利息不断累积,直到贷款余额达到 900 USDC。如果清算因子为 90%,那么该笔贷款将面临清算。

2) 示例:抵押品价值下跌
用户存入 1,000 美元的 ETH 并借出 800 美元的 USDC。智能合约设置的清算因子为 90%。如果 ETH 的价值跌至 888.88 美元,则将触发清算,因为 LTV 此时达到 90%。

3) 示例:债务价值上涨
用户存入 1,000 美元的 ETH 并借出 800 美元的 USDC。由于极端的市场波动,USDC 发生脱锚,其价值变为 1.2 美元。现在债务的名义价值为 960 美元 (800 * 1.2)。由于目前的 LTV 为 96%,该笔贷款将面临清算。
清算机制
清算的具体机制因协议而异。在简单的情境下,清算人替借款人偿还 USDC 贷款,并以折扣价获得一部分抵押品。
清算通常是无许可的(permissionless)。任何人都可以调用智能合约上的函数来触发清算。
Compound V3 的机制
Compound V3 不需要清算人偿还 USDC 贷款。相反,它利用尚未借出的 USDC(未利用的 USDC)来偿还贷款。随后,该协议成为抵押品的所有者。这笔交易被称为“吸收”(absorbing)债务。现在,债务已经由储备金还清,协议掌握了多余的抵押品。多余的抵押品会立即以低于预言机价格的折扣价挂牌出售。
Compound V3 中的清算人将首先对资不抵债的贷款调用 absorb(),将抵押品吸收进协议中,然后在同一笔交易中立即调用 buyCollateral()。为了激励清算人,通常可以以低于当前市场价格的折扣购买抵押品。
在 Compound V3 中调用 absorb() 没有财务激励(尽管治理层可以将其编程加入)。然而,以折扣价购买抵押品存在财务激励,因此 MEV 清算人不断寻找机会吸收债务并随后购买新获得释放的抵押品。
清算示例
Compound V3 有贷款人存入的 100,000 美元 USDC。一名借款人存入了价值 50,000 美元的 LINK 作为抵押品,并借出了 25,000 美元的 USDC。此时 Compound V3 中有闲置未用的 75,000 美元 USDC。LINK 的价值跌至 30,000 美元,导致抵押品变为资不抵债状态,清算人调用 absorb()。在调用 absorb() 之后,Compound V3 中的余额仍然是 75,000 美元(因为违约的借款人手里拿着 25,000 美元)。然而,该协议现在接管了借款人存入的 30,000 美元 LINK。由于折扣存在,清算人将花费 28,000 USDC 购买这 30,000 美元的 LINK。这 28,000 USDC 被加到协议原有的 75,000 USDC 中。现在协议拥有了 103,000 USDC,并且没有任何抵押品。
贷款处于存续期内修改清算因子的注意事项
如果协议具备修改清算因子的机制,借款人需要获得足够提前的警告。如果清算因子在未被通知的情况下突然发生改变,他们就会遭到不公平的清算。
借贷协议通常不会没收所有抵押品
在实践中,借贷协议不会像上述例子那样导致借款人 100% 损失其抵押品。通常情况下,协议会施加例如 10% 的“清算罚金”(liquidation penalty),并仅将其中的一部分分给清算人。
清算罚金示例
使用与前一个示例相同的数值,当 LINK 价值跌至 30,000 美元时,借款人遭到清算。该借款人借出了 25,000 USDC。当清算人替其偿还 25,000 USDC 贷款时,借款人需承担 10% 的清算罚金,这意味着他们将损失 30,000 美元中的 10%,即 3000 美元。另外 25,000 美元也会从 LINK 的价值中扣除以偿还未结贷款。这剩下 30k - 3k - 25k = 2k USDC 计入借款人的账户。
店面价格
通常,清算罚金由清算人和协议分配。分配给清算人的部分是由 Compound V3 称之为“店面价格”(storefront price)的比例定义的。在上面的例子中,如果店面价格是 50%,那么 1,500 USDC 归清算人,1,500 USDC 归协议,因为清算罚金总计为 3,000 USDC。
小额贷款的风险
如果存入的抵押品金额过低,分配给清算人的清算罚金可能不足以支付清算该借款人的交易 Gas 费。由于缺乏激励去清算即将资不抵债的贷款,协议就会不断累积坏账。为了避免这些问题,借贷协议通常会强制规定贷款的最小规模。
大额贷款的风险
清算大量抵押品可能会引发价格影响,使得回收的金额低于借出金额。
大额清算时的价格影响示例
某借款人向借贷合约存入了 100 亿美元的 ETH,并借出了 90 亿美元的 USDC。ETH 的价格跌至 90 亿美元。如果清算人试图在公开市场上抛售 90 亿美元的 ETH,现实情况是这极有可能导致价格大幅下跌,使得他们最终只能卖出 80 亿美元。这将导致协议损失 10 亿美元,因为借款人提取了 90 亿 USDC,而清算人从抛售 ETH 中仅获得了 80 亿美元。
这 100 亿美元的 ETH 抵押品是否由一个借款人存入并不重要。如果 10 个各自拥有 10 亿美元 ETH 抵押品的借款人同时被清算,所产生的影响是相同的。
Compound V3 中的供应上限
为了避免上述问题,Compound V3 对每种资产规定了其能够持有的最大抵押品数量的 supplyCap。该参数由治理层根据在不造成过多负面价格影响的情况下能够清算的抵押品数量来设定。
闪崩的风险
任何涉及抵押品的情况,贷款人都必须假设价格不会下跌得太快。由于闪崩始终有可能发生,这是一种无法完全消除的风险。
风险参数是如何设置的?
在 DeFi 借贷中,不可能 100% 消除风险。例如,在价格瞬间暴跌 90% 的极端情况下,贷款人就会遭受损失。风险与回报之间永远存在着权衡。
协议可以强制实施 10% 的清算阈值,在这种情况下安全边际极大,但将没有人会从该协议借款。借贷协议有两个相互冲突的优化目标:资金效率和风险。风险因子越保守,所提供的借款业务竞争力就越弱。
虽然参数是由治理层设定的,但这些参数通常由专注于金融模型的咨询机构提供建议。
Gauntlet 目前为 Aave 和 Compound 提供风险参数建议。他们维护着这些协议的风险仪表盘。
Gauntlet 试图预测市场承压时期最糟糕的清算情况,并设定相应的参数,使得 Compound 在所有清算过程中都不会产生坏账。他们考虑的因素包括正常时期以及市场承压时期资产的波动性和资产价格的相关性。您可以在这里阅读他们的风险方法论。
在撰写本文时,Gauntlet 每年以 200 万美元 的价格与 Compound 续签合同。
其他漏洞
借贷合约还有其他漏洞途径,由于我们仅关注与抵押品和清算相关的主题,在此不再赘述。关于其他的借贷漏洞途径,请参阅我们有关智能合约安全的文章。
结论
DeFi 中的贷款必须是超额抵押的。协议接受用于发起贷款的贷款金额与抵押品价值之比即为抵押率。清算率是指引发贷款清算的价值比。智能合约本身无法主动发起交易,因此它们依赖于清算人以折扣价购买抵押品。相对于 Gas 费用,贷款金额不能太小,相对于可用流动性,贷款金额也不能太大,否则在清算坏账时就会出现问题。
在 RareSkills 了解更多
请查看我们的区块链训练营以了解更多 Web3 技术主题。
最初发布于 2023 年 12 月 30 日