本文以 Compound 金融为案例,分析了新兴的 DeFi 生态系统的风险。
入门
区块链狂热者和机构投资者们正把目光聚焦于以太坊区块链上运行的开放式金融(又名去中心化金融或 “DeFi”)平台。鉴于当下利率的历史性新低,与传统投资品相比,开放式金融应用有提供更高收益率的潜力。这些开放式金融平台通过智能合约和区块链技术提供金融产品和服务,并赋予它们透明、去中心化以及去中介化等新兴特质。
-图 0:
以太坊上热门 DeFi 产品之间的用户关系-
Compound 借贷平台是以太坊区块链上一个广为人知的开放式金融应用。该平台是以太坊上蓬勃发展的 DeFi 生态系统的枢纽,它的使用量及所积聚的资产都展现出了显著增长。
-图 1:
质押在 DeFi 中的 ETH 数量以及 ETH 价值(以美元计价)-
有了此等日渐提高的普及度及有用性,Compound 遂成我们在理解开放式金融带来的机会和风险时的一个关键样本。与其它不透明的金融系统不同,投票且不可更改历史记录的区块链让我们有能力检查去中心化系统中有关货币与债务的部分。引领用户进入这个未来的金融世界要基于共享知识,而这些知识扎根于实证分析。
Compound 用户应当充分认识到由去中心化借贷带来的风险。包括:
-
-
-
-
在《在 Compound 上存款生息需要注意的几种风险》一文中, Ameen Aoleimani 详细阐述了前两种风险,并暗示了 流动性/银行挤兑 风险的存在。
而这篇文章中,我们会重点讨论第三种风险,用经验数据来分析 Compound 金融市场中的流动性风险。
本文中所有的 “
SAI
” 均指代在 Maker DAO 单抵押品时代被叫做 “
DAI
” 的代币。
合约地址为(0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359)。
开放式金融中的流动性风险
Compound 借贷平台是一种 “
去中心化协议, 它可以根据供求情况,通过算法设定利率来建立货币市场,从而让用户能够无摩擦交易以太坊资产的时间价值
” (引自 Compound 白皮书)。
在 Compound 借贷协议中,用户可将下列种类的代币——BAT,DAI,SAI,ETH,REP,USDC,WBTC,ZRX——存入借贷市场中以赚取利率收益。这些由用户自发提供的代币形成流动性货币池,成为其他用户贷款的资金来源。
一般来说,大家都认为,资金供应方可以在任意时刻将投入的本金和利息提现——即,Compound 将为存款方留出足够多的
流动性
,以让他们可以随时使用他们的资金。然而,正如贷款方受制于流动性池的规模一样,资金供应方亦是如此;可借用的资金上限与可取出的资金上限之和便等于资金池的规模;而每一笔贷款都会缩小资金池的规模。
-图 3:
2019 年 7 月,SAI 货币市场流动性受挫。
流动性有三度直逼 0 点,这意味着出借方和借入方都几乎无法做对应的提款和贷款操作。
-
流动性开始下降时,超出流动性上限的提现操作以及贷款操作都会失败。就流动性本身而言,这并非一个坏事。这可能只是供给和需求上升的表征,也是新兴市场的表征,因此在新生的密码学货币行业中,出现流动性不足的情况是意料之中的。Compound 的设计者们早就料到会出现这种情况,因此该协议会通过浮动利率来调节市场供需。运算浮动利率的算法是写到货币市场的智能合约中的。在某一货币市场中,
该协议的浮动利率旨在以去中心化的形式应对流动性不足。然而,这样的开放式金融应用给用户造成的潜在风险为
银行挤兑
。
当存款方对市场稳定性感到焦虑,并试图快速同时提现超出平台可承受范围的资金时,
银行挤兑
便会发生,从而引发更严重的对系统的恐慌及不信任。在开放式区块链金融应用的背景下,银行挤兑意味着强大的力量——无论是资本市场自身或是被操纵的利益——冲破了去中心化协议及其自动反馈机制。
Johannes Pfeffer,Alethio 的联合创始人指出,“一旦系统中某一部分出现问题,例如 DAI 或其它稳定币崩溃,DeFi 很可能就会上演银行挤兑。”这是一个众所周知的问题,也引起了区块链社区的重视。SAI 和 DAI 稳定币的发行方 Maker DAO 有一套全局清算机制来处理市场崩溃可能造成的影响。不能否认的是,Compound 采用激励机制以控制严重的流动性不足(详情请参见附录)。然而,以下问题对开放式金融应用至关重要:
-
-
Compound 的价值是否会随着时间流逝而改变?
-
为了回答这几个问题,我们将以 SAI(也就是人们之前叫 DAI 的代币),我们撰写本文时 Compound 借贷市场上最活跃的借贷资产,作为核心来分析。
流动性枯竭之解释
通过对 Compound 的分析,我们将流动性不足分为三个引导性的定义或 “阶段”,最终给出我们的结论:
-
准流动性枯竭
:当流动性接近 0 时产生。然而,由于流动池较小,暂时还没有发生提现或贷款失败的情形。
-
实际流动性枯竭
:当由于流动池中资金不足导致提现或贷款失败时。
-
银行挤兑
:连续提现行为导致流动池迅速耗尽,直到 “零供给”,更大的市场恐慌出现。
下表显示了 2019 年 7 月 Compound 的 SAI 市场中总借出与总借入量。
-图 5:
SAI 借出与借入量——统计于首次变更利率合约时-
-
-
-
-
蓝色圆形——绿色和红线
贴近
处——为流动性枯竭及准流动性枯竭之时
7 月份 SAI 货币市场总共发生了三次
准流动性枯竭
以及一次
实际流动性枯竭
——分别发生在 7 月 15 日,19 日以及 23 日。我们注意到一些有趣的共性。
-
存款方提现
并非
导致
准流动性枯竭
的元凶。在这些日期,绿线并
没有
显著下跌(即没有出现突然的大规模提现)。
-
连续的大规模贷款
才是
准流动性枯竭
产生的真正原因。在这些日期,红线突然出现尖峰(即出现了突然的大规模借入)。
-
这些贷款使得流动性资金池减少到
几乎
所有可用资金都被借走的地步。
在两种流动性不足所导致的操作失败中,贷款失败的负面影响相对较小。显然,无法从资金池中提现自己的资金相较无法借走一定数额的资金更加严重。因此,我们的重点是,人们试图提现自己的资金,却由于流动性不足而操作失败的时刻。
那么,Compound 是否出现过
实际流动性枯竭
的情形?换句话说,尽管流动性几乎贴近 0,但实际上是否有人遇到过流动性导致的从协议提现失败的问题?
上表显示,在整个 Compound 货币市场的历史上,提现失败(“Info Descripition” 栏中的 “REDEEM”)已然发生三次之多,其中有两次与 BAT 有关。介于 BAT 市场正处于形成初期,且交易量较少,我们并不认为这些提现失败很能说明问题。更值得关注的是 2019 年 7 月 19 日在交易量更大的 SAI 市场上发生的案例。因此,我们可以下结论:图 5 中显示的 2019 年 7 月间发生的三次准流动性枯竭中有一次(发生于 7 月 19 日)乃是
实际流动性枯竭
。
-图 7:
更加详细的表 5 —— 唯一一次 SAI 提现交易失败发生之际。
参见区块浏览器。
-
图 6 将 7 月 19 日发生的提现失败标记成了黄色,图 3 以及图 5 中也能观测到这一事件。图 7 是有关这一时刻的放大版示意图。未能生效的提现交易原本试图兑现 344020.128054 枚 cSAI 代币 —— 当时的 cSAI 兑 SAI 比率为 0.0203495763,意味着这笔交易价值 7000.66 SAI。然而,同一时刻市场中的资金利用率已超过 99.97%,可用的流动性仅有 5790.16 SAI。
对于交易发起人而言,这一事件意味着 TA 尝试提现自己名下的 34.4 万枚 cSAI,但由于应用无法提供足够的资金,提现失败发生了。作为回应,Compound 调整了利率模型,以激励用户重新形成更大规模的资金池,从而使流动性回到一个较高水平(详见附录)。这一措施带来的结果是,不到 5 分钟的时间,这笔提现就得以成功兑付(参见图 8)。
-图 8:
在初次尝试失败后不到 5 分钟,用户成功提现 34.4 万 SAI。
-
千钧一发?
我们完全可以把 7 月 19 日发生的提现失败当作一个不常见的特殊案例。然而,尽管事实可能确实如此,深入的分析显示 Compound 金融过去已然经历了几次千钧一发的时刻。
我们将展示规模较大的五次事件,并深入分析其中最严重的一次。
-图 9:
五次规模较大的 “千钧一发” 时刻——让可用流动性大幅降低的提现操作-
在这五次事件中,Compound 遭遇了足以让可用流动性下降超过四分之一的单笔提现。
其中(占百分比)最大的一笔于 7 月 23 日 18:04 发生于第 8208406 个区块。(图 5 展示了这一交易,这一时刻市场中的资金利用率达到了 99.17%)。一个地址发起了超过 21 万 6 千枚 SAI 的提现,让流动池瞬间跌至仅有 1 万零 9 百枚 SAI。下图(图 10)展示了大体量的资金供应方以及在这次提现行为发生
之前
市场的流动性情形。
-图 10:
(21.6 万 SAI 提现操作发生前的)剩余流动性的临界线——意味着仅有部分大户可以完整地提现其借出,其它大体量存款方则不能-
我们亦能看到,即使在这笔 21 万 6 千枚 SAI 巨额提现交易发生之前,位列存款量前三十的大部分用户也无法将他们的资金全额提现。可以想象的是,图中这根临界线面临两种压力——存款方会通过注入资金将这条线推向右边,而 提现方/贷款 会将其推回左边。在地址为 0x…5e3d 的用户(图 10 中有专门标记)提现了 21 万 6 千枚 SAI 后,可用流动性降至 1 万枚 SAI 以下,使得更多用户无法成功提现:相较该笔提现前,另有 2125 位之多的用户面临无法全额提现的问题。
黑天鹅危机:
银行挤兑
因此,我们根据这些图片可以得出结论:Compound 金融中已经发生了至少五次准流动性枯竭(图 9)以及一次实际流动性枯竭(图 6)。有些人对此已有所警觉,但大部分人选择忽略这些事件。通过调整利率模型,协议重获其功能性以及流动性。但鉴于事实证明 Compound 的激励机制无法有效对冲流动性枯竭的风险,并且还会导致提现失败,我们必须准确评估银行挤兑发生的风险。一次被证实的流动性不足也许只会影响一位或数位用户(通常是规模较大的用户)无法成功提现,但
银行挤兑
却会让大量其它用户也无法提现,即使他们只持有相对较小的存款额。
随着 Compound 用户基础的增长,贷款规模的扩大极大地削减了流动性,这可能让存款方陷入恐慌,并开始提现资金。首先,大额的提现会失败,同时随着流动池进一步缩小,越来越多的用户将无法成功取回他们的资金。最终结果将如同传统的银行挤兑一般,唯一区别是它发生于去中心化的平台。
可以预见的是,类似这样的银行挤兑将会成为 “黑天鹅” 事件——也就是终生难遇的不可预测事件,因此也对于用户而言也难以预防。然而,我们已经知道历史上的五起流动性枯竭(7 月份发生了三起)以及一次取款失败事件。此外,通过检测借出者与借入者,我们也能观察到,在某些时刻流动性有多接近于 0 点。
缓解流动性不足与银行挤兑风险
引入监控措施
流动性枯竭的情形总会出现。尽可能快地向开放式金融用户提供有关的信息才是帮助他们避免 和/或 应对流动性风险(从而防止诸如银行挤兑等更严重事件发生)的最佳办法。及时的警报能帮助用户更好地理解 DeFi 应用,促使他们做出抉择并采取行动,从而更好地实现其财务目标。
-
-
能不断重复以下步骤:“告知 ➞ 敦促做出抉择/采取行动 ➞ 告知 ➞ 敦促做出抉择/采取行动……”
-
利用 Alethio 的监控工具,用户可以对任何已部署的智能合约或账户设定活跃且可自定义的监控。有了这些监控,一旦设置的条件触发,用户就可以实时获得警报。Alethio 监控能够免去用户主动搜索信息的操作,同时满足用户实时访问链上数据的需求。
-图 11:
在 Alethio 监控中设立目标如此简单-
-图 12:
根据你的目标设立特定警报——图中展示的是 cToken 合约(在上一步中将 cSAI 合约设立为目标)。
该警报将监控 SAI 流动性。
-
上面的截图展示了 Alethio 监控页面中有关 Compound 流动性的警报。每当流动性下降 1% ——或是任何设定的百分比或数值(即,当流动性下降或上升超过某个限度时)——监控就会发出警报。
总而言之,我们已经将警报功能搭建好,以让现有和潜在的用户能够更加放心地使用诸如 Compound 这样的开放式金融产品,并希望借此将 DeFi 系统发扬光大。有方便的渠道获取数据、信息和分析,用户才能安心地使用开放式平台。我们已开发好 Alethio 组件,力求便利以太坊用户。而且随着整个生态系统的成长,我相信我们能够将其发展得更好。
附录:
Compound 的利率激励技术
作为借贷协议,Compound 的工作原理如下所示(响应强度可能有出入):
-图 A:
Compound 流动池简化示意图(注:
当贷款方存入抵押资产时,他们实际上是抵押品代币市场上的供方。
只是为简单起见,我们才这样直白地称呼双方)-
存款方将下列七种代币 (BAT,SAI,ETH,REP,USDC,WBTC,ZRX) 之一存入相应市场中,同时贷款方凭借抵押品借走这些代币。贷款方借入的款项是从存款方存款所形成的资金池中取出的。由于每笔贷款都会缩小流动性池,贷款规模受限于流动性池的规模。然而,不是只有贷款才会缩小资金池。
一个对 Compound 的普遍理解是,借出方可以在任何时间提现他们的存款。但真是如此吗?正如前文所提及的,用户可贷的款项受流动池规模限制;图 B 展示了协议在两个方向上的资金流出——贷款方的贷款、存款方的提现,都会减少流动性池中的资金。一旦流动性开始减少,超过流动性的提现或借贷将无法完成。
因此,两种流出资金最终会汇总到一个数字上——利用率。根据 Compound 白皮书:
-对任一种代币的市场 α,都有利用率 U = 贷款量/(池内现金 + 贷款量)-
利用率不仅能展示哪个代币市场需求更高,也能作为市场的监管机制。然后,利率根据利用率和算法得出,以使得市场能达到供需均衡状态。这可以通过白皮书中提及的一个简单的等式来表达:
-示例:
贷款利率 = 2.5% + U * 20% -
请注意,以上两个公式中的常量仅作为示例;尽管它们被硬编码在每个市场相关的利率模型合约中,通过完全更新利率模型合约,它们也能被(管理员,也即由 Compound 持有的多用户地址)更改。第一个常量称为基本费率,第二个称为倍率。此外,该公式还展示了贷款利率的上限(在 100% 的利用率下,贷款利率达到最大值,为两个常量之和)。
本文撰写之时,在 Compound 的七个货币市场中存在着三种不同的利率模型合约,每种合约都有其特定的参数。现在,让我们探索这些合约中曾发生的改变——更重要的是,要了解这些改变发生时的背景(介于这些改变的细节过于丰富,我们仅讨论 SAI 这一个市场)。
利率模型
到目前为止最有趣的是
SAI
市场(直到最近的十一月中旬,USDC 才取而代之,成为贷款规模最大的币种)发生的两处改变(确切地说,第一次是更改合同,第二次是还原为原始合同)。发生的改变如下所示:
0xa1046abfc2598f48c44fb320d281d3f3c0733c9a — 原始合约,五月七日由交易 0x8caa40e8b5227b7a1079a9e883d92de018957e5256f356aa6d28b2610e7b1c44
创建
0xd928c8ead620bb316d2cefe3caf81dc2dec6ff63 — 第二份合约,七月十九日于 0x3abfc9be9f02c449bf85750736ecdca25bbe33e3632cae9c682824fd97e16cc9
创建
0xa1046abfc2598f48c44fb320d281d3f3c0733c9a — 回归原始合约,九月十六日由交易 0xd763ddbd5f7444bacc3dcbb2e21b4b8c864fd1b4bccf05ab11192e27a1acbbc1
激活
(完)
(文内提供了许多超链接,请点击阅读原文到 EthFans 网站上获取)
原文链接:
https://medium.com/alethio/overlooked-risk-illiquidity-and-bank-runs-on-compound-finance-5d6fc3922d0d
作者:
Bogdan Gheorghe、Momo Araki、Everett Muzzy
翻译 & 校对:
周瑾 & 阿剑
本文由原作者授权 EthFans 翻译及再出版。