DAI的隐秘角落:论GUNIV3-DAI/USDC VAULT的本质
0xFD7C
July 16th, 2022

稳定币的世界,存在一些不为多数人所知的奇妙的机制。这些机制往往都有比较大的影响,能够大量地“虚增”TVL和发行量,背后往往还涉及多个协议之间的绑定。之前写过一篇关于Frax Curve AMO的文章,即为此类机制之一。本文聚焦在DAI的GUNIV3-DAI/USDC VAULT上,也是很奇妙、值得把玩的一个机制。

GUNIV3-DAI/USDC VAULT概览

所有的DAI都基于CDP产生。按抵押物类型排序,第二大和第三大都是UNIV3 LP,分别是GUNIV3-DAI/USDC 0.01%和GUNIV3-DAI/USDC 0.05%,两个LP的TVL达到了644M、530M之多。

DAI抵押物一览
DAI抵押物一览

这两种抵押物和其他抵押物相比,有一些特别之处。

1. 抵押物里也有DAI,这就出现了用DAI back DAI的现象,给理解带来了一些困难。本文不就此展开,可参考MakerDAO论坛历史上的一则讨论

2. 这两种抵押物,几乎都是加了近50倍杠杆后生成的,因此,这些CDP的所有者实际投入的资金总计大约只有20M左右。

Oasis.app(MakerDAO的一个前端网站)组合了MakerDAO的两个合约模块,提供了这种杠杆功能。这个功能仔细琢磨一下,挺有意思,有丰富的内涵。下文一一展开。

GUNIV3-DAI/USDC VAULT的工作机理

Oasis.app主要用到了MakerDAO的flash mint模块以及基于GUNIV3-DAI/USDC开CDP的模块。Flash mint模块大体可以类比为闪电贷去理解。

用户开这个CDP背后的工作原理大致如下,其中部分数字为概数。

1. 用户提供一部分基础DAI,就以10万DAI为例;

2. Flash mint 450万DAI,那么此刻一共就有了460万DAI;

3. 将230万DAI通过1inch换成USDC,这么大金额的话通常底层路由会走PSM,换成了230万USDC;

4. 将230万DAI、230万USDC存入UNI V3,因为用了gelato,所以拿到了ERC20的GUNIV3 LP token;

5. 使用4里的GUNIV3 LP token,开了一个CDP,铸造了450万DAI;

6. 归还flash mint的450万DAI。

和常规的CDP不一样的是,用户开完CDP后,手里并没有DAI。

用户关CDP时,顺序如下。

1. Flash mint 450万DAI;

2. 关闭CDP,释放出抵押物,即GUNIV3 LP token;

3. 提取LP token背后的资产,即230万DAI、230万USDC;

4. 将230万USDC通过1inch换成DAI,同样走PSM,换成了230万DAI,此时一共有460万DAI;

5. 归还flash mint的450万DAI;

6. 用户拿回自己初始投入的10万DAI。

以上出于简练地讲清工作机理的目的,做了很多简化。比如最重要的一点,做LP可以吃到手续费,关CDP时拿回的DAI的数量会发生变化,这被我略去了。吃手续费应该是用户开这一类CDP的核心动力。

GUNIV3-DAI/USDC VAULT的本质

我尝试把GUNIV3-DAI/USDC VAULT调整了一下,设想了一个UNIV3-DAI/USDC minting module。为何要讨论一个虚构的module?为了提炼最核心的点。实际运行的GUNIV3-DAI/USDC VAULT,有若干不太重要的设计要素会干扰到我们的讨论,比如102%的Collateralization Ratio。在我看来,这些设计不过是为了复用DAI整体的CDP架构,但其实会干扰我们对本质的理解,不需要搞这么复杂。

设想的UNIV3-DAI/USDC minting module工作机理如下。

协议可以自由地从PSM中取出一定数量的USDC,并“凭空”印出相应数量的DAI,组UNIV3-DAI/USDC LP。LP范围可以设定得很窄,这里不展开讨论。这些DAI虽是“凭空”印出,但不会影响DAI的抵押物基础和锚定。下面展开讲下为何。

这个LP是有限定条件的LP。如果从UNIV3撤出LP,其中的DAI需立即销毁,USDC则需返还到PSM中。

场景1: 当用户在UNIV3中,使用USDC换出DAI时,LP中的USDC变多,DAI变少。这个过程和用户使用PSM铸造DAI本质无差别。

