跳转到主要内容
为了促进 Injective 链上订单簿的深度、持久流动性,OLP 优先考虑以下指标:
  • 双边流动性(买单和卖单流动性)
  • 流动性深度
  • 买卖价差
  • 做市商在线时间
  • 交易量(做市商和吃单者)
  • 参与多个市场

总分

对于任何给定市场,流动性提供者在一个周期内的 TSTS(总分)计算如下: TSMarket=(LSEpoch)a(UptimeEpoch)b(Volumeepoch)cTS_{Market} = (LS_{Epoch})^a \cdot (Uptime_{Epoch})^b \cdot (Volume_{epoch})^c 其中 LSepochLS_{epoch} 是流动性提供者在该周期内该市场的流动性分数UptimeEpochUptime_{Epoch} 是流动性提供者在该周期内该市场的在线时间分数VolumeepochVolume_{epoch} 是流动性提供者在该周期内该市场的总交易量(做市商和吃单者)。
aabbcc 是加权公式不同组成部分的指数参数

流动性分数

LSEpoch=N=140,320min(LSNBid,LSNAsk)LS_{Epoch} = \sum \limits_{N=1}^{40,320} \min(LS_{N_{Bid}}, LS_{N_{Ask}}) 流动性提供者在一个周期内某市场的流动性分数 LSEpochLS_{Epoch} 是该周期内相关市场所有订单簿快照中买单和卖单流动性分数(见下文)最小值的总和,乘以每个市场的定制波动性参数(用 Θ 表示)。这促进了双边流动性,因为在 min()\min() 函数下,单边流动性将获得 0 的流动性分数。 订单簿快照每 10-100 个区块随机获取一次。这大约平均每分钟一次,意味着一个周期内大约有 40,320 个快照 (602428=40,320)(60 \cdot 24 \cdot 28 = 40,320)。实际上,求和的上限将根据周期内的实际快照数量而变化。为本指南的目的,我们假设周期内恰好有 40,320 个快照。 LSNBid=BidDepth1Spread1Θvol+BidDepth2Spread2Θvol+ BidDepthiMinDepth and SpreadiMaxSpreadLS_{N_{Bid}} = \frac{BidDepth_1}{Spread_1} \cdot \Theta_{vol} + \frac{BidDepth_2}{Spread_2} \cdot \Theta_{vol} + \ldots \newline \forall \ BidDepth_i \geq MinDepth \text{ and } Spread_i \leq MaxSpread LSNAsk=AskDepth1Spread1Θvol+AskDepth2Spread2Θvol+ AskDepthiMinDepth and SpreadiMaxSpreadLS_{N_{Ask}} = \frac{AskDepth_1}{Spread_1} \cdot \Theta_{vol} + \frac{AskDepth_2}{Spread_2} \cdot \Theta_{vol} + \ldots \newline \forall \ AskDepth_i \geq MinDepth \text{ and } Spread_i \leq MaxSpread LSNBidLS_{N_{Bid}} 是流动性提供者在快照 NN 中所有超过 MinDepthMinDepth 大小且在 MaxSpreadMaxSpread 范围内的限价单的买单深度除以订单价差的总和,乘以该快照的波动性参数。 LSNAskLS_{N_{Ask}} 遵循与 LSNBidLS_{N_{Bid}} 相同的逻辑,但在订单簿的卖单侧。 波动性参数计算如下: Θvol(Sb)  =  min ⁣(Θmax,  max ⁣{1,  eασbSbμbSb})\Theta_{\text{vol}}(S_b)\;=\; \min\!\bigl(\,\Theta_{\max},\; \max\!\{\,1,\; e^{\alpha\,\sigma_b\,|\frac{S_b-\mu_b}{S_b}|}\}\bigr) 其中 μb\mu_bNN 个区块(1000 个区块,约 10 分钟)内的预言机价格移动平均值,SbS_b 代表当前区块的预言机价格,σb\sigma_b 代表 NN 个区块内的已实现波动率。如果当前预言机价格偏离移动平均值,或者在过去 NN 个区块内波动率飙升,此函数具有限制并能很好地扩展。Θvol[1,Θmax]\Theta_{\text{vol}} \in [1, \Theta_{\text{max}}] 的范围 - 因此我们将其限制在有限域内。我们引入两个新参数 (α,Θmax)(\alpha, \Theta_{\text{max}}) 来监控对波动率的敏感性和限制。因为 Θmax\Theta_{\text{max}} 应该在 10 分钟内 3% 的价格变动时趋向于上限 10,α\alpha 目前设置为 2,500。较高的 α\alpha 值意味着 Θ\Theta 更快地趋向于 Θmax\Theta_{\text{max}},但由于 Θmax\Theta_{\text{max}} 目前每个市场设置为 10(可以按市场修改),较高的 α\alpha 不会超过该最大值。 SpreadSpread 从中间价计算(与中间价的距离除以中间价)。
有关 MinDepthMinDepthMaxSpreadMaxSpread 的当前值,请参阅公式参数页面

