DEX
DEX:去中心化交易所(decentralized exchange),核心逻辑都用区块链实现,用户可以直接调用合约实现交易。
- 这只是一个想法
- 放大池子的深度,使资金利用率更好
AMM
由于链上存储成本超高,所以大部分的DEX都是采用AMM的方式(Automated Market Maker,自动化做市机制),AMM机制由算法构成,不同的项目有不同的算法,uniswap v2的机制是恒定乘积,即X*Y=k。
- uniswap V2的资金利用率很低
- V3的资金利用率高,但收益无法复用;对普通用户不友好
目标
- 通过简单的方式,提高资金的利用率(类似Uniswap V3对V2的优势)
- 不同的DEX之间,利用率越高的DEX,流动性越好,收益也越好
- 用户更喜欢深度好的LP,这样交易的滑点越低。
- 对普通用户友好,收益复用
最简单的想法
- 默认AMM的算法为x*y=k
- 只要增大k,就是增加LP的深度,用户交易时,滑点就更低
- 为了更高的深度,x和y就不能用实际的token数量。
- 方式1:更换算法
- 方式2:使用虚拟的x和y(当前的想法)
- 添加流动性的时候,就不再是简单的增加x和y
- 比如:增加1个x和1个y,流动性增加的是2倍(可以是其他倍数,倍数越高,池子深度越好,但价格范围越小)
- 但流动池的x’增加的是2*x,y’增加的是2*y
- 这样的结果,k = x’*y’=2x*2y
- 实际流动性相当于uniswap v2的4倍
- 流动性增加的时候以倍数增加,但交易的方式还是和uniswap v2一样
- 使用新的k,计算可以swap的token数量
- 然后给用户转对应数量的token
- 如果池子中的token数量不足(价格偏离严重时),则交易失败
- 存在的问题1:
- x的价格区间再也不是0-∞
- 如果倍数为2倍,则x的价格变动区间为0.25y-4y
- 当价格超过这个范围,由于x或y的真实token已经被兑换完,所以无法进一步下跌或上涨。
- 存在的问题2:
- 杠杆率不是固定的,当交易越多,价格不变,由于手续费的存在,所以真实的x和y越来越多,x’/x的值就越来越小,杠杆率就慢慢变小
注意点
- 添加流动性的时候,价格不变,杠杆率不变,但深度增加
- 交易的时候,K不变,价格变化。如果流动性枯竭,会导致交易失败;其他的场景跟Uniswap V2一样
与Uniswap V3的比较
- 都支持提供单币种的流动性(能够实现简单的IDO功能)
- Uniswap V3的手续费,无法重复利用,且撤销流动性的时候,手续费比较高
- 当前的方案与V2类似,手续费是直接到LP中
- 流动性撤销时,是以虚拟流动性的占比,获取真实流动性中对应比例的资产
- 整个方案比Uniswap V3简单很多
- 交易者的手续费也会比较少
- 在Uniswap V3,如果交易跨多个ticker,手续费成倍增加
- 当前方案的手续费与V2差不多
- 依旧能够支持平台币
- LP依旧是同质化的token,可以进行组合性操作(如流动性挖矿等)
- Uniswap V2版本的LP是ERC20,V3是NFT
- 如果提供百倍杠杆的流动性,就能够支持稳定币之间的交易池,类似Curve?
资金利用率的提高,从另一方面来说,流动性不变的情况下,只需要更少的资金,收益不变。价格涨跌时,无偿损失更少。 但这些都不是绝对的,如果多人同时提供流动性,A将所有资产都提供了流动性,B按比例(50%)提供流动性,则B 的流动性比例降低,收益就降低。
流动性归一
如果不同的杠杆率有不同的流动池,将导致资金分散。 可以通过动态杠杆率和动态手续费的方式,将相同交易对的流动性合一。
动态杠杆率
- 每个交易对都只有一个池,避免流动性的割裂
- 初始的杠杆率,由交易对的创建者设置,范围(1-10),默认只能选择2或5
- 交易对当前的杠杆率=vToken/rToken,需要将token2按照价格全部转成token1
增加新的流动性时:
- 直接以现有的杠杆率,计算新的份额
- 以份额比例计算新的杠杆率:new_level = old_radio*old_lever + new_radio*hope_level
- 基于新旧杠杆率,调整vToken的值:amount = new_level*old_amount/old_level
动态费用
- 交易对的费用是动态的,与动态杠杆率类似
- 费用信息保存在交易对中
- 每个流动性提供者都可以设置预期的费用,根据流动性占比进行调整。
- 支持的范围为(万分之五–百分之一)
lp份额
- 支持单向提供流动性:添加流动性的时候,只添加单一币种
- lp份额的token有两种,分别是tokenA和tokenB的,份额都是整个池子的总份额,只是赎回的时候,优先赎回的币种差异
- 比如:添加tokenA的流动性,占比为10%,则用户拥有lp_tokenA=total*10%
- 赎回的时候,如果tokenA被大量交易走,只有池子价值的6%,则用户赎回6%的tokenA和4%的tokenB(总价值的6%和4%)
- 单一LP份额与双LP的差别:
- 单一LP份额无法区分用户添加流动性的币种
- 单一LP份额,添加流动性后立即赎回的token会变化,就可以通过这种方式免手续费兑换
不同杠杆率的价格区间
- 流动性枯竭时,某一个token的数量被兑换光
- 杠杆倍数为n
- 交易时,vDAI与DAI是1:1兑换的
- 所以流动性枯竭时,n*x的最小值为(n-1)*x
- 这是不考虑手续费的情况,如果包含手续费,价格范围可以更大
- 价格范围是会变动的,当有人提供新的流动性,将导致范围的变化
- 当有人提供单币种的流动性,将会导致单侧的真实流动性增加,其价格范围会增大
- 当调整杠杆率,会使整体的价格范围改变
- 2倍杠杆
- 2x*2y=4k
- 此时变成x*4y=4k
- 所以价格区间为25%-400%
- 3倍杠杆
- 3x*3y=9k
- 流动性枯竭:2x*4.5y=9k
- 所以价格区间为:44%-225%
- 4倍杠杆
- 4x*4y=16k
- 流动性枯竭:3x*5.33y=16k
- 所以价格区间为:56%-177.8%
- 5倍杠杆
- 5x*5y=25k
- 流动性枯竭:4x*6.25y=25k
- 价格区间为:64%-156%
- 6倍杠杆
- 6x*6y=36k
- 价格区间:69%-144%
- 7倍杠杆
- 7x*7y=49k
- 价格区间:73%-136%
- 8倍杠杆
- 8x*8y=64k
- 价格区间:76%-130.6%
- 9倍杠杆
- 9x*9y=81k
- 价格区间:79%-126.6%
- 10倍杠杆
- 10x*10y=100k
- 价格区间:81%-123.5%