パート1 - 分散型取引所の進化
Carbonコミュニティへの参加はこちらから🤝
— -
DEXの進化
これは分散型取引所の進化を探る2回シリーズのパート1です。ここでは、一定の商品と流動性が集中する分散型取引所の仕組みを取り上げていきます。パート2では、Carbonが提供するイノベーションに焦点を当てていきます。
はじめに
今回は集中流動性(Uniswap V3)について深く掘り下げて、この流動性供給方法の背後にある仕組みを理解したいと思います。そのためには、集中流動性の動機とここに至った経緯に目を向ける必要があります。コンスタントプロダクト自動マーケットメイカーの概要から始めます。
スターター:コンスタントプロダクト
分散型取引所の初期の実装は、すべてCPAMM(コンスタント・プロダクト・オートメーテッド・マーケット・メイカー)の価格決定スキームを使用しています。このスキームでは2つのトークン(例えばXとY)から流動性のペアが作られて、スマートコントラクトを使って流動性供給者(LP)がトークンXとYを拠出する必要があるようにアレンジされます。トークンXがUSDCのようなUSDステーブルコインであり、トークンYが別のトークン(この例ではRSK)である場合、プールに6つのUSDCと2つのRSKトークンが含まれていると仮定すると、次のようになります:
X/Y = 6 USDC/2 RSK = 3 USDC/RSK
Y/X = 2 RSK/6 USDC = .33 RSK/USDC
上記の為替レートは等価ですが、異なる基準値(numeraire)を使用して表現されています。
CPAMMの下では、すべてのスワップは定積関数 (X * Y = K) に支配されます。前の例で6USDCと2RSKトークンを使用して、これを関数に差し込むと、Kの値は12に等しくなります。
実際には、USDCを追加してRSKトークンを削除、またはその逆(RSKを追加してUSDCを削除する)によってこのプールで取引しようとする場合は、定数Kが常に維持されるように、定数積式に従わなければならないということになります。この動作を示すいくつかの取引例を以下に示します:
Start: 6 USDC and 2 RSK, K = 12
Trade 1: Remove 3 USDC, Add 2 RSK
Result: 3 USDC and 4 RSK, K = 12
Start: 3 USDC and 4 RSK, K = 12
Trade 2: Remove 1 USDC, Add 2 RSK
Result: 2 USDC and 6 RSK, K = 12
Start: 2 USDC and 6 RSK, K = 12
Trade 3: Add 4 USDC, remove 4 RSK
Result: 6 USDC and 2 RSK, K = 12
上記についてはいくつかの重要な見解があります:
- 取引されるトークンは高価になります。これは希少になるため直感的に理解できるでしょう。トレード1の前の初期状態では、限界価格が6 USDC / 2 RSK = 3 USDC/RSKでしたが、トレード2の後では、新しい限界価格は2 USDC / 6 RSK = 0.33 USDC/RSKに相当します。つまり、RSKトークンが取引されるたびに、USDCトークンのリターンは少なくなります。上記が続けば、USDC/RSKレートは減少し続けて、同時にUSDCトークンの量も減少します。CPAMMの重要な特性は、流動性プールがどちらのトークンも100%枯渇することはないということです。つまり、流動性はゼロから無限大までの全価格帯にわたって存在します。
- 行われた取引は取り消すことができるため、流動性プールは最初のトークン量と為替レートに戻ります。これは、前の2つの取引を取り消して、流動性プールを元の状態に戻した取引番号3を見れば理解できます。定積AMMのこの特性は、トークンの売買が同じボンディングカーブ上で起こり、CPAMM関数によって支配される対称的流動性と呼ばれるものです。これとは対照的に、カーボンは非対称的な流動性を可能にして、各資産の売却に使用される2つの異なるボンディングカーブが存在します。
- 実際には、取引手数料は取引が行われた際に徴収されて、その全額(または一部)がLPに返却されます。この例では、例を分かりやすくするため、取引手数料を無視することにしました。
上記から、価格帯全体(0と無限大)に流動性を配置するという特性によって、あらゆる価格帯に流動性が存在することがわかります。主に、資産が「好まれて」おり、非常に近い為替レートの間で大半の時間取引されている(ボラティリティがほとんどない)取引ペアに当てはまります。ステーブルコインペア(USDC/DAI、DAI/USDT)や、トークンをステーキングするための流動的なデリバティブ(ETH/stETH、ETH/rETH)など、このような「好まれている」資産はこのカテゴリーに属します。
最初の進化: 流動性の集中
カスタムの価格範囲内で流動性を配分する必要性は、一定の商品プール内の流動性の大部分が利用されていないという観察から生じます。例えばUniswap V2 DAI/USDCペアは、0.99ドルから1.011ドルの間の取引に利用可能な総資本の0.50%を利用しています。別の見方をすれば、流動性の99.5%が利用されなかったということになります。利益意欲のあるLPは、ほとんどの取引が特定の価格帯の間で発生し、それゆえ取引手数料をより多く稼げることを知っているため、狭いレンジで流動性を提供したいと思うかもしれません。
流動性を集中させる大きな技術革新は、0から無限大の間の価格帯を均等に小さなティックにスライスできることでした。LPの観点からは、ユニスワップV3流動性ペアの各ポジション(LPは複数のポジションを持つことができます)は、それぞれの価格帯となります。各価格帯は、LPから拠出されたトークンの量を持つことができ、リザーブがなくなる可能性があるため有限となります。
価格帯はティックで表され、下限と上限の境界を定義します。取引ペアの各ティックは、特定の価格に対応するインデックスを持っています。このシステムを視覚的に表現するために、等間隔の間隔(ティックインデックス)を持つ番号付きの水平線を使用することができます:
無限でない価格カーブを視覚化すると、各軸上で終端を持つ曲線に行き着きます。同様に、ポイントbからポイントaに移動するときに、トークンXをすべて枯渇させることも可能です。どちらのシナリオでも、トークン1つだけを残すことができ、この時点で曲線(価格帯を表す)はアクティブではなくなります。
ある間隔の流動性が消費されると、次に隣接するティックがアクティブになります。価格帯がアクティブでないティックにあるLPは、流動性が利用されないため、手数料を獲得できません。将来の価格が戻れば、流動性は再びアクティブになり、レンジ内のLPは手数料を獲得し始めます。
新たにアクティブになったティックに寄与している流動性のポジションは、手数料を獲得し始めます。取引がティックの境界を越える場合、そのような取引のコストが増加することに注意することが重要です。
LPは、複数のティックに資金を配分することができます。LPの貢献度により、各ティックが異なる流動性の深さを持つことも可能です。
1つの取引ペアに複数のプライスカーブがあり、それぞれ異なる価格帯を表していても、取引ペアに対す る取引では、それらは全て一緒に集約されます。従って、トレーダーはプールに対して取引を行う際、特定の価格帯で利用可能な重複するプライスカーブ全てにアクセスすることができます。
トレーダーの観点からは、流動性が集中することで、トレーダーの取引により良い結果がもたらされます。これは、ジャストインタイムの流動性プロバイダーも注文を満たすために急襲するかもしれないことを考慮に入れていません。流動性の集中によって特定の価格帯で提供されるように調整できれば、資本をより効率的に配分できると結論づけることができます。
Uniswap V3における流動性提供を理解することは、後ほどCarbon間の比較に使用するため重要になります。流動性が提供される価格帯に応じて、LPは取引ペアのどちらか、または両方のトークンを提供しなければならないかもしれません。
価格帯が取引ペアの現在価格と重なる場合、LPは両方のトークンを提供する必要があります。このシナリオでは、現在の価格が価格帯の中間に位置する場合、流動性の提供はユニスワップV2プールに似ています。LPはUniswap V3プールに等しく両方のトークンを提供する必要があります。
例を以下に示します:
Current Price = $20
Price Range = $18-$22
上記の例では、現在価格$20は$18-$22の範囲の中間点となり、どちらの境界からも$2離れています。
現在の価格が価格帯の中間に位置していない場合、LPは両方のトークンを供給しなければなりませんが、同価値ではありません。
例を以下に示します:
Current Price = $19
Price Range = $18-$22
上記の例は、現在価格$19が$18の境界から$1離れ、$22の境界から$3離れていることを示しています。
現在の価格が価格帯の外にある場合、LPはトークンを1枚だけ供給する必要があります。ある流動性プールに6USDCと2RSKトークンがあり、K値が12(X * Y = K)であるとします。現在のRSKの限界価格は3USDC/RSKです。
2 RSK * 6 USDC = 12
6 USDC/2 RSK = 3 USDC/RSK
LPは、0.33–1.33USDC/RSKの範囲でUSDCの流動性を提供することを決定するかもしれません。これは、現在の価格3USDC/RSKより低いことを意味し、流動性を提供するためには、RSKの価格を下げる必要があります。つまり、RSKトークンを追加し、プールからUSDCを取り除く必要があります:
Start: 2 RSK * 6 USDC = 12
Swap: Add 1 RSK, Remove 2 USDC
Result: 3 RSK * 4 USDC = 12
Marginal Price: 4 USDC / 3 RSK = 1.33 USDC/RSK
Start: 2 RSK * 6 USDC = 12
Swap: Add 4 RSK, Remove 4 USDC
Result: 6 RSK * 2 USDC = 12
Marginal Price: 2 USDC / 6 RSK = .33 USDC/RSK
RSKの価格が1.33 USDC/RSKまで下がると、この範囲内で提供したUSDCは、価格が0.33 USDC/RSKを下回ると、USDCが枯渇するまでゆっくりとRSKに変換されます。RSKの価格が上昇し後退した場合、私たちのRSKトークンは、すべてのRSKが交換されるまで、ゆっくりとUSDCに変換されます。
現在の価格よりも高い価格帯で片側流動性を提供する例は、ユーザー次第で展開できます。
流動性が集中する場合、いくつかの観察ができます:
- 価値の高いトークンは常に価値の低いトークンと交換されます。流動性の集中によっては、これはILの集中を意味します。
- 流動性の範囲から外れると、取引手数料を得ることができなくなります。LPは、再び範囲内に入るために流動性を引き出し、ポジションを再作成する必要があるかもしれません。これはLPにとって余分なコストとなり、自動化するにはコストがかかります。
- また、LPの観点からは、注文が満たされた後、流動性を取り除くために常に監視する必要があります。
まとめ
製品と集中流動性AMMについて基本的な理解を深めたところで、次のステップは、Carbonがこの状況にもたらす革新性を探ることです。このシリーズのパート2では、Carbonとその背後にある仕組みについて深く掘り下げていきます。