本篇介绍了流动性账簿(LB),这是一种用于在去中心化交易所中构建流动性的新颖协议。

LB 协议能够为配对资产市场创建独特且动态的流动性结构。

流动性汇集在恒定价格箱中,这些箱被汇总以建立市场

1.简介

Trader Joe (v1) 于2021 年作为AMM 与Uniswap v2 一起推出流动性合约作为其基础。

得出结论,提升资本效率和流动性灵活性是需要协议开发的问题。

因此我们介绍下一阶段的JOE 去中心化交易所的设计。

1.1.集中流动性

Uniswap v3 首先实施集中流动性,开创了自动化市场的集中流动性概念

流动性提供者可以在特定价格区间内提供流动性,集中流动性被创造前,StableSwap/Curve 为稳定汇率提供了类似的解决方案,Curve v1 使用带有隐含静态挂钩的不变曲线

虽然流动性是无限的,但大部分储备集中围绕挂钩价格的流动性。

Curve v2 引入了更通用的方案,使用内部价格预言机升级到动态挂钩。

Uniswap 和Curve 中使用的定乘积函数算法

\[ x*y=K \]

限制了流动性提供者部署量身定制的做市商的能力

我们提出了一个离散集中的新协议,流动性为市场提供灵活的基础设施层

离散集中流动性(先前已被由iZiSwap 提出)。

1.2. 流动性账簿

流动性账簿(LB) 将资产对的流动性安排成离散的价格箱。存入流动性箱的储备是可用的

以定义的固定汇率(价格)进行兑换为bin. 资产对的市场是通过聚合构建的所有离散的流动性箱。

不同市场参与者提供的结构(颜色编码)可以用下图表示。

图一:范例流动性结构

2.协议设计

2.1 储备定价

按照AMM 约定,价格§ 定义为Y 储备和X 储备在交易中的变化。

以报价资产(Y) 条款计价的基础资产(X)。

2.2. 箱流动性

流动性(L) 被定义为存款准备金的名义价值

进入离散箱并以报价资产计价。

进入离散箱并以报价资产计价。流动性随着箱的储备组成变化而保持不变,可以在公式2.2 中描述为其复合资产的价值总和。

每个单独的bin 是一个具有自己独特的联合曲线的恒和市场。bin 的曲线完全由bin 的价格参数(静态)和存入bin 的总流动性储备(动态)定义。如图2 所示, y 储备截距表示bin 的总流动性(L),而斜率由bin 的价格(P)定义。

图2: 储备联合曲线

2.3. 箱组成

由于上述设计,流动性箱中的储备组成必须独立于价格和流动性。可以使用一个附加变量来描述箱中可用的储备。这个变量,组成因子(c),将被定义作为当前作为Y 储备持有的bin 流动性的百分比。组成© 以[0,1] 为界。

(Eq: 2.3)

每个流动性箱的资产储备可以用箱流动性L 和成分c 来充分描述,如公式2.4 和2.5 所示。

流动性箱中X 和Y 储备的示例组合可以是可视化,如图3 所示。

图3: 箱储备部位(P14)

2.4. 市场聚合

一个资产对的单个流动性箱的聚合建立了该对的市场。流动性箱的储备状态预计会随着市场定价的变化在X 储备和Y 储备之间转换。

定价低于市场的流动性箱将仅包含资产Y,而定价高于市场的流动性箱将仅包含资产X。

因此,市场价格被确定为包含X 储备的最低价格箱。

图4: 聚合流动性部位

2.5. 做市

借助离散的流动性箱,流动性提供者能够创建自定义流动性结构,使他们能够根据各自的目标、预测和风险状况轻松管理自己的头寸。

流动性提供者可以将流动性集中在某些价格点或点差附近,并调整各个流动性箱,而不会影响其在其他箱中的流动性定位。总体而言,流动性账簿设计允许对做市商成功运作所需的范围和深度进行微调。

3 协议架构

3.1 市场定义

每个市场的价格范围都被限制在2 的正负128 次方之间

根据称为bin step (s) 的离散化参数将此价格范围离散化为bin。

一个独特的市场由(X, Y, s) 集合定义。

