SWAP:Joe V2:也许是未完成的「Uniswap V4」应有的模样

1.前言

由于Arbitrum近期空投活动的火热,随之产生巨量的$ARB链上交易。UniswapV3早早布局Arbitrum,自然是有先发优势。而TraderJoeV2的横空出世,伴随着$ARB的空投活动,一跃成为$ARBTokenUsage榜上的第二大DEX。甚至在3月的最后一个星期,JoeV2池一度占据了近45%的ETH-ARB币对的交易量,超越了UniswapV3的池,成为了该币对交易量占有率最高的单池。而本文并不会花费大量篇幅讨论JoeV2为何能在$ARB交易中获取大量份额,而是着重从JoeV2的AMM机制设计和技术实现入手,试图分析其产品的优势与不足。

2.特性分析

我们都知道UniswapV3构建的一套通过手续费收入和限价流动性博弈而提高资金利用效率的AMM机制。JoeV2在此基础上进行了以下革新,引入了一种新的AMM模型——LiquidityBook:

垂直方向的流动性分布:UniswapV3的限价流动性本质上是水平方向上「平铺」在LP设定的价格区间内;而JoeV2则是在垂直方向上「堆叠」LP提供的限价流动性。「bin」作为流动性分布的单元:如果说UniswapV3中「tick」这一概念,可以形象地理解为流动性价格标尺上的「刻度」;那么JoeV2中的「bin」在这里可以理解成储存流动性的箱子。类ERC1155的LBToken:由于上面提到的流动性分布单元和方式,所以JoeV2基于ERC1155构建了一套流动性凭证体系——LBToken,同一个bin内的流动性是同质化的,而不同的bin中的流动性彼此区别。流动性分布可策略化:正是因为ERC1155这种半同质化的LBToken属性加上垂直的流动性分布方向,使得JoeV2的LP可以按照一定的策略来部署自己的流动性,而不是简单地均分在bin上。动态的手续费定价算法:swap手续费动态定价,这使得LP在市场经历高波动性时可以收取更高的费用,在某种程度上通过手续费来博弈单边行情,从而对冲LP在高波动率行情下的无常损失。

BSC生态Carson遭遇攻击,损失约14.5万美元:7月27日消息,据派盾监测数据,BSC 生态 Carson 遭遇攻击,损失约 14.5 万美元。目前 Carson 代币价格下跌达 96%,攻击者已将窃取资产兑换为 600 枚 BNB 并转至 Tornado Cash。[2023/7/27 16:01:33]

接下来本文将进一步讨论上述这些特性的实现机制,以此帮助读者更好地理解JoeV2与其他DEX的异同。

2.1流动性分布与价格曲线

我们知道自动做市商,AMM(AutoMarketMaker)中的流动性分布决定了特定价格下交易对两侧的相对数量,币对的相对数量又决定了池内当下的兑换比例,兑换比例即为大家所理解的「价格」。

JoeV2中所设计的流动性账簿(LiquidityBook)将交易对的流动性安排成离散的「bin」。而注入bin的流动性按照该bin定义的固定汇率进行兑换。换言之,单个bin内的流动性兑换遵循x+y=k的恒定和AMM模型。

如上图,单个bin内的流动性遵循P?x+y=L的线性关系。x是该bin内X资产的数量,y是该bin内Y资产的数量,P是该bin对应的价格,L则为该bin内的流动性数量。

值得注意的是,上图中的「恒定和曲线」与x轴和y轴是有交点的,这意味着X或Y资产在一定交易量下是可以被消耗掉的。在这种情况下,当前价格会移动到下一个bin。

Ran Neuner:对于是否发行新的FTT代币SBF完全没有发言权:金色财经报道,CNBC主持人Ran Neuner在社交媒体上称,我确实说过推出新的FTT代币,也特比强调了只有存款人和债权人会得到补偿。还有,SBF在这里完全没有发言权,谁会在这里购买FTT代币?

金色财经此前报道,Ran Neuner此前表示,如果启动FTX交易所并发行新的FTT代币,并将代币分发给债权人/存款人,且将100%的利润分配给代币持有者。它将成为世界上最大的交易所,用户能挽回更多的损失。SBF支持重启FTX交易所并发行新FTT代币的想法。[2022/12/10 21:35:04]

某一交易对市场是其所有离散的流动性bin的聚合结果,一个市场内只能有一个同时包含X和Y的bin-在Joe中,被命名为ActiveBin(活跃价格区间),我们可以将其理解为该交易对当下的现货兑换比例。而所有在活跃区间右侧的区间都只包含X资产,所有在左侧的区间都只包含Y资产。

