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在高波动率行情下的无常损失。
Polygon Labs前副总裁加入OpenSea担任副总裁:8月1日消息,Polygon Labs前副总裁Kelly DiGregorio加入OpenSea担任副总裁,此前DiGregorio负责Polygon Labs与星巴克、迪士尼、Master Card、Reddit、Salesforce等品牌的一系列交易。[2023/8/1 16:11:59]
接下来本文将进一步讨论上述这些特性的实现机制,以此帮助读者更好地理解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。
欧盟加密货币征税提案将针对世界各地的公司:金色财经报道,欧盟委员会的一项新提案将要求各种规模和地理位置的加密资产服务提供商向税务机关报告欧盟客户的交易。向欧盟居民提供加密服务的公司将需要遵守税务报告规则,以弥补逃税漏洞。欧盟委员会的目标是在 2026 年 1 月 1 日实施这些新规则。
欧盟委员会在一份声明中写道:“税务当局目前缺乏必要的信息来监控使用加密资产获得的收益,这些资产很容易跨境交易。” “这严重限制了他们确保有效纳税的能力,这意味着欧洲公民失去了重要的税收收入。”
此前消息,欧盟税收草案显示对加密货币征税可能带来25亿美元收入。(The Block)[2022/12/8 21:31:59]
某一交易对市场是其所有离散的流动性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中,流动性则是呈水平聚合。
摩根大通任命Celsius前政策和监管事务负责人为加密监管政策负责人:10月19日消息,摩根大通任命前Celsius政策和监管事务负责人Aaron Iovine为加密监管政策负责人,该职位为新设职业。Iovine在加密借贷平台Celsius于纽约申请破产两个月后离开。
根据一份公开文件,今年一季度,Iovine是美国金融服务组织Cross River团队的一员,该团队曾就“关注金融服务、金融科技合作伙伴关系和薪资保护计划的一般问题”游说国会。(彭博社)[2022/10/19 16:30:26]
也正是因为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。
美联储:第二季度股市市值下降了7.7万亿美元:9月10日消息,美联储表示,第二季度股市市值下降了7.7万亿美元。美国家庭净资产在2022年第二季度降至143.8万亿美元。[2022/9/10 13:20:43]
这里我们举个简单的例子演算一遍:
当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用户来说操作成本和学习成本都过高。
OpenSea Seaport交易额突破12亿美元,创历史新高:金色财经报道,据Dune Analytics数据显示,基于开源 NFT 协议 Seaport 的 OpenSea 总交易额已突破 12亿美元,本文撰写时为 1,220,467,666 美元,创下历史新高。此外,基于 Seaport 协议的 OpenSea 交易总量达到3,660,217笔,独立用户量为659,590个。[2022/8/31 12:58:47]
以下是用户如何使用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则继续在一条更具有开创性的道路上不停地做出新的尝试,我们乐见其成,也期待更多更好的原创项目为交易市场带来新的活力。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。