给定市场中流动性箱的总数可以描述为

使用公式3.1 计算。Nb 表示价格平价(par) 和市场中最大价格之间可以存在的最大箱数给定的bin 步骤。

除了价格限制外,最大bin 数量限制为小于2²⁴

在具有最大箱数的市场中,将一半的潜在箱分配给小于par 的值,将一半分配给大于par 的值会导致par 箱标识符为2²³,它分配给公式3.2 中的常数b在所有市场中,箱位将被分配一个正整数标识符(i),其范围在[b — Nb, b +Nb] 之间。

3.2 箱价

为每个bin 规定的价格是该对的bin 步长(s) 和bin 的标识符(i) 的函数,如公式3.2 所示。bin 步长参数确定每个增量bin 之间价格的恒定百分比增加或减少。

3.3 流动性追踪

为了优化流动性跟踪,箱在通过嵌套三个256 位数组创建的树中进行索引,如图5 所示。在这棵树中,每个箱都被分配一个通过嵌套数组的位置路径。非零值分配给三个表示bin 位置的数组元素。使用此树,可以在交换期间有效地搜索市场的流动性状态和/或从外部监控

图5: 箱指数树

3.4 交易路径

LB 路由器将为交易和流动性存款/取款提供额外的安全性和滑点检查。

当找到更好的定价时,交易也将通过传统的AMM 对进行路由。

3.5 流动性代币

专门为LB 协议开发了一种新的流动性代币标准,以支持每个市场中的大量bin。通过设计,LB 市场中的流动性(L) 可以跨bin 组合,因为它通常以Y 值计值并且是独立的垃圾箱的状态。

因此,流动性收据代币LBToken 将携带相等的流动性值,而不管它包含在哪个bin 中。此属性使bin 流动性能够跨bin 无缝捆绑在一起。LBToken 本质上类似于传统ERC-20 流动性代币,具有以下特点关键区别:它们在铸造时被分配了一个id

匹配流动性所在的bin 标识符(i)。

LBToken 合约遵循ERC-1155 多代币标准,但仅限于包含可替代的ERC-20 代币。

LBToken 是可替代的、以价格为定位的流动性收据代币。

3.6 市场参数

每个市场都会有一组参数来管理市场的费率,在第4.3 节中进一步详细说明。初始参数值将根据为市场选择的bin 步参数分配。

市场只能通过在工厂中具有相关费用参数的bin 步骤来建立。

费用参数可以在初始化后进行调整。

3.7. 预言机

LB 市场将有一个预言机,将以下值记录到

区块链:

时间戳 累积ID 累积累加器 累计Bin Crossed

累积值对于确定随时间变化的变化很有用。预言机提供市场价格和波动率/费用指标,因为它是算法交易和流动性提供的有用信息。

sampleLifetime 设置(采样率)是市场创建时定义的市场参数,用户可以根据需要增加Oracle 样本量。

4 用户交互

4.1 添加/删除流动性

向活跃流动性箱添加和移除流动性将保存价格§ 和成分©。对于给定的流动性调整,所需的储备X 和储备Y 可以使用下面的公式4.1 和4.2 计算。

对于所有“未启动”(不在价格上)的流动性箱,流动性可以专门添加到储备X 或储备Y 中,具体取决于组合边界。

如果比例不等于bin 的组成,添加到活动bin 的流动性将自动在储备之间进行交换,并且交换的数量将产生交换费用。

将流动性添加到与bin 的组成不一致的“未启动” bin 的交易将失败。

4.2 Swap

在流动性箱内交换储备将保存流动性和价格,因此只有储备组成会改变。储备按照公式4.5 进行交换,而组成保持在[0,1] 的范围内。

在达到组合界限之前,流动性箱中可用的储备可以根据公式4.6 和4.7 计算。

当交易需要的流动性比当前bin 中可用的更多时,交易将耗尽每个连续bin 中的流动性,然后再转移到下一个具有流动性的相邻bin。

4.3 Swap 费用

协议将收取费用,以补偿流动性提供者发生的交易活动。总交易费用(fs) 将包含两个部分,一个基本费用(fb) 和一个可变费用(fv),它是瞬时价格的函数挥发性。