在线时间分数

UptimeEpoch=N=140,320{1if min(LSNBid,LSNAsk)>00otherwiseUptime_{Epoch} = \sum \limits_{N=1}^{40,320} \begin{cases}1&\text{if } \min(LS_{N_{Bid}}, LS_{N_{Ask}}) > 0\\ 0&\text{otherwise} \\\end{cases} UptimeEpochUptime_{Epoch} 是整个周期内流动性提供者在相关市场中具有正买单流动性分数和正卖单流动性分数的订单簿快照数量。这意味着流动性提供者在快照中在订单簿两侧报价,订单大小大于或等于 MinDepthMinDepth,价差小于或等于 MaxSpreadMaxSpread 对于在周期中途(首次)获得 OLP 奖励资格的流动性提供者,UptimeEpochUptime_{Epoch} 根据从资格认证时刻到周期结束的总快照数量进行缩放。 例如,假设一个周期内恰好有 40,320 个快照,流动性提供者首次获得资格时还剩 20,000 个快照。还假设流动性提供者在周期剩余时间内按上述评分公式定义的 UptimeEpochUptime_{Epoch} 为 18,000。在这种情况下,UptimeEpochUptime_{Epoch} 将缩放为 180002000040320=36288\frac{18000}{20000}*40320 = 36288
对于在周期中途获得资格但过去曾获得资格的地址(该地址在某个时候失去了资格),UptimeEpochUptime_{Epoch} 将不会被缩放。这是为了抑制地址在周期之间失去资格。

交易量

VolumeVolume 是流动性提供者在周期内该市场的累计符合条件的做市商和吃单者交易量。

完全展开的公式

完全展开的公式是: TSMarket=TS_{Market} = (N=140,320min(LSNBid,LSNAsk))a(N=140,320{1if min(LSNBid,LSNAsk)>00otherwise)bVolumec\left(\sum \limits_{N=1}^{40,320} \min(LS_{N_{Bid}}, LS_{N_{Ask}})\right)^a \cdot \left(\sum \limits_{N=1}^{40,320} \begin{cases}1&\text{if } \min(LS_{N_{Bid}}, LS_{N_{Ask}}) > 0\\ 0&\text{otherwise} \\\end{cases} \right)^b \cdot Volume^c 其中\text {其中} LSNBid=BidDepth1Spread1Θvol+BidDepth2Spread2Θvol+ BidDepthiMinDepth and SpreadiMaxSpreadLS_{N_{Bid}} = \frac{BidDepth_1}{Spread_1} \cdot \Theta_{vol} + \frac{BidDepth_2}{Spread_2} \cdot \Theta_{vol} + \ldots \newline \forall \ BidDepth_i \geq MinDepth \text{ and } Spread_i \leq MaxSpread LSNAsk=AskDepth1Spread1Θvol+AskDepth2Spread2Θvol+ AskDepthiMinDepth and SpreadiMaxSpreadLS_{N_{Ask}} = \frac{AskDepth_1}{Spread_1} \cdot \Theta_{vol} + \frac{AskDepth_2}{Spread_2} \cdot \Theta_{vol} + \ldots \newline \forall \ AskDepth_i \geq MinDepth \text{ and } Spread_i \leq MaxSpread
有关每个周期个人奖励计算的信息,请参阅奖励分配页面