USD:简析YFI创始人新作StableCredit运作机制与特性

原文标题:《AC 推出新产品 StableCredit》

早在 8 月,AC 就提出了 StableCredit 的概念,我在文章?YFI 的星辰大海?中有过简单介绍,本次 AC 发文,说明酝酿 4 个多月的想法要正式实施了。

简单说 StableCredit 是一个基于抵押型稳定币设计的存借贷与 AMM 综合运用协议,思路借鉴了?ARCx,抵押万物发债。

举个例子说明:

用户将价值 100 万的房子抵押给 YFI,YFI 给用户 100 万的稳定币贷款额度。这个稳定币贷款额度可以用来借出其他资产,比如一辆汽车。与此同时,协议会根据房子的投放收益(LP)来给用户分润。当房子价值上涨时,用户手里的借贷额度还可以向上浮动。

这个模式跟?Uniswap+Maker?很类似。用当下的场景做类比的话,就是用户将 ETH 存进 Uniswap 做市,赚收益的同时,Uniswap 还会给你一笔钱让你花。这是不是很爽?

下文将对 AC 的文章做进一步解读:

LendHub被黑简析:系LendHub中存在新旧两市场:金色财经报道,据慢雾安全区情报,2023 年 1 月 13 日,HECO 生态跨链借贷平台 LendHub 被攻击损失近 600 万美金。慢雾安全团队以简讯的形式分享如下:

此次攻击原因系 LendHub 中存在两个 lBSV cToken,其一已在 2021 年 4 月被废弃但并未从市场中移除,这导致了新旧两个 lBSV 都存在市场中。且新旧两个 lBSV 所对应的 Comptroller 并不相同但却都在市场中有价格,这造成新旧市场负债计算割裂。攻击者利用此问题在旧的市场进行抵押赎回,在新的市场进行借贷操作,恶意套取了新市场中的协议资金。

目前主要黑客获利地址为 0x9d01..ab03,黑客攻击手续费来源为 1 月 12 日从 Tornado.Cash 接收的 100 ETH。截至此时,黑客已分 11 笔共转 1,100 ETH 到 Tornado.Cash。通过威胁情报网络,已经得到黑客的部分痕迹,慢雾安全团队将持续跟进分析。[2023/1/13 11:11:00]

基本概念

AC 文章开头,先介绍了几个基本概念,包括:

抵押型稳定币(代币化债务),典型代表 Maker 的 DAI

安全公司:AurumNodePool合约遭受漏洞攻击简析:金色财经报道,据区块链安全审计公司Beosin EagleEye监测显示,2022年11月23日,AurumNodePool合约遭受漏洞攻击。

Beosin分析发现由于漏洞合约的changeRewardPerNode函数未进行验证,导致攻击者可以调用该函数进行任意值设置。

攻击者首先调用changeRewardPerNode函数将每日奖励值设置成一个极大数,接下来调用claimNodeReward函数提取节点奖励,而节点奖励的计算取决于攻击者设置的rewardPerDay值,导致计算的节点奖励非常高。而在这一笔交易之前,攻击者便通过一笔交易(0xb3bc6ca257387eae1cea3b997eb489c1a9c208d09ec4d117198029277468e25d)向合约存入了1000AUR,创建了攻击者的节点记录,从而使得攻击者能够提取出该节点奖励。最终攻击者通过该漏洞获得约50个BNB($14,538.04)。[2022/11/23 8:01:04]

借贷协议,典型代表?Aave、Compound

自动做市商(AMM),典型代表 Uniswap、Sushi

单边 AMM,典型代表:DoDo、CoFiX

慢雾:DEUS Finance 二次被黑简析:据慢雾区情报,DEUS Finance DAO在4月28日遭受闪电贷攻击,慢雾安全团队以简讯的形式将攻击原理分享如下:

1.攻击者在攻击之前先往DeiLenderSolidex抵押了SolidexsAMM-USDC/DEI的LP。

2.在几个小时后攻击者先从多个池子闪电贷借出143200000USDC。

3.随后攻击者使用借来的USDC在BaseV1Pair进行了swap操作,兑换出了9547716.9个的DEI,由于DeiLenderSolidex中的getOnChainPrice函数是直接获取DEI-USDC交易对的代币余额进行LP价格计算。因此在此次Swap操作中将拉高getOnChainPrice函数获取的LP价格。

4.在进行Swap操作后,攻击者在DeiLenderSolidex合约中通过borrow函数进行借贷,由于borrow函数中用isSolvent进行借贷检查,而在isSolvent是使用了getOnChainPrice函数参与检查。但在步骤3中getOnChainPrice的结果已经被拉高了。导致攻击者超额借出更多的DEI。

5.最后着攻击者在把用借贷出来DEI兑换成USDC归还从几个池子借出来的USDC,获利离场。

针对该事件,慢雾安全团队给出以下防范建议:本次攻击的原因主要在于使用了不安全的预言机来计算LP价格,慢雾安全团队建议可以参考Alpha Finance关于获取公平LP价格的方法。[2022/4/28 2:37:18]

利用率,可以理解为抵押率或清算线,是借贷类协议的核心数据

Grim Finance 被黑简析:攻击者通过闪电贷借出 WFTM 与 BTC 代币:据慢雾区情报,2021 年 12 月 19 日,Fantom 链上 Grim Finance 项目遭受攻击。慢雾安全团队进行分析后以简讯的形式分享给大家。

1. 攻击者通过闪电贷借出 WFTM 与 BTC 代币,并在 SpiritSwap 中添加流动性获得 SPIRIT-LP 流动性凭证。

2. 随后攻击者通过 Grim Finance 的 GrimBoostVault 合约中的 depositFor 函数进行流动性抵押操作,而 depositFor 允许用户指定转入的 token 并通过 safeTransferFrom 将用户指定的代币转入 GrimBoostVault 中,depositFor 会根据用户转账前后本合约与策略池预期接收代币(预期接收 want 代币,本次攻击中应为 SPIRIT-LP)的差值为用户铸造抵押凭证。

3. 但由于 depositFor 函数并未检查用户指定转入的 token 的合法性,攻击者在调用 depositFor 函数时传入了由攻击者恶意创建的代币合约地址。当 GrimBoostVault 通过 safeTransferFrom 函数调用恶意合约的 transferFrom 函数时,恶意合约再次重入调用了 depositFor 函数。攻击者进行了多次重入并在最后一次转入真正的 SPIRIT-LP 流动性凭证进行抵押,此操作确保了在重入前后 GrimBoostVault 预期接收代币的差值存在。随后 depositFor 函数根据此差值计算并为攻击者铸造对应的抵押凭证。

4. 由于攻击者对 GrimBoostVault 合约重入了多次,因此 GrimBoostVault 合约为攻击者铸造了远多于预期的抵押凭证。攻击者使用此凭证在 GrimBoostVault 合约中取出了远多于之前抵押的 SPIRIT-LP 流动性凭证。随后攻击者使用此 SPIRIT-LP 流动性凭证移除流动性获得 WFTM 与 BTC 代币并归还闪电贷完成获利。

此次攻击是由于 GrimBoostVault 合约的 depositFor 函数未对用户传入的 token 的合法性进行检查且无防重入锁,导致恶意用户可以传入恶意代币地址对 depositFor 进行重入获得远多于预期的抵押凭证。慢雾安全团队建议:对于用户传入的参数应检查其是否符合预期,对于函数中的外部调用应控制好外部调用带来的重入攻击等风险。[2021/12/19 7:49:04]

这里可以单独说下利用率,AC 支出当利用率为 0% 时,借 1DAI 就是 1DAI,没有溢价。当利用率为 90% 时,借 1DAI 的成本要大于 1DAI,就是借 1DAI,可能实际得到 0.98DAI,存在溢价。

慢雾:Avalanche链上Zabu Finance被黑简析:据慢雾区情报,9月12日,Avalanche上Zabu Finance项目遭受闪电贷攻击,慢雾安全团队进行分析后以简讯的形式分享给大家参考:

1.攻击者首先创建两个攻击合约,随后通过攻击合约1在Pangolin将WAVAX兑换成SPORE代币,并将获得的SPORE代币抵押至ZABUFarm合约中,为后续获取ZABU代币奖励做准备。

2.攻击者通过攻击合约2从Pangolin闪电贷借出SPORE代币,随后开始不断的使用SPORE代币在ZABUFarm合约中进行`抵押/提现`操作。由于SPORE代币在转账过程中需要收取一定的手续费(SPORE合约收取),而ZABUFarm合约实际接收到的SPORE代币数量是小于攻击者传入的抵押数量的。分析中我们注意到ZABUFarm合约在用户抵押时会直接记录用户传入的抵押数量,而不是记录合约实际收到的代币数量,但ZABUFarm合约在用户提现时允许用户全部提取用户抵押时合约记录的抵押数量。这就导致了攻击者在抵押时ZABUFarm合约实际接收到的SPORE代币数量小于攻击者在提现时ZABUFarm合约转出给攻击者的代币数量。

3.攻击者正是利用了ZABUFarm合约与SPORE代币兼容性问题导致的记账缺陷,从而不断通过`抵押/提现`操作将ZABUFarm合约中的SPORE资金消耗至一个极低的数值。而ZABUFarm合约的抵押奖励正是通过累积的区块奖励除合约中抵押的SPORE代币总量参与计算的,因此当ZABUFarm合约中的SPORE代币总量降低到一个极低的数值时无疑会计算出一个极大的奖励数值。

4.攻击者通过先前已在ZABUFarm中有进行抵押的攻击合约1获取了大量的ZABU代币奖励,随后便对ZABU代币进行了抛售。

此次攻击是由于ZabuFinance的抵押模型与SPORE代币不兼容导致的,此类问题导致的攻击已经发生的多起,慢雾安全团队建议:项目抵押模型在对接通缩型代币时应记录用户在转账前后合约实际的代币变化,而不是依赖于用户传入的抵押代币数量。[2021/9/12 23:19:21]

这个现象用 AMM 解释会非常清晰,当 DAI 和债务 1:1 添加到 50:50 的 AMM 池时,对债务的需求越多,交易滑点就越高,这也就解释了溢价的存在。

稳定币信贷

StableCredit 是一个结合了代币化债务稳定币、借贷、AMM 和单边 AMM 的协议,以创建一个完全去中心化的借贷协议。

用户可以提供任何资产并创建名为 StableCredit USD 的代币化信用(也可以支持 EUR、JPY 等)。

具体创建流程如下:

提供一定金额的 USDC

调用 USDC 价格预言机,确定 1 个 USDC 的美元价值

协议铸造相应美元价值的 StableCredit USD

将 USDC 和 StableCredit USD 按照 50:50 的比例提供到 AMM

该协议计算系统利用率,最高可达 75%

所提供的 USDC 的利用率(或 75% 的最大值)以 StableCredit USD 的形式计算

此时,用户得到的 StableCredit USD 就是「借贷信用」。可以用它来借贷通过 AMM 抵押的其他资产。所以如果有其他用户提供 LINK 作为抵押,你可以通过 「卖出」借贷信用来借贷 LINK。当你想还债的时候,你可以把 LINK 「卖」回去换成 StableCredit USD,还清债务,然后收到你的 USDC。

实际案例

下面举几个具体实例来说明这个过程:

用户 A 提供 1000DAI 进行借款:

将 1000DAI 存入 StableCredit 协议

系统调用预言机查询 DAI 价值 1020USD

系统铸造 1020 个 USD

系统将用户 A 的 1000DAI 和 1020USD 添加到 AMM

系统计算利用率(根据全局抵押情况动态变化),最高为 75%

系统为用户 A 提供 75% 额度的借贷信用,即 1020*0.75=765 StableCredit USD

此时用户 A 提供了 1000DAI,得到 765 个 StableCredit USD。

用户 B 提供 2 个 ETH 进行借款:

将 2ETH 存入 StableCredit 协议

系统调用预言机查询 ETH 价值 1400USD

系统铸造 1400 个 USD

系统将用户 B 的 2ETH 和 1400USD 添加到 AMM

系统为用户 B 提供 75% 额度的借贷信用,即 1400*0.75=1050 StableCredit USD

此时用户 B 提供了 2ETH,得到 1050 个 StableCredit USD。

同理,有用户 C 提供了 1 个 WBTC,得到 26000 个 StableCredit USD;用户 D 提供了 1 个 YFI,得到了 23000 个 StableCredit USD,等等…

此时系统中存在多个借贷 AMM 池:

DAI:StableCredit USD

ETH:StableCredit USD

YFI:StableCredit USD

WBTC:StableCredit USD

其他各类用户添加的抵押资产池

用户 A 想借出 1 个 ETH,于是他将 525 个 StableCredit USD 提供给 AMM,得到 1 个 ETH。用户币想借出 500DAI,他将 510 个 StableCredit USD 提供给 AMM,得到 500 个 DAI。

他们想要赎回本金时,是需要向提供偿还对应借出资产即可从 LP 中提取本金。当提取本金时,系统会烧毁对应数量的 StableCredit USD。比如,用户 A 赎回 1000DAI,此时系统会调用预言机价格,假设此时价格仍为 1020USD,协议将烧毁对应数量的 StableCredit USD,以保证整个借贷资产的平衡。

这个赎回并烧毁 StableCredit USD 的过程,AC 文章中并没有提,是我个人的猜测和判断。主要依据是 EMN 当时的设计,也是铸造信贷和销毁信贷,遗憾的是当时被黑客利用导致项目没有继续。

StableCredit 的优势

StableCredit 的设计充分利用了代币化债务、借贷、AMM 的特点,相对单独存在 AMM 和借贷协议具有很多优势:

首先,系统的借贷利率实际是根据需求自动平衡的,用户需求多的借出资产,在偿还时会支付更高的利息。原理是需求多资产,在 AMM 中被卖出更多,用户在偿还借贷购买对应资产时,会支付更多的 StableCredit USD。

StableCredit USD 类似于 Uniswap 的 ETH,是 AMM 全部池交易的中间介质,这就让借贷信用可以享受交易手续费,间接的实现了资产提供者收取利息。即借贷用户支付的交易手续费和交易滑点等溢价,间接的提供给了代币提供者。

如果用户只提供代币而不进行借贷,会一直积累整个系统的借贷溢价,也就实现了存款收益。

这种方式还实现了非常优美的借贷最大化利用率,像 AAVE 这些借贷协议,一旦用户的抵押率达到红线便会被清算。StableCredit 的模式基本不存在被清算风险,只有相对的整体系统风险,即利用率。

举例来说:用户 A 存入的 1000DAI,得到 765 个 StableCredit USD。之后他全部用于借出 ETH,根据之前的案例,计算得出可借 765/700=1.09 个 ETH (由于实际存在滑点等,数量会有偏差)

假设经过 1 个月,ETH 价格上涨至 1000,用户偿还 1.09 个 ETH,会得到 1.09*1000=1090 StableCredit USD。此时用户偿还 765 StableCredit USD,可赎回 1000DAI。

经过以上过程,我们发现用户最初抵押了 1000DAI,得到了 75% 的购买力,然后他购买了 ETH,享受了 ETH 价格上涨的红利,当他结清头寸时,最终收回本金 1000DAI,同时还结余 1090-765=325 USD。

但其实我这个案例有些过于理想,在真实的系统运行环境中,由于套利者的存在,StableCredit USD 与各类资产的汇率会实时的通过 AMM 交易进行调整,因此在抵押和赎回过程中,不可能是按照原比例兑换。

以上的一些内容纯粹是我个人根据一些零散信息拼凑后的猜想,具体 StableCredit 的运作模式,还要等系统正式上线后再来详细验证。

但不难想象,这样的一种设计,绝对能释放更多的购买力,吸收更多的流动性。

写在最后

之前文章中我也有说, StableCredit 的设计,是 YFI 整个战船中非常关键的一环,它为整个金融帝国提供了一个吸收流动性的接口,最终可能发展成为流动性黑洞。

通过大量的吸收存款,叠加?yearn?的智能理财服务,yearn 的愿景正在一步一步实现。

简单说,YFI 的愿景是要让「收益最大化」。

AC 的初心一句话概括,「获得持续安全稳定便捷的最大化收益」。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

[0:31ms0-0:958ms