背景信息

https://docs.usual.money/

Usual 是一个聚合 RWA 的稳定币发行协议,经济模型中存在三种代币:

  1. USD0:Usual 发行的稳定币。
  2. USD0++:USD0++ 是 USD0 的质押版本,为期4年,可获得 USUAL 代币奖励。
  3. USUAL:Usual 协议的治理代币。

事发缘由

https://usual.money/blog/usual-s-next-leap-solidifying-a-4-year-horizon-for-sustainable-growth

20250110,Usual 官方发公告调整 USD0++ 赎回规则,从原先的 USD0++ 可随时 1:1 兑换成 USD0 的退出机制,改为了下面两种带有处罚性质的退出机制:

  1. 有条件退出:1:1 赎回,但需要没收部分 USUAL 收益。
  2. 无条件退出:以底价赎回,目前设定为 0.87:1 ,并随着时间的推移逐渐趋于 1 美元。

这使得 USD0++ 的价格迅速从 1 跌到了 0.9

循环贷坏账风险

USD0++ 价格的下跌进一步影响了 Morpho 上进行循环贷的用户,导致这类用户需要承担高额的借款利息,直到被清算。

为什么要做循环贷

首先需要搞明白为什么会有用户在 Morpho 上进行循环贷:质押 USD0++,借出 USDC,再将 USDC 兑换成 USD0++ 进行质押,继续借出 USDC …

通常认为 USD0++ 作为 USD0 的 LST,需要持有 USD0++ 才能获取到奖励代币。但是 Usual 为了激励 USD0++ 持有者参与到 Morpho 中(可能是为了减少抛售?),如果你将 USD0++ 作为抵押品提供贷 Morpho 市场中,Usual 仍然会向你发放奖励。

在 Morpho 上的 USD0++ / USDC 市场提供了 10.36 USD0++ 作为抵押品。

在 Usual 的页面中显示已经按照 25% 的 APY 进行奖励。

由于这个机制的存在,使得一部分为了最求更高收益率的用户通过循环贷的方式在 Morpho 抵押尽可能多的 USD0++。

Morpho 固定预言机为你的循环贷保驾护航

经常做循环贷的朋友都知道,循环贷就相当于给这笔借贷加上了杠杆,循环的次数越多,杠杆越大,借出来的资金也就越多。在拉高杠杆的同时也需要面临价格波动导致高杆杠更容易被清算的风险。

不过不用担心!体贴的 Usual 项目方已经给你安排好啦!

https://app.morpho.org/market?id=0xb48bb53f0f2690c71e8813f2dc7ed6fca9ac4b0ace3faa37b4a8e5ece38fa1a2&network=mainnet

在 20240724 创建的市场 0xb48b 中,采用的是固定价格预言机,也就是说 USD0++ / USDC 的价格是一个常量 1,不会波动不会变。这下子用户终于可以放心大胆地进行循环贷了!

价格下跌,坏账出现

由于 Morpho 市场 USD0++ 的预言机价格为常量 1 ,清算惩罚为 4.38%,这就意味着如果 USD0++ 的实际价格低于 0.958 时,清算将无法获利,从而形成坏账。

基于 Morpho 市场的参数,清算 1 USDC 将获得 1.0438 USD0++。当 USD0++ 的价格低于 1 / 1.0438 = 0.958 时,清算 1 USDC 所获得的 USD0++ 价值将低于 1 USDC。

由于在 Usual 团队发出公告后 USD0++ 的价格从 1 下跌到最低 0.9,这使得 Morpho USD0++ / USDC 市场的流动性大量撤出。

  1. 贷款方:由于抵押品的价格下跌出现坏账风险,所以紧急撤离。
  2. 借款方:由于贷款方大测出,借贷比例上升,导致借款方需要支付高额的利息(且失去了 USUAL 奖励),所以同样撤出。

由于需要先还款才能撤走借款代币,所以 Supply 的撤出高峰在 Borrow 的撤出高峰之后。

Usual 清算组合拳

USD0++ 币价下跌,Morpho USD0++ / USDC 市场流动性撤出甚至出现坏账,整个晋西北乱成了一锅粥。这时候 Usual 项目方下场了,建立新市场,清算旧坏账。

建立新市场

https://x.com/usualmoney/status/1877870480268390682

