Injectiveのオンチェーンオーダーブックにおいて深く持続的な流動性を促進するため、OLPでは以下のメトリクスが優先されます:
- 両サイドの流動性(bidとaskの両方の流動性)
- 流動性の深さ
- Bid-askスプレッド
- マーケットメイカーのアップタイム
- ボリューム(メイカーおよびテイカー)
- 複数市場への参加
Total Score
任意の市場において、流動性プロバイダーのepochにおけるTS(Total Score)は以下のように計算されます:
TSMarket=(LSEpoch)a⋅(UptimeEpoch)b⋅(Volumeepoch)c
ここで、LSepochはそのepochにおけるその市場での流動性プロバイダーのLiquidity Score、UptimeEpochはそのepochにおけるその市場での流動性プロバイダーのUptime Score、Volumeepochはそのepochにおけるその市場での流動性プロバイダーの合計ボリューム(メイカーおよびテイカー)です。
a、b、cは計算式の異なる構成要素を重み付けする指数パラメータです。
Liquidity Score
LSEpoch=N=1∑40,320min(LSNBid,LSNAsk)
epochにおける市場の流動性プロバイダーのLiquidity Score LSEpochは、該当市場のepoch内のすべてのオーダーブックスナップショットにわたるBidとAskのLiquidity Score(以下参照)の最小値の合計に、各市場固有のボラティリティパラメータ(Θで表現)を乗じたものです。min()関数の下では片側のみの流動性はLiquidity Score 0となるため、両サイドの流動性が促進されます。
オーダーブックのスナップショットは10〜100ブロックごとにランダムに取得されます。これは平均して約1分ごとであり、1epochあたり約40,320のスナップショットがあることを意味します(60⋅24⋅28=40,320)。実際には、合計の上限はepoch内の実際のスナップショット数に応じて変動します。このガイドでは、epochにちょうど40,320のスナップショットがあったと仮定します。
LSNBid=Spread1BidDepth1⋅Θvol+Spread2BidDepth2⋅Θvol+…∀ BidDepthi≥MinDepth and Spreadi≤MaxSpread
LSNAsk=Spread1AskDepth1⋅Θvol+Spread2AskDepth2⋅Θvol+…∀ AskDepthi≥MinDepth and Spreadi≤MaxSpread
LSNBidは、スナップショットNにおいて流動性プロバイダーが配置した、サイズがMinDepth以上かつMaxSpread以内のすべてのリミットオーダーについて、各bidオーダーの深さをそのオーダーのスプレッドで割り、そのスナップショットのボラティリティパラメータを乗じた合計です。
LSNAskはLSNBidと同じロジックですが、オーダーブックのask側に対して適用されます。
ボラティリティパラメータは以下のように計算されます:
Θvol(Sb)=min(Θmax,max{1,eασb∣SbSb−μb∣})
ここで、μbはNブロック(1000ブロック、約10分)にわたるオラクル価格の移動平均、Sbは現在のブロックのオラクル価格、σbはNブロックにわたる実現ボラティリティを表します。この関数はクランプを持ち、現在のオラクル価格が移動平均から乖離した場合、または直近Nブロックでボラティリティが急上昇した場合に適切にスケールします。Θvol∈[1,Θmax]の範囲 - 有限の範囲内に制限されます。ボラティリティへの感度とクランプを監視する2つの新しいパラメータ(α,Θmax)を導入しています。Θmaxは10分間の期間における3%の価格変動に対して上記の上限10に向かう傾向があるため、αは現在2,500に設定されています。αの値が高いほどΘはΘmaxに速く到達しますが、Θmaxは現在市場ごとに10に設定されており(市場ごとに変更可能)、αが高くてもその上限を超えることはありません。
Spreadはミッドプライスから計算されます(ミッドプライスからの距離をミッドプライスで割ったもの)。
MinDepthとMaxSpreadの現在の値については、計算式パラメータページをご覧ください。
Uptime Score
UptimeEpoch=N=1∑40,320{10if min(LSNBid,LSNAsk)>0otherwise
UptimeEpochは、流動性プロバイダーが対象市場において正のBid Liquidity Scoreと正のAsk Liquidity Scoreを持っていたepoch全体のオーダーブックスナップショットの数です。これは、流動性プロバイダーがそのスナップショットにおいて、MinDepth以上のオーダーサイズでMaxSpread以下のスプレッドで、オーダーブックの両サイドにクォートしていたことを意味します。
epochの途中でOLP報酬の資格を(初めて)取得した流動性プロバイダーの場合、UptimeEpochは資格取得時点からepoch終了までの合計スナップショット数に基づいてスケーリングされます。
例えば、epochにちょうど40,320のスナップショットがあり、流動性プロバイダーが残りちょうど20,000スナップショットの時点で初めて資格を取得したとします。また、epochの残りの期間中に上記のスコアリング計算式で定義されるUptimeEpochが18,000であったとします。この場合、UptimeEpochは2000018000∗40320=36288にスケーリングされます。
epochの途中で資格を取得したが過去に資格を取得したことがあるアドレス(ある時点で資格を維持できなかったアドレス)の場合、UptimeEpochはスケーリングされません。これは、epoch間で資格を失うことへのディスインセンティブとなります。
Volume
Volumeは、epochにおけるその市場での流動性プロバイダーの累積的な対象メイカーおよびテイカーボリュームです。
完全展開計算式
完全に展開された計算式は以下のとおりです:
TSMarket=
(N=1∑40,320min(LSNBid,LSNAsk))a⋅(N=1∑40,320{10if min(LSNBid,LSNAsk)>0otherwise)b⋅Volumec
where
LSNBid=Spread1BidDepth1⋅Θvol+Spread2BidDepth2⋅Θvol+…∀ BidDepthi≥MinDepth and Spreadi≤MaxSpread
LSNAsk=Spread1AskDepth1⋅Θvol+Spread2AskDepth2⋅Θvol+…∀ AskDepthi≥MinDepth and Spreadi≤MaxSpread
Last modified on April 24, 2026