场景2: 当用户在UNIV3中,使用DAI换出USDC时,LP中的DAI变多,USDC变少。这个过程和用户使用PSM换出USDC无异。

那么回到一开始这些“凭空”印出的DAI。这些DAI真正进入流通的唯一方式,就是有用户拿USDC过来换。其中能够进入流通的DAI,都是有足额USDC支撑的。这种特殊的“凭空”印DAI的机制并不会影响DAI的价值基础和锚定。

从market maker的角度解析DAI的PSM以及GUNIV3-DAI/USDC Vault

PSM,可以看作MakerDAO协议内定制的一个交易市场,有DAI/USDC、DAI/USDP等交易对。协议方是market maker,挂了买单和卖单,盘口如下图所示。其中挂单的卖盘是“隐式”的,我做了淡化字体。PSM的用户天然都是taker,taker的买单来了之后,现场即时生成相应数量的DAI,完成交易(铸造)。

PSM背后的交易盘口
PSM背后的交易盘口

GUNIV3-DAI/USDC Vault,基于UNIV3交易市场。AMM模式,LP需要提前把流动性存入。这是“显式”卖盘,必须有已经存在的DAI放在特定的tick内。UNIV3-DAI/USDC 0.01%这个池子,如果用交易盘口的形式进行呈现,如下图所示。其中挂单的卖盘2.7亿DAI,是已经真实存在的DAI。

Uni V3背后的交易盘口
Uni V3背后的交易盘口

从本质来讲,两者并无区别。GUNIV3-DAI/USDC Vault模式下,用户使用USDC换成DAI,和用户通过PSM将USDC换成DAI,对MakerDAO协议来说是一样的效果。即,协议treasury里多了一些USDC,并产生了相应数量的流通出去的DAI。

UNIV3属于通用化的AMM,MakerDAO如果希望借由UNIV3实现DAI的新增流通(投放),自然需要“显式”卖盘,那么“凭空”印一些DAI纯粹做卖盘挂单之用,也是很自然的。

但如果单纯去统计DAI ERC20合约发行的币的总数量,就会包含这一部分特殊的存在。

结语:数字游戏与币圈帮派

1. DAI的发行量、UNIV3 TVL中的“泡沫”

如上一节所讲,GUNIV3-DAI/USDC Vault里的DAI,是特殊的存在,是“凭空”印出的。但这部分DAI计入了DAI的总发行量,因此我可以说DAI的发行量被“虚增”了五六个亿。

注:有另外一个细节,这里简要一提。makerburn.com、daistats.com这两个DAI数据站因为统计口径的缘故,额外又多统计了五个亿。比如今日这两个网站显示DAI总计69.8亿,但ethscan里DAI合约显示只有65.4亿。背后原因是因为这两个数据站是基于所有CDP进行统计,但GUNIV3-DAI/USDC Vault铸造出来的DAI用于归还flash mint、已经销毁了。

“虚增”五六个亿,相对于DAI 65亿的总盘子,或许不算是什么大问题。但这“虚增”,还帮到了Uniswap。这两个Vault总计给Uniswap V3贡献了11.5亿TVL,占了Uniswap以太链TVL的1/5多。

2. 币圈的帮派

从MakerDAO的角度看,已经有了PSM这种0滑点的DAI/USDC兑换池,为何还要这么折腾在Uni V3里安排这样的Vault?按我的理解,PSM做兑换消耗的gas较高,MakerDAO需要一个针对散户的兑换阵地。主流选择有两个,Uni V3以及Curve,那么问题来了,选哪个?

我不确定MakerDAO出于何种考虑,现实的局面是MakerDAO选择了Uni V3,把Uniswap的以太链TVL拉高了25%。Hayden顺道还可以显摆一下Uni V3的资本效率(可围观一下戏剧性的一则推特)。

多说一句,其实Curve那头也存在差不多的操作,Frax把核心的兑换阵地放在了Curve,具体机理可参考我的另一篇小文。Frax和Curve的绑定,给Frax带来了实在的利益,而MakerDAO和Uniswap的绑定渊源,就有待进一步的八卦考古了。

Subscribe for updates
Receive new entries directly to your inbox.
Collectors
View
#1
#2
#3
View collectors
This entry has been permanently stored on-chain and signed by its creator.