费率将应用于每个流动性箱中的交易金额,并在分配给协议后按比例分配给该箱中的流动性提供者。

费用将与流动性分开并由流动性提供者索取。

可以根据公式4.8 计算跨n 个bin 的交易总费用。

4.3.1 基本费用

基本费率(fb) 是bin 步长(s) 的函数,并按基本费率(B) 缩放,如公式4.9 所示。

基本费用代表所有交易的最低费率,最大值等于bin 步长。

4.3.2 可变费用

可变费用(fv) 旨在补偿流动性提供者的瞬时波动性,并激励流动性提供者围绕移动价格积极管理流动性。可变费用使用公式4.10 计算每箱(k)。

瞬时波动率在新引入的波动率累积变量vk 中被捕获。A 是用于衡量可变费用部分的市场参数。

4.3.3 波动率累加器

波动性可以从bin 随时间变化的数量得出。

每个bin 变化代表一个由bin 步骤定义的固定价格变动。需要一个累加器来将bin 交叉的应用扩展为超越单个交易的波动性度量。

波动率累加器(vk) 是单个交易中的bin 交叉及其在先前交易中的值的函数,如公式4.11 所示。

累加器表示在一组先前事务中发生的bin 更改的数量。当连续事务发生在时间上限和下限之间时,累加器将按减少因子R 衰减。

当交易频率高时(由filterPeriod, tl 建立),市场被认为是波动的,累加器不会衰减。当交易频率低(由decayPeriod, tu 建立)时,市场被认为是稳定的并且累加器将重置为0。

为了防止过度和持续的费用,每个市场都会使用maxAccumulator 参数V来限制累加器的最大值。

4.3.4 协议费用

为协议保留的交易费用部分(fp) 将由协议费用参数(Ø) 控制。Ø是一个市场参数,将管理每个市场的费用分配。收取协议费用后,剩余部分将是发送给流动性提供者。

5 对于现有DEX的改进

5.1 无常损失

可变费用为流动性提供者在各种交易动态下管理无常损失提供补偿。

鉴于价格波动会导致无常损失,波动累加器是一种根据市场动态调整费用的自然机制。

此外,由于波动率累加器的时间衰减,流动性提供者有机会超越这一预期收益。

这种回报如图6 所示。由于累加器基于bin 步长,因此在极不稳定的事件下由于名义价格变化的大偏差而发生跟踪错误。

5.2 流动性深度

提高交易所的资本效率会增加一定数量资本的市场深度。

资本效率可以定义为提供相当于v1 的流动性所需的资本减少。

对于LB,通过将v1 上的交易对价格的影响等同于单个bin 步骤,可以找到可比较的流动性。

由该定义得出的效率方程如下所示,效率极限结果列于图7 中。

这些限制代表了给定bin 步长的每个市场的最大效率。

如图7 所示,LB 的效率与Uniswap v3 (v3) 相当。

可以使用均匀分布的LB 位置来逼近v3 位置。

如果流动性要在X 代币的箱中平均分配,则LB 和v3 之间的交易价值在箱位上的相对差异由方程5.2 描述。这个方程可以绘制为一组具有不同价格范围的箱位,离散化为不同的bin 步骤,如图8 所示。

如图8 所示,头寸价格范围是相对市场深度的重要因素,而不是箱结构。事实上,对于跨越至少2 个箱的箱位,跨步选择的深度差异可以忽略不计。

使用上面指定的分布,LB 的市场深度在Uniswap v3 的1% 以内,对于任何跨度低于60% 价格范围的头寸。此外,深度差异几乎完全是由于跨范围内流动性分布的选择(与v3 的几何序列相比)并且仅在大范围位置上才有意义。

这些发现仅进一步说明了LB 协议实现的灵活流动性分配的价值。

6 结论

流动性账簿(LB) 是一种用于构建去中心化交易所流动性的新颖设计。它允许将流动性离散到固定价格箱中,改善滑点和交易定价。与以前的集中流动性协议不同,LB 避免了流动性提供者的高无常损失。LB 流动性结构允许进一步的可组合性,我们热衷于与DeFi 社区一起探索新的用例。