五分钟读懂 DODO 背后的 PMM 算法:一个通用性的流动性框架及多种用例_币世界+区块链资讯

2021-01-10 09:55 栏目:行业动态 来源:网络整理 查看()

市场最重要的特征是流动性。作者:雷达熊,DODO创始人

一个有效的市场包含大量的信息,这些信息承载着市场对价格的判断。但是链上的计算资源是有限的,所以在链上实现高度灵活的市场就像把大象塞进冰箱一样。

把大象放在冰箱里并不少见。互联网历史上有过几次壮举。比如图像压缩和音频压缩。

压缩的本质是提取最重要的特征,丢弃不重要的细节。

那么,一个市场最重要的特征是什么,流动性。流动性可以用深度图来表示。

五分钟读懂 DODO 背后的 PMM 算法:一个通用性的流动性框架及多种用例_币世界+区块链资讯

从下图可以看出,深度图可以抽象成两个三角形,只需要中值价格和斜率来描述这两个三角形。

五分钟读懂 DODO 背后的 PMM 算法:一个通用性的流动性框架及多种用例_币世界+区块链资讯

我们把重点放在右边销售的梯形深度。它最大的特点是基础令牌买的越多,价格越高。因此,这个线性深度可以表示为

五分钟读懂 DODO 背后的 PMM 算法:一个通用性的流动性框架及多种用例_币世界+区块链资讯

其中I是第一个参数“中间价”,k是第二个参数“斜率”。

B代表当前基本令牌库存,B0代表初始基本令牌库存,(B0-B)/B0用于指示基本令牌的消耗量。

这个公式可以使价格随着售出的基本令牌数量线性增加。

但是线性真的是描述流动性的最佳方式吗?不,线性描述有两个限制:

在现实市场中,大部分流动性都集中在市场的中间价附近,但线性描述并没有反映这种不平衡的分布。

即使价格偏离市场中间价很远,也要有流动性,线性描述下的价格有上下限。

我们将非线性引入价格曲线。在不扩大参数的前提下,深度分布更符合市场规律,灵活性更高。

五分钟读懂 DODO 背后的 PMM 算法:一个通用性的流动性框架及多种用例_币世界+区块链资讯

最简单的非线性解法是用乘法代替加法。

五分钟读懂 DODO 背后的 PMM 算法:一个通用性的流动性框架及多种用例_币世界+区块链资讯

这个公式可以满足,随着b的减少,p不断增加,直到无穷大。但是怎么加上坡度的影响呢?

所以B0/B要改革。B0/B1,我们用一个参数来缩放它,在保持这个值大于等于1的同时,我们可以控制它的“度大于1”。

五分钟读懂 DODO 背后的 PMM 算法:一个通用性的流动性框架及多种用例_币世界+区块链资讯

上式中,k的取值范围为[0,1],决定了价格斜率。

当k=0时,价格完全不变

当k=1时,价格斜率退化为前一版本的公式

k越大,价格变化越大

越敏感。k 越小,价格变化越不敏感。

但是还有一个小问题,这里的 P 是边际价格,对边际价格的积分才是用户需要支付的资产数量。上式中,B0/B 这项积分后出现了对数函数,这会使后续计算变得很复杂。为了避免这一麻烦,我们再进一步:

五分钟读懂 DODO 背后的 PMM 算法:一个通用性的流动性框架及多种用例_币世界+区块链资讯

在 B0/B 外面加一个平方项,这样积分后就变成了一个简单的除法。

令人惊叹的是,当 k=1 时,这条曲线正是 AMM 所定义的 bonding curve。这种巧合使我们相信,这是一套更加触及市场本质的算法。

同理,对于左半边的深度图,我们用对称的做法,将 base token 替换为 quote token,将乘法替换为除法:

五分钟读懂 DODO 背后的 PMM 算法:一个通用性的流动性框架及多种用例_币世界+区块链资讯

我们将左右两边的深度图结合起来,就得到了 PMM 算法的完全版本,整理一下:

五分钟读懂 DODO 背后的 PMM 算法:一个通用性的流动性框架及多种用例_币世界+区块链资讯

PMM 算法是对 Orderbook 市场的高度压缩,参数简单,却极度灵活。

这使得我们在冰箱如此狭小的空间内,拥有了堪比大象的能力。

下面我来列举,通过调整参数和充提规则,这套算法可以实现哪些 use case。

Use Case 1 跟随外部市场价格的主动做市