举一个简单例子,AVAX/USDC池。资产Y为USDC,资产X为AVAX。价格P由每个AVAX可兑换USDC的数量决定。如果此时ActiveBin为100USDCperAVAX;所有在左侧的区间都只包含USDC,而所有在右侧的区间都只包含AVAX。如果市场内此时交易者大量购买AVAX,那么当100USDC内的AVAX储备被消耗完时,ActiveBin将向右移动。

2.2流动性凭证代币LBToken

如上面所提到的,LiquidityBook聚合流动性的方式与UniswapV3不同:在LiquidityBook中,通过每个bin垂直聚合流动性,在UniswapV3中,流动性则是呈水平聚合。

Immutable X联创:NFT版税在Immutable X上是有保证的:10月17日消息,NFT Layer2解决方案Immutable X联合创始人Robbie Ferguson发推文称,“NFT版税在Immutable X上是有保证的”,NFT市场和创作者可以从资产交易中持续变现。Robbie Ferguson表示,NFT版税在该协议上的所有市场都是强制的,“这意味着市场不会被迫通过提供可选版税来竞争,但可以保证经济”。

此前消息,Solana生态NFT市场Magic Eden已启用可选版税。[2022/10/17 17:29:11]

也正是因为LB垂直聚合流动性这一特性,使得同质化流动性代币成为可能。我们姑且不说同质化流动性代币在gas上的种种优势,其对于协议中手续费计算和整个账务系统复杂度的轻量化也带来了更多可能性。

虽然说LBToken合约遵循ERC-1155多代币标准,而参量id即为该流动性所在的bin的索引(index),所以同一bin所对应的LBToken是同质化的。从其合约代码中,我们可以发现:LBToken的实现与ERC1155标准代币大致相似,主要区别在于它不会对接收方合约进行任何调用以防止重入攻击。同时由于其仅用于流动性计数,所以并未实现URI相关的函数。

2.3Binid与Price之间的换算

JoeV2内置的价格区间为,这个价格区间被分割成一个个离散的价格点,每个价格点对应了一个流动性容器Bin,而决定分割精度的离散参数为s,s越小,Bin就越多。

JoeV2协议设定Bin的总数量为2*Nb,即价格为1以上的Bin和价格1以下的Bin各有Nb个,则有公式:

Nb=argmaxi((1+s)i<2128)

除了价格的限制,协议还限制了Bin的总数量不得超过224个,也就是说Nb最大为223

通过计算,我们可以得到s的最小值为2(0.5^16)-1,从而我们可以得到Binid范围为,其中b=223。

比特币闪电网络通道数量为87,251个:金色财经报道,1ML网站数据显示,比特币闪电网络(LightningNetwork)的节点数量为17,786个,同比增长0.49%;通道数量为87,251个,同比增长1.4%;网络容量为4,564.17BTC,同比增长7%。[2022/8/12 12:20:10]

这里我们举个简单的例子演算一遍:

当s?=?0.0001时,

Nb=argmaxi((1+0.0001)i<2128)=887272

则BinId为一组(223-887272)?~?(223+887272)的连续正整数,即Binid?∈?。

Price与Binid一一对应,符合以下的数学关系:

Price?=?1.0001

所以,Price的范围应该是:

1.0001-887272≤Price≤?1.0001887272

显然,当Binid?=?8388608时,

Price?=?1.0001?=?1

在库合约TreeMath中,为了优化流动性跟踪,Bin通过一个由三个256位数组嵌套创建的数据树来索引。在这棵树中,每个Bin被分配了一个通过嵌套数组的位置路径。当一个Bin内包含流动性,其对应的三个数组会被分配一个非零值。

2.4流动性策略化部署

还是因为LB垂直聚合流动性这一特性,LP在提供流动性时,可以加入一些策略:Spot/Curve/Bid-Ask,这是UniswapV3这种水平聚合流动性的AMM模型所无法实现的,即便实现也需要进行多个仓位的流动性部署,对于LP用户来说操作成本和学习成本都过高。

多链钱包XDEFI即将支持Arbitrum和Fantom:6月5日消息,多链钱包XDEFIWallet宣布即将支持Arbitrum和Fantom网络,目前这两种集成还在测试中。[2022/6/5 4:03:22]

以下是用户如何使用Spot策略分布的简单示例:

在这个ETH-USDC池中,流动性提供者可以选择高于当前市场价格的范围,只向池中提供ETH。随着ETH价格上涨,用户将稳步卖出ETH以换取USDC。上图中的范围相对较小,但用户可以选择他们想要的任何目标价格——这是平均成本法(DCA)平仓策略的简单实现。