Usual 在 11 号发布了一则公告,表示将会建立新的 Morpho 市场, 要求用户尽快将仓位迁移到新市场,旧市场的奖励将被废弃。

https://forum.morpho.org/t/usual-boosted-usdc-vault-whitelisting/686/11

在这篇文章中提到了新市场的一个细节:新市场的 USD0++ / USDC 价格被固定为 0.87!

新创建的 0x1EDA 市场价格,同样是采用固定预言机,只不过这次是把价格固定在了 0.87。

这个操作,使得旧市场中还没形成坏账的仓位从旧市场撤出,为了获取 USUAL 奖励而重新投入到新市场中。

清算旧坏账

未产生坏账的资金已经通过新市场安置好了,旧市场的坏账资金要怎么处理呢?Usual 选择亲自对旧市场的坏账进行清算。

查看其中一笔清算交易:https://app.blocksec.com/explorer/tx/eth/0x6aaae634c41231967681fb39dffc041a4c8e54d0277d4047191df7884601b5e4

项目方用价值 3832000 U 的 USDC 换回来了价值 3621587 U 的 4000000 USD0++,妥妥的清算了一笔坏账。

Usual 清算了这么多坏账,那它亏了吗?从账面上来看无论谁去做这笔清算都只能是认亏了,但是他作为项目方,前面提到的 USD0++ 退出惩罚机制都是针对用户的惩罚机制。作为 USD0 和 USD0++ 的发行方,Usual 完全可以绕过市场汇率限制,将 USDC0++ 换回 USD0。

也就是说,如果 Usual 将清算得到的 USDC0++ 按照 1:1 的比例换回 USD0,这笔清算他将获利 16800 U(4.38%)。

很奇妙吧。

清算后续

https://x.com/usualmoney/status/1878063870394188065

在对旧市场的大户进行了清算以后,Usual 在 X 上发布了新的推文,文中表示所有清算收益将直接流入 DAO 金库,最终使 USUAL 持有者受益。但是,收益分配的事情还没有这么简单。

  1. https://2034998704-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1PZgcBJJQo2ycNcagHTM%2Fuploads%2FP01n3oEDgxUDbfHhPRbH%2F20241127_Usual_Whitepaper.pdf?alt=media&token=7ea18542-1e8b-4f60-bbf0-e6f01ff42fce
  2. USUAL* Recap

在 UsualWhitepaper 的 5.3 中提到了一种称为 USUAL* 的代币,作为协议的创始代币(只分配给投资者、团队、贡献者和顾问),USUAL* 和质押的 USUAL 持有者平分产生的所有费用。也就是说,即使将这次的清算收益通过 DAO 金库分发给 USUAL 持有者,项目方依然可以依靠 USUAL* 代币分得一杯羹。

至此,由 USD0++ 赎回机制调整导致的连锁事件暂告一段落,官方的 X 账号目前也没有新的内容更新。在这个事件中主要遭受损失的用户还是在 Morpho 上抵押 USD0++ 进行循环贷的用户。目前社交账号上对 Usual 的讨论主要以谴责项目方为主。第一次对这类区块链事件进行分享(挺有意思),如果文章存在纰漏或者理解不当的地方,还请多多指教。

【事件分析】20250112-Usual 赎回机制调整事件的更多相关文章

  1. Android中Touch事件分析--解决HorizontalScrollView滑动和按钮事件触发问题

    之前写过关于HorizontalScrollView滑动和按钮事件触发问题,但是不能所有的情况,最近几天一直在想这个问题,今天有一个比较好的解决思路,最终应用在项目里面效果也很好,首先说明一下功能: ...

  2. DBA_Oracle Event等待事件分析(概念)

    2014-12-18 Created By BaoXinjian

  3. jQuery-1.9.1源码分析系列(十) 事件系统——事件体系结构

    又是一个重磅功能点. 在分析源码之前分析一下体系结构,有助于源码理解.实际上在jQuery出现之前,Dean Edwards的跨浏览器AddEvent()设计做的已经比较优秀了:而且jQuery事件系 ...

  4. jQuery源码解读-事件分析

    最原始的事件注册 addEventListener方法大家应该都很熟悉,它是Html元素注册事件最原始的方法.先看下addEventListener方法签名: element.addEventList ...

  5. 关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用

    http://blog.csdn.net/5iasp/article/details/37054171 文章标题:关于JAVA中事件分发和监听机制实现的代码实例 文章地址: http://blog.c ...

  6. cocos2d-x游戏引擎核心(3.x)----事件分发机制之事件从(android,ios,desktop)系统传到cocos2dx的过程浅析

    (一) Android平台下: cocos2dx 版本3.2,先导入一个android工程,然后看下AndroidManifest.xml <application android:label= ...

  7. QT源码之Qt信号槽机制与事件机制的联系

    QT源码之Qt信号槽机制与事件机制的联系是本文要介绍的内容,通过解决一个问题,从中分析出的理论,先来看内容. 本文就是来解决一个问题,就是当signal和slot的连接为Qt::QueuedConne ...

  8. Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线

    Go beyond yourself rather than beyond others. 上篇文章 深入理解 EventBus 3.0 之使用篇 我们了解了 EventBus 的特性以及如何使用,这 ...

  9. 08 (OC)* 事件的传递和响应机制

    前言:苹果的官方文档<Event Handling Guide for iOS>对事件处理做了非常详尽清晰的解释,建议大家仔细研读 1. iOS中的事件介绍 2. 事件的产生和传递 3. ...

  10. react第五单元(事件系统-原生事件-react中的合成事件-详解事件的冒泡和捕获机制)

    第五单元(事件系统-原生事件-react中的合成事件-详解事件的冒泡和捕获机制) 课程目标 深入理解和掌握事件的冒泡及捕获机制 理解react中的合成事件的本质 在react组件中合理的使用原生事件 ...

随机推荐

  1. markdown表格插入linux变量

    一.背景 看标题不难发现这是一个很"小众"的话题,其实本篇是对之前做的单元测试钉钉告警(此篇:https://www.cnblogs.com/ailiailan/p/1322203 ...

  2. MySQL,你只需要看这一篇文章就够了!PART04--完结篇

    MySQL--DAY04 索引 定义 索引是在数据库表的字段上添加的,是为了提高查询效率存在的一种机制. 一张表的一个字段可以添加一个索引,当然,多个字段联合起来也可以添加索引. 索引相当于一本书的目 ...

  3. 如何使用程序生成一个复杂的2D迷宫游戏地图

    相关: I Solved The World's Hardest Maze (with Code) 本文不做过多的内容介绍,本文主要是分享上面的这个视频内容,该内容介绍了一些自动生成复杂2D迷宫的算法 ...

  4. 干货分享:Air780E开发板如何使用?

    ​ 一.概述 CORE-AIR780E 开发板是合宙通信推出的基于 Air780E 模组所开发的,包含电源,SIM 卡,USB,天线,音频等必要功能的最小硬件系统.以方便用户在设计前期对 Air780 ...

  5. ChatGPT:编程的 “蜜糖” 还是 “砒霜”?告别依赖,拥抱自主编程的秘籍在此!

    在当今编程界,ChatGPT 就像一颗耀眼却又颇具争议的新星,它对编程有着不可忽视的影响.但这影响就像一把双刃剑,使用不当,就可能让我们在编程之路上"受伤". 一.过度依赖 Cha ...

  6. OpenWRT/iStoreOS 不从头编译内核安装4G LTE网卡 Quectel EM05-CE记录

    我的机器是x86装了iStoreOS,有4G网卡Quectel EM05 https://www.quectel.com/cn/product/lte-em05 主要参考资料如下 https://ww ...

  7. PTA题目集4~6的总结性Blog

    · 前言 本次的三个作业,由答题判题程序- 4.家居强电电路模拟程序- 1.家居强电电路模拟程序 -2组成. 答题判题程序-4是对前三次判题程序的最后升级,设计多个子类继承于基础题类来实现对每种题型的 ...

  8. 腾讯AICR : 智能化代码评审技术探索与应用实践(下)

  9. MySQL注入之Fuzz测试&Bypass WAF小结

    目录 BurpSuite Fuzz测试 内联注释 绕过union[]select联合查询 绕过敏感函数 绕过from[]information_schema查表 报错注入示例 常规绕过思路总结 空格绕 ...

  10. linux bash shell 中的单引号和双引号

    摘抄自:ABS_CN 当要引用一个变量的值时,一般推荐使用双引号.使用双引号除了变量名[2]前缀($).后引符(`)和转义符(\)外,会使shell不再解释引号中其它所有的特殊字符.[3] 用双引号时 ...