这一 use case 的应用场景是拥有巨大外部市场的主流币,例如 ETH BTC 等

PMM 可以实现主动调整盘口价格,减少 IL。获得比 AMM 更高的资金利用率,并且持有单币种就能提供流动性

设置如下:

  • 将价格 i 设置为外部市场价格

  • 将 k 设置为小于 1 的数字

  • 允许任何人单边充提

  • 这一 Use Case 我们称之为 DODO Classic Pool。

    Use Case 2 轻资本需求的自动做市算法

    这一 use case 应用于没有主观定价能力的长尾币市场,将定价权完全交给 taker

    通常来讲,长尾币都是新资产,在 AMM 框架下没有足够的卖盘流动性,因而导致其流动性长期匮乏

    设置如下:

  • 将价格 i 设置成起始发行价

  • 任意设置 k

  • 第一笔充值可以以任意资产比例,且不改变市场价

  • 后续充值(或提现)必须按照当前资产比例同时操作两种资产

  • 这一 Use Case 我们称之为 DODO Vending Machine。

    Use Case 3 完全自由的做市算法

    这一 use case 为那些雄心勃勃,想要大展拳脚的做市商准备。(做市商也可以是项目方或个人)

    在此 use case 下,资金池的全部资金都归做市商所有。所有参数都可以调整,做市商可以根据他的判断为资产灵活定价。同时做市商可以任意充提单一币种,而不影响市场价格。

    例如:

  • 在 ETH=700USDT 附近做市,使用很小的 k 获得非常有竞争力的流动性,并赚取大量手续费。当察觉到 ETH 有上涨预期时,撤出 ETH 库存以减少单边风险。但这一操作并不削弱买盘流动性。

  • 新资产发行项目方只提供代币而不提供资金。在 1$ 开始销售代币。为了让更多人以合理价格买到代币,设置了较小的 k,使得代币上涨温和。随后项目方发现需要使用资金,则可以直接提出资金池中的资产,而不损害卖盘流动性,即用户仍然可以买到大量廉价代币。

  • 设置如下:

  • 只有做市商能充提,允许单币种操作

  • 这一 Use Case 我们称之为 DODO Private Pool。

    Use Case 4 流动性众筹

    我们可以将新资产发行分为两阶段:

    1. 不开启现货交易,所有参与发售的人都以相同的价格获得代币

    2. 以上一阶段的结束价格开启现货交易,使用上一阶段剩余的代币和资产建立 DODO Vending Machine

    这一 Use Case 我们称之为 CrowdPooling。

    Use Case 5 退化为 AMM

    当满足以下条件时,PPM 算法表现和 AMM 相同。

  • 设置 k=1

  • 必须按照当前价格比例同时充提两种资产

  • 这也意味着,AMM 是 PMM 的一种特殊情况。推导过程如下:

    AMM 的价格公式是 xy = k,其中 k 是常数,x、y 则分别代表两种代币的数量。为了避免字母上的歧义,我们把 AMM 公式中的恒定乘积定义为Const,并将其改写为 y=Const/x。

    五分钟读懂 DODO 背后的 PMM 算法:一个通用性的流动性框架及多种用例_币世界+区块链资讯

    其中 y 代表 quote token 库存,x 代表 base token 库存,价格可以写为对 y 求导(注意这里要加绝对值,因为价格是正数)。

    五分钟读懂 DODO 背后的 PMM 算法:一个通用性的流动性框架及多种用例_币世界+区块链资讯

    接下来回到 k=1 的 PMM 公式,我们可以将其写成:

    五分钟读懂 DODO 背后的 PMM 算法:一个通用性的流动性框架及多种用例_币世界+区块链资讯

    我们发现,PMM 价格公式的分子上为常数,分母为 base token 的库存。只要令

    五分钟读懂 DODO 背后的 PMM 算法:一个通用性的流动性框架及多种用例_币世界+区块链资讯

    AMM 的定价公式,与 PMM 的定价公式就一致了!

    Use Case 6 稳定币交易

    设置如下:

  • i=1

  • k=0.001 (这个值越小,越接近稳定币刚性兑换)

  • 算法表现可以与 curve 相同,并且更灵活,可以比 curve 更接近刚性兑换,或更接近 AMM。

    微信二维码
    售前客服二维码

    文章均源于网络收集编辑侵删

    提示:仅接受技术开发咨询!

    郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
    NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发