【事件分析】20250112-Usual 赎回机制调整事件
背景信息
Usual 是一个聚合 RWA 的稳定币发行协议,经济模型中存在三种代币:
- USD0:Usual 发行的稳定币。
- USD0++:USD0++ 是 USD0 的质押版本,为期4年,可获得 USUAL 代币奖励。
- 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 赎回,但需要没收部分 USUAL 收益。
- 无条件退出:以底价赎回,目前设定为 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 项目方已经给你安排好啦!
在 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 市场的流动性大量撤出。

- 贷款方:由于抵押品的价格下跌出现坏账风险,所以紧急撤离。
- 借款方:由于贷款方大测出,借贷比例上升,导致借款方需要支付高额的利息(且失去了 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 选择亲自对旧市场的坏账进行清算。

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

至此,由 USD0++ 赎回机制调整导致的连锁事件暂告一段落,官方的 X 账号目前也没有新的内容更新。在这个事件中主要遭受损失的用户还是在 Morpho 上抵押 USD0++ 进行循环贷的用户。目前社交账号上对 Usual 的讨论主要以谴责项目方为主。第一次对这类区块链事件进行分享(挺有意思),如果文章存在纰漏或者理解不当的地方,还请多多指教。
【事件分析】20250112-Usual 赎回机制调整事件的更多相关文章
- Android中Touch事件分析--解决HorizontalScrollView滑动和按钮事件触发问题
之前写过关于HorizontalScrollView滑动和按钮事件触发问题,但是不能所有的情况,最近几天一直在想这个问题,今天有一个比较好的解决思路,最终应用在项目里面效果也很好,首先说明一下功能: ...
- DBA_Oracle Event等待事件分析(概念)
2014-12-18 Created By BaoXinjian
- jQuery-1.9.1源码分析系列(十) 事件系统——事件体系结构
又是一个重磅功能点. 在分析源码之前分析一下体系结构,有助于源码理解.实际上在jQuery出现之前,Dean Edwards的跨浏览器AddEvent()设计做的已经比较优秀了:而且jQuery事件系 ...
- jQuery源码解读-事件分析
最原始的事件注册 addEventListener方法大家应该都很熟悉,它是Html元素注册事件最原始的方法.先看下addEventListener方法签名: element.addEventList ...
- 关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用
http://blog.csdn.net/5iasp/article/details/37054171 文章标题:关于JAVA中事件分发和监听机制实现的代码实例 文章地址: http://blog.c ...
- cocos2d-x游戏引擎核心(3.x)----事件分发机制之事件从(android,ios,desktop)系统传到cocos2dx的过程浅析
(一) Android平台下: cocos2dx 版本3.2,先导入一个android工程,然后看下AndroidManifest.xml <application android:label= ...
- QT源码之Qt信号槽机制与事件机制的联系
QT源码之Qt信号槽机制与事件机制的联系是本文要介绍的内容,通过解决一个问题,从中分析出的理论,先来看内容. 本文就是来解决一个问题,就是当signal和slot的连接为Qt::QueuedConne ...
- Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线
Go beyond yourself rather than beyond others. 上篇文章 深入理解 EventBus 3.0 之使用篇 我们了解了 EventBus 的特性以及如何使用,这 ...
- 08 (OC)* 事件的传递和响应机制
前言:苹果的官方文档<Event Handling Guide for iOS>对事件处理做了非常详尽清晰的解释,建议大家仔细研读 1. iOS中的事件介绍 2. 事件的产生和传递 3. ...
- react第五单元(事件系统-原生事件-react中的合成事件-详解事件的冒泡和捕获机制)
第五单元(事件系统-原生事件-react中的合成事件-详解事件的冒泡和捕获机制) 课程目标 深入理解和掌握事件的冒泡及捕获机制 理解react中的合成事件的本质 在react组件中合理的使用原生事件 ...
随机推荐
- Centos7安装部署prometheus
普罗米修斯的主要特点是: 具有由度量名称和键/值对标识的时间序列数据的多维数据模型 PromQL,一种灵活的查询语言, 可以利用这一维度 不依赖分布式存储; 单个服务器节点是自治的 时间序列集合通过H ...
- GPU 环境搭建指南:如何在裸机、Docker、K8s 等环境中使用 GPU
本文主要分享在不同环境,例如裸机.Docker 和 Kubernetes 等环境中如何使用 GPU. 跳转阅读原文:GPU 环境搭建指南:如何在裸机.Docker.K8s 等环境中使用 GPU 1. ...
- 模算术 modular arithmetic
https://en.wikipedia.org/wiki/Modular_arithmetic#Integers_modulo_n 模算术: 整数达到特定值时会' 折返 ' 回来-- 模数 modu ...
- Redis中常见的数据类型及其应用场景
五种常见数据类型 Redis中的数据类型指的是 value存储的数据类型,key都是以String类型存储的,value根据场景需要,可以以String.List等类型进行存储. 各数据类型介绍: R ...
- context之WithTimeout的使用
1. context包的WithTimeout()函数接受一个 Context 和超时时间作为参数,返回其子Context和取消函数cancel2. 新创建协程中传入子Context做参数,且需监控子 ...
- Java线程池Executors
一 简述 线程池,作为一个管理一组同构工作线程的资源.接受提交的任务,利用线程池中的线程进行工作的处理. 在另一篇<Java多线程设计模式(4)线程池模式>利用非Executors描述了线 ...
- 2013年ImportNew最受欢迎的10篇文章
2013年即将过去,提前祝大家元旦快乐,ImportNew 整理出了本年度最受欢迎的前10篇Java和Android技术文章,每篇文章仅添加了摘要.如果您是我们的新访客,那下面这些文章不能错过.如果您 ...
- JAVA 注解示例 详解
注解(Annotation) 为我们在代码中天界信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据). 注解的语法比较简单,除了@符号的使用以外, ...
- 前端好用API之scrollIntoView
前情 在前端开发需求中,经常需要用到锚点功能,以往都是获取元素在滚动容器中的位置再设置scrollTop来实现的. scrollIntoView介绍 scrollIntoView()方法将调用它的元素 ...
- IE低版本cors跨域请求
标签:js 坑位 最近接到一个活动需求,但是服务端接口全是跨域的,由于js同源策略,ajax请求是不允许跨域请求的,比较流行的解决方法是jsonp或者cors,但当服务端是走cors的时候,发现IE1 ...