Web3業界の現状では、DeFi関連製品が絶対的な市場シェアを占めています。その中でも、AMM(自動マーケットメーカー)はWeb3金融における変革の重要なリンクであり、強力な推進力となっています。この記事では、Solanaエコシステムにおける重要なAMMの実装をいくつか紹介し、LP(流動性プロバイダー)が投資戦略を選択する上で少しでも参考になれば幸いです。
CPMM
CPMM ( Constant Product Market Maker )は最も基本的なAMM実装であり、多くの製品に実装されています。ここでは、RaydiumがリリースしたConstant ProductベースのAMMを例に挙げます。Constant Productとは、プール内の2つのトークンの供給量がX * Y = kという固定された積を持つことを意味します。
流動性プロバイダーの場合、誰かがプールに流動性(資産)を追加すると、CPMMは自動的にウォレットアドレスに関連付けられたアカウントを作成し、LPトークンを発行します(各トークンペアには独自のLPトークンミントがあります)。このLPトークンは、ウォレットアドレスがプールのシェアを保有していることを証明するために使用され、流動性プロバイダーが撤退すると、対応するトークンは破棄されます。
CPMMのオンチェーンプログラムはAnchorを用いて開発されており、プログラムコードはhttps://github.com/raydium-io/raydium-cp-swapで公開されています。定数積を実現する仕組みを簡単に確認してみましょう。
まず、ユーザーがRaydiumのCPMMを使用してトークンを交換すると、スワップ関連の指示がトリガーされます。
たとえば(説明のみを目的としており、この記事はいかなるトークンについても責任を負いません):ユーザーが USDC を使用して TRUMP を交換したい場合、 TRUMP-USDCプールを通じて交換できます。
池 | トランプ | USDC |
7XzVsjqTebULfkUofTDH5gDdZDmxacPmPuTfHa1n9kuh | 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
例えば、 このトランザクションを見てみましょう。説明を簡単にするために、トランザクション内の他の命令は無視し、Raydium部分のみを見てみましょう。Raydium Raydium CPMM: swapBaseInputを検索します。

入力アカウントを見ると、入力トークンがUSDC、出力トークンがTRUMPであることがわかります。SolanaエコシステムのAMMでは、LPペアは新しいコントラクトプログラム(Ethereumで一般的に使用されるファクトリーコントラクトなど)を作成してデプロイすることなく、トークンアカウントで簡単に表すことができます。トランザクションが発生すると、RaydiumのCPMMプログラムと直接やり取りします。Solanaプログラムは、入力プールアドレス、トークンアドレスなどを通じて対応するトークンアカウントのステータスを変更し、スワップ操作を実行します。
例えば、上記の swapBaseInput 命令のコードはここにあります。一連の事前チェックの後、 ConstantProductCurve.swap_base_input_without_feesで、交換可能な対象トークンの正確な量が計算されます。

使用される式は次のとおりです。

つまり、TokenXとTokenYの合計量が変化した後も、それらの積は変化しないはずです。式の左側は変化後の積、右側は変化前の積です。

数学的変換後、上記の式は Δy (つまり、交換できる y トークンの数) の変換式に変換できます。

つまり、コード内のdelta_y = (delta_x * y) / (x + delta_x)の部分です。ここでの計算には手数料が含まれていないことに注意してください。手数料はswap_base_inputの前処理で差し引かれています。
CLMM
CLMM(集中流動性マーケットメーカー)もRaydiumが立ち上げたAMMです。Uniswap V3に似ています。各トークンペアには複数の手数料階層があり、階層ごとに対応するプールを作成できます。
CLMMの実装はUniswap V3を参照しているため、学習する際には多くの概念や実装方法をUniswapの実装から参照できます。また、ティック、複数の手数料階層、集中型流動性など、Uniswapの概念も継承しています。ZANが開始したDEX開発コース「DEX開発実践 - Uniswapコード分析 - Uniswapの仕組み - ZAN」で、さらに詳しい内容をご覧いただけます。
ただし、CPMMと同様に、Solanaチェーンの特性上、Raydium CLMMはプールごとに個別のコントラクトをデプロイする必要がないため、ファクトリーコントラクトの概念が存在しない点に注意が必要です。これはUniswapとは異なります。
CLMM では、流動性プロバイダーが資金を注入する際に価格帯を選択でき、資金は選択された範囲内でのみ分配されます。

中央集権型流動性プールでは、トークンは現在価格の両側に存在します。上図で選択された価格帯には現在価格が含まれているため、資金はプール内の2つのトークンに割り当てられます。
片側流動性を提供するために、1種類のトークンのみを注入することも可能です(下図参照)。これは、従来の金融モデルにおける指値注文に多少似ています。LP資金はトークン価格が特定のレンジに達した場合にのみ使用されますが、このモデルには考慮すべきリスクポイントがさらに多くあります。

一般的に、価格変動の小さいプールでは、LPはより狭いレンジを選択する傾向があります。逆に、価格変動が非常に激しいプールでは、LPはより広いレンジを選択する傾向があります。これは、現在の価格が選択した価格レンジから逸脱し、変動損失が過度に大きくならないようにするためです。
集中化された流動性はLPの資本利用率を高める可能性がある一方で、LPの財務管理能力への要求も高まることに留意する必要があります。LPは自身の流動性をより積極的に管理する必要があります。LPが適切な対応を怠ると、チェーン上の頻繁な変動によって深刻な変動損失を被る可能性があります。
DLMM
DLMM(Dynamic Liquidity Market Maker)は、MeteoraがリリースしたAMM製品です。これもUniswap V3の一種で、前述のCLMMと非常によく似ています。DLMMは、LPが資金を現在の価格付近の特定の範囲内に集中させることを可能にします。ただし、DLMMは具体的な実装がCLMMと多少異なり、いくつかの特別な機能を備えています。
DLMMはビンの概念を提供します。プールはベース価格から始まり、小さなビンステップごとにビンとして存在します。取引が同じビン内で発生した場合、トレーダーはスリッページゼロを享受できます。これにより、取引量と取引成功率が大幅に向上します。理論的には、LPはより多くの取引手数料を獲得できます。

CLMMと同様に、プール内のトークンは現在価格の両側に分散されており、片方のトークンで片方の流動性を提供すれば十分です。ただし、Binの概念によれば、現在アクティブなBin(現在の取引価格を示す)には2つのトークンがあります。つまり、
- 現在アクティブなビン:2つのトークンが入っています。現在のビン内のトークンのスワップは、固定価格、スリッページ0で行われます。
- その他のビン: 現在アクティブになっているビンの両側に配布され、それぞれにトークンが 1 つだけあります。
現在アクティブになっている Bin 内のトークンの量が変化し、一方のパーティのトークンが 0 に減少した場合、DLMM はプール内の実際の状況に応じて、現在アクティブになっている Bin をその左または右の次の Bin に設定し、それによってプールの価格が変化します。
LPが流動性を提供する場合、DLMMはスポット、カーブ、ビッドアスクの3つの戦略を提供します。
- 中でもスポットは最も汎用性が高く、基本的にあらゆる流動性プールに対応しています。最もシンプルな流動性戦略と考えられています。
- Curveは、ステーブルコインペアなど、価格変動が非常に小さいプールに適しています。これらのプールでは価格変動が非常に小さく、その形状からもわかるように、LP資金をこの範囲に集中させることで、取引手数料を最大化できます。
- ビッド・アスクは、価格変動の大きいプールに適しています。このようなプールでは裁定取引が多く行われる傾向があり、価格を狭いレンジに集中させることが難しい場合があります。この戦略では通常、LPは価格が設定した資金調達レンジから逸脱しないように、頻繁にポジションを調整する必要があります。これは市場判断を伴うため、通常は容易ではありません。
要約する
AMMはWeb3金融分野の重要な一翼を担う存在として、独自のメカニズムとイノベーションを通じて、分散型金融の普及と発展を推進しています。技術の継続的な進歩とエコシステムの整備により、AMMは今後より大きな役割を果たし、従来の金融のあり方をさらに変革していくことが期待されています。