反之亦然;用户可以通过逆流程并以低于当前市场价格的单方供应USDC的方式,将DCA加仓策略用于LiquidityBook模型中。在这两种Spot策略应用中,用户通过单笔交易成本可控地逐渐退出或进入他们的头寸,并在此过程中赚取隔夜手续费收益。这些流动性策略为LP在部署流动性方面提供了极高的自由和灵活性。bin数越少,流动性越集中;因此,他们在该范围内交易中所占的收入份额就越大。

2.5动态swap手续费

在所有DEX协议中,交易者在执行swap交易时向流动性提供者支付手续费,流动性提供者在获取手续费收益的同时,也承担着无常损失的风险。LiquidityBook中引入了动态swap费用,使得LP在市场经历高波动性时可以收取更高的费用,在某种程度上通过更高的手续费来博弈单边行情,从而对冲LP在高波动率行情下的无常损失。

总swap费用将包含两个部分:基本费用(Basefee)和动态费用(Variablefee)。动态费用是瞬时价格波动的函数。费率将应用于每个bin中的swap金额,并按比例分配给该bin中的流动性提供者。

swap收取的费用由下列公式决定:

其中,fb为Basefee:

fb=B·?s

fv为Variablefee:

fv=A(vk·s)2

其数值取决于市场的波动性。市场的波动性是受交易频率影响的,当交易数额巨大以至于耗尽多个bin内的流动性fv会随之增长。

其中vk代表波动率累加器(volatilityaccumulator)是一种计算最近交易跨bin频率的参数。波动率累加器是市场波动率的参数化表现,该值将在每个计算步骤之间存储在合约内存(memory)中,其数值由两部分计算结果共同决定:

参考波动率和引入波动率:

va(k)=vr+|ir-activeid+k|

参考波动率(volatilityreference,vr)取决于自上次交易以来经过的时间t。我们定义了一个有上限和下限的时间过滤窗口。如果t小于过滤周期定义的下限,则vr保持不变。如果t大于衰减周期定义的上限,则vr将重置为0。如果t在窗口内,则vr等于上一次的va结果乘以衰减因子R:

这意味着高频交易会增加波动率va,而低频交易会慢慢降低波动率va,以至于超过一定时间没有任何交易后将重置波动性va

上面我们计算了参考波动率,接下来我们来计算引入波动率了。在引入波动率的计算中我们引入了另一个变量,即indexreference(ir)。在大多数情况下,ir为该次交易前的ActiveBin的Binid。但在一定的时间窗口内时,ir会保持原来的值。这是为了防止交易者通过进行小批量的小额交易来操纵手续费率:

3.讨论

自UniswapV2在其产品中实现了一套全价格区间分布流动性的方案以来,包括Uniswap自己在内,众多DEX项目都在寻求资金利用效率更优的AMM模型。即便是UniswapV3上线届满2年的此刻,我们仍然无法断言什么是更好的AMM模型。但是忽略产品交互上的种种设计,单论核心业务层面的痛点,我们可以说理想的DEX应该符合如下特征:

对于交易者来说:低gas成本;低手续费;低滑点对于流动性提供者来说:低gas成本;更高的手续费收益率;可控的无常损失

虽然只是简单的几点需求,其中其实存在很多艰难地权衡:

首先,交易者的低交易成本和LP的高手续费收益本质上是冲突的,所以协议需要在一定的手续费率的前提下,将手续费更加合理的分配到LP的手中而更合理的手续费分配机制本身就会增加系统的复杂度,这一点上又需要与gas经济性进行平衡低滑点和可控的无常损失本质都依赖于更好的流动性深度,而在相同行情条件下,流动性深度与流动性分布机制乃至其资金利用效率息息相关。可是在资金规模确定的情况下,更高的资金利用效率必然会要更集中性的流动性分布算法,其带来的无常损失的风险也就越高

我们看到JoeV2,乃至刚刚上线的V2.1在可控的无常损失以及更好的资金利用效率两者之间的平衡中做出了创新;同样的,其在实现合理的手续费分配机制的基础上,也通过垂直流动性分布的方式进一步降低了系统复杂度,从而为降低用户操作的gas成本提供了可能性。

UniswapV3的代码版权即将解禁的此刻,很多DEX项目踌躇满志地要跟着推出他们根据V3改进的新版本,而Joe则继续在一条更具有开创性的道路上不停地做出新的尝试,我们乐见其成,也期待更多更好的原创项目为交易市场带来新的活力。

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

金星链

莱特币最新价格POL:Web3 的共同梦想

自人类历史的黎明以来,集体故事一直定义着我们的文化,并丰富了我们对世界的理解;讲故事的人一直是塑造这些叙事的推动力.

[0:15ms0-1:142ms