编者注:本文来源于 YFI 创始人 Andre Cronje 在启动 yearn.finance 项目前撰写的一系列博客。在这三篇短文中,第一篇最为重要,它寥寥数语,就勾勒出了 “流动性挖矿” 概念的来历,以及它给 DeFi 世界带来的挑战。后面两篇短文介绍了作者解决问题的思路,并不易懂,但也都有文献意义。
101 Yield Farming
我们开发成功了一款新的流动性挖矿(Yield Farming)产品,但在启动之前,我希望先解释几个概念。在我们开发 iearn 的时候,我们拥有的选择是非常简单的:Aave、Compound、Dydx,还有 Fulcrum。每一个产品都为不同的资产提供了借贷市场。你可以出借手中的资产、赚取一份被动收入。单纯的年代啊。SNX(Synthetix)项目引入了带激励的流动性池(incentivized pool)的概念。他们希望大家来为他们的 sETH 池子提供流动性,也意识到了,**的办法就是奖励早期参与者:如果你在 Uniswap 上为 sETH/ETH 交易对提供了流动性,你就可以得到 SNX 代币作为奖励。像我这样比较老的玩家可能还记得 Havven,记得 SNX 的目标是做成一种新的稳定币,也就是 Synthetix 交易所中的 sUSD。但那时候只有 Uniswap V1,只有 资产/ETH 这一种流动性池,所以他们无法仅仅激励一个包含 sUSD/ETH 的流动性池,只能激励多个池子。然后就是 CRV(Curve),一个新的、更简单的自动化做市商(AMM)。说它更简单,不是指它的公式更简单,而是在设计上更简洁。有了 Curve,大家就有了新的方法用稳定币参与获得被动收入,你只需提供 DAI 以及/或者 USDT,就可以赚到手续费了。所以,一直关注这个领域的人,会知道已经有了一些方法,可以让我们赚取被动收益率了:
- 通过为 Uniswap 市场提供资产来获得交易手续费
- 通过为 sETH/ETH 交易队提供流动性来获得 SNX 代币
- 通过为 CRV 市场提供 DAI 或 USDT 来获得交易手续费
- 通过在 Aave、Compound、Fulcrum 或者 Dydx 借贷市场存入资产来获得存款利率
iearn V1 就是一个简单的借贷市场 LP(Liquidity Provider,流动性提供者),每当用户 存款/取款 就在不同的流动性池子间切换一次。于是我们开始跟 CRV 商量推出一个自动切换收益率的流动性池(yield switching pool),后来就成为 CRV 的 Y Pool。Y Pool 结合了 iearn 和 CRV 的**点,变成了一个**化出借效率、自动切换获得手续费的池子。当你在 y.curve.fi 上做交易时,你实际上是在交易 y token,比如 yDAI、yUSDT,等等,但池子本身会意识到 yToken 在交换 token,然后 存入/取出 底层的 token 资产。然后,我们又开始跟 SNX 商量,因为他们即将要启动自己的稳定币交易池(就是为了 sUSD),而我们添加了另一层。这样流动性提供者就可以得到 yToken(存款收益)、curve.fi 的手续费,再加 SNX 奖励。所以那时候,我们已经有了**组合:自动切换被动收益率的 token + 交易手续费 + 项目的流动性激励。这样美好的时光也已成过去式。然后各个项目就开始了激励流动性的战争。Compound 用他们的 COMP token 打响了第一*,然后大家就蜂拥而上。Balancer 很快推出了 BAL,mStable 推出了 MTA,Fulcrum 推出了 BZX,而 Curve 蓄势待发要推出 CRV。(译者注:这些项目激励流动性的模式核心都类似:根据用户提供的资产体量,按比例获得增发的协议原生 token;2020 年 8 月 16 日,Curve 推出了 CRV。)但是,这就使得 Yield Farming 变得更加复杂,仅仅根据存款利率来切换选择就不够了。现在,策略会复杂成这样:
- 把 DAI 存入 compound,把 cDAI 存入 Balancer。通过 DAI 赚取 COMP、通过 cDAI 赚取 BAL,再加上 DAI 可获得的存款利率,和 cDAI 在 Balancer 交易池中的手续费。
- 把 DAI 存入 curve,然后把 curve token 存入 Synthetix Mintr 交易所。通过 DAI 赚取 CRV,通过 curve token 赚取 SNX;再加上在 curve 交易池中可获得的交易手续费。
- 把 DAI 存入 mStable,把 mStable 存入 Balancer。DAI 可获得一份利率,mStable token 在 Balancer 协议中获得 BAL;再加上可以从 Balancer 的交易池中赚取手续费。
- 把 USDC 存入 Maker,铸出 DAI,然后重复选项 1,2,3。
而且上面几种策略只是一些例子。几周以前,**的策略是从 Compound 市场中借出 BAT;现在则是用 Compound 做 DAI 的刚刚。但是下一周,也许就是参与 Curve 的 SNX 池。上面所有策略面临的共同问题是,这些策略的意义都基于 COMP、BAL、MTA、SNX、CRV,等等,的价值。而所有这些 token 的价格都是会浮动的。这也意味着,所有这些策略都要依赖于价格信息传输机制。在撰写文本之时,还没有 COMP、BAL、MTA、SNX 和 CRV 的价格信息传输机制,除非你使用 Uniswap 交易池或 Balancer 交易池中的价格作为指数;不过一旦你用了,就准备好自己的流动性被闪电贷吸干吧。本文的目的是想告诉大家,流动性挖矿(Yield Farming)已经变得很复杂了,而且我们预计它以后会变得越来越复杂。所以我们需要提供一种新的产品,不是简单地在这些选项中作选择,而是培育出新的选项(instead of trying to choose between these options, seeds these options)。我们已经有思路了。从下一篇文章开始,我们会详细说明解决方案。
原文链接: https://medium.com/iearn/yield-farming-101-d983a27c542e
翻译: 阿剑
102 更能感知收益的自动化做市商
我们先从几个基本的例子开始:假设你持有 BAT ,你有以下几个选择:
- 将 BAT 存入 Compound ,赚取存款利息和治理代币 COMP
- 将 BAT 存入 Aave 赚取利息
- 卖掉 50% 的 BAT ,用这笔钱买入 ETH ,将 BAT 和 ETH 存入 Uniswap 的 BAT/ETH 流动性池,赚取手续费,并承担无常损失(impermanent loss)。
- 卖掉 50% 的 BAT ,用这笔钱买入 ETH ,将 BAT 和 ETH 存入 balancer 的 BAT/ETH 资金池,赚取手续费和治理代币 BAL ,并承担无常损失。
再变得复杂一点:将 BAT 存入 Compound ,获得 cBAT ,将 cBAT 和 ETH 存入 balancer 的 cBAT/ETH 资金池,赚取手续费和 BAL ,并承担无常损失。从表面上来看,你以为你赚取的是 COMP 和 cBAT 的利息收益。实际上,是 Balancer 的资金池在赚取 COMP(而不是你),而且 balancer 的资金池也在赚取 cBAT(这部分收益将由套利者获得,因此严格来说,你赚取的是交易费,而非 cBAT 的利息收益)。虽然你的投资策略看似很明智,但是**的收益近似于直接将 BAT 和 ETH 存入 balancer 的资金池。从中,我们可以发现以下几个问题:
- 流动性池(而非流动性提供者)赚取了激励代币,如 COMP、BAL 等
- 流动性池(而非流动性提供者)赚取了代币的存款利息
- 你必须卖掉 50% 的 BAT 来为池子提供流动性(这一点对我们的解决方案来说至关重要,会在专门的文章中讨论)
从上述几点可知,现有的 AMM(自动化做市商)流动性池无法满足我们的需求,因此我们需要更能感知收益的 AMM 。支持 Aave 代币(aToken)非常容易。aToken 都支持一个名为 redirectInterestStream 的函数,可以让你配置一个用来接收利息的地址。但是,这就意味着,你获得的利息不是以复利计算的。Compound 代币(cToken)的价值虽然能基于其供应指数而增长,但也正因此,这些代币很难管理。这就需要 AMM 能够感知 cToken 的基础价值,而非 cToken 的价值。因此,所有互换交易和报价核查都要衡量基础价值,而非 cToken 本身的价值。适用于 cToken 的方案也适用于 aToken,并且解决了复利问题。引入这一变化之后,AMM 就能在持有 cBAT 或 aBAT 的同时进行 BAT/ETH 代币对之间的交易。给 COMP 设计的方案非常简单,我们根据每一次内部余额(cBAT)的变化来衡量 COMP 余额的变化,并为其分配一个索引。但是,我们希望支持将来有可能加入的所有代币,并且在余额没有改变的时候也重新分配。因此,我们对上述内容进行过修改,可以适用于任何代币,并增加了一个针对核心代币的地址查找功能。以上就是第一部分——可感知收益的 AMM ,能让流动性提供者从提供**利率的借贷市场里赚取利息,同时获得激励代币(例如,COMP)。下一篇文章将详细讲述,在你仅持有一种代币的情况下,我们是如何帮助你避免卖出 50% 来买入另一种代币的。
原文链接: https://medium.com/iearn/yield-aware-amms-102-114e1ea37608
翻译: 闵敏
103 稳定币
在讲解下一块内容之前,我们需要先了解稳定币。为什么 1 USDT 价值 1 美元?简单来说,如果我持有 1 USDT ,我可以可以找发行方 Tether 将 1 USDT 兑换 1 美元。因此,如果 USDT 的价格跌至 0.9 美元,我就会想方设法购买 USDT ,并将它兑换成 1 美元来套利,直至其价格回归 1 美元为止。如果 USDT 的价格涨至 1.1 美元,我就会想方设法用美元来 “铸造” USDT ,从中套利,直至其价格回归 1 美元为止。同理,USDC 及其发行方 Circle ,还有 TUSD 及其发行方 Trust 也是如此。那么 DAI 呢?DAI 是由 ETH ,而非美元背书的。我们可以提供价值 100 美元的 ETH ,然后铸造价值 100 美元的 DAI (实际上只能铸造价值 66 美元的 DAI ,这是清算系统用来维护 DAI 价格稳定的方式,但是简单起见,假设担保率是 * 。)如果 1 DAI 的价格是 1.1 美元,我们就可以使用 ETH 来铸造 DAI ,然后再用 DAI 换回 ETH 。假设你之前使用价值 1.5 美元的 ETH 铸造了价值 1 美元的 DAI 。现在,这个 DAI 的价值变成了 1.1 美元,你可以将它兑换成等值的 ETH ,这样依然比你的质押品价值低了 0.4 美元。(这就是为什么 DAI 有时会与美元脱钩)。解决上述问题很容易,不是吗?只要我们能以价值 1 美元的 ETH 铸造价值 1 美元的 DAI 就可以了。这里的问题在于 ETH 本身具有波动性,如果 ETH 的价格下跌 1% ,整个系统都会不稳定,因为没有足够多的 ETH 能偿付 DAI 。这就是为什么 Tether 等公司会惹上那么多官司。Tether 称其发行的 USDT 是以美元 1:1 足额背书的,也就是说,如果所有 USDT 持有者同时要求 Tether 兑付,Tether 能拿出足够多的美元吗?这是确保系统稳定的关键问题:当所有人要求兑付时,系统始终可以提供足够的基础资产。因此,我们设计了一种新稳定币(我们知道,同类稳定币够多了,但是从技术上来说,我们的不一样)。我们设计的是 AMM(自动做市商)转账机制。每当我们创建一个新的 Uniswap 流动性池时,都需要提供等价值的两种代币。假设你提供了价值 1 美元的 BAT 和价值 1 美元的 ETH 创建了一个 BAT/ETH 流动性池。这时,有人提供价值 1 美元的 DAI 和价值 1 美元的 ETH 创建了 DAI/ETH 流动性池。如果你想使用 BAT 兑换 DAI ,就要先在 BAT/ETH 池子中将价值 1 美元的 BAT 兑换成等值的 ETH ,然后再到 DAI/ETH 池子中兑换成等值的 DAI 。在上述示例中,ETH 只起到了价值转移的作用。只要 1 ETH = 1 ETH ,则价值 1 美元的 BAT = 价值 1 美元的 DAI 。引入了价值转移资产后,我们就可以做一些有趣的事情了。假设你提供价值 1 美元的 BAT 给这个新的 AMM 转账机制,就可以创建出等价的价值转移代币。如果有其他人提供价值 1 美元的 DAI ,也可以创建出等价的价值转移代币。接下来就会发生一些有趣的事情:
1. 我们只需要提供一种代币的流动性
2. 价值转移代币的价值等于系统中所有代币的价值总和
3. 如果交易者为这个系统注入了更多 A 代币,就要取出同等价值的 B 代币,从而遵守规则 2 。
4. 如果价值转移代币的价值高于系统中所有代币的价值总和,交易者就面向该系统出售价值转移代币,并取出其它代币,从而遵守规则 2 。我们已经上线了这个名为 Stable AMM 的流动性提供系统。该系统能够在保证内部稳定性的同时,获得更高的收益。
原文链接: https://medium.com/iearn/yield-stable-coins-103-717b097213f1
翻译: 闵敏
文章标题:科普 | “流动性挖矿” 概念的由来
文章链接:https://www.btchangqing.cn/119849.html
更新时间:2020年10月13日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。