最終更新:
編集

自動マーケットメーカー

(AMM amendment)

自動マーケットメーカー(AMM)は、XRP Ledgerの分散型取引所において流動性を提供するスマートコントラクトです。個々のAMMは2つの資産のプールを保有し、数式で定められた取引レートでユーザがその2つの資産間でスワップを可能とします。

任意の資産ペアに対して、最大1つのAMMがレジャーに存在することができます。AMMはそのペアが存在しない場合、誰でも作成することができ、また既存のAMMに預けることもできます。AMMに資産を預ける人は、流動性供給者(LP/Liquidity Provider)と呼ばれ、AMMから「LPトークン」を受け取ります。LPトークンによって、流動性供給者は以下のことが可能になります。

  • LPトークンを、AMMのプール内の資産の一部(手数料を含む)と交換する。
  • AMMの手数料設定を変更するために投票する。票は、投票者が保有するLPトークンの数に基づいて重み付けされます。
  • AMMの取引手数料の一時的な割引を得るために、LPトークンの一部を入札する。

プール内の2つの資産の取引が比較的活発で均衡している場合、手数料は流動性供給者の収益になります。しかし、資産間の相対価格が変動すると、流動性供給者は為替リスクにより損失を被る可能性があります。

AMMの仕組み

AMMは2つの異なる資産を保有します。このうち最大でも片方がXRPであり、もう片方または両方はトークンとなります。この場合、発行者の異なるトークンは異なる資産とみなされます。つまり、通貨コードは同じだが発行者が異なる2つのトークン(「WayGateが発行したFOO」と「StableFooが発行したFOO」は異なる)や、発行者は同じだが通貨コードが異なるトークンに対してAMMが存在する可能性があるということです。また、順番は関係なく、FOO.WayGateからXRPへのAMMは、XRPからFOO.WayGateへのAMMと同一になります。

ユーザが分散型取引所で取引を行う場合、オファークロスカレンシー決済は自動的にAMMを使用してトランザクションを成立させることが出来ます。トランザクションは低コストで取引を行えるように、オファー、AMM、またはその両方の組み合わせで実行されます。

注記

PaymentまたはOfferCreateトランザクションがAMMとやり取りしたかどうかは、トランザクションメタデータにあるRippleStateレジャーエントリを確認することで判断できます。Flags値が16777216の場合、AMMの流動性が消費されたことを示します。

AMMは、プール内の資産残高に基づき取引レートを設定します。AMMに対して取引を行うと、AMMが保有する資産残高の変動に応じて、取引レートが調整されます。一方の資産の量が減れば、その資産の価格が上がり、他方の資産の量が増えれば、その資産の価格が下がります。AMMは、プール内の残高が多いほど、一般的により良い取引レートを提供します。同一取引であればプール内の残高が大きい方がAMMの資産バランスに生じる変化は小さくなるからです。AMMの2つの資産のバランスが崩れれば崩れるほど、交換レートは極端に悪化します。

また、AMMは交換レートに加え、一定割合の取引手数料を徴収しています。

XRP Ledgerの実装は、重みパラメータを0.5とした 幾何平均 AMMですので、定積 マーケットメーカーのように機能します。 定積 AMMの公式や一般的なAMMの経済学についての詳しい説明は、Kris Machowski's Introduction to Automated Market Makersをご覧ください。

資産の制限

不正利用を防ぐため、AMMで利用できる資産にはいくつかの制限があります。これらの制約を満たさない資産でAMMを作成しようとすると、トランザクションは失敗します。ルールは以下のとおりです。

  • 他のAMMのLPTokenをAMMの資産として利用することはできません。
  • 資産が、発行者が認可トラストラインを使用しているトークンである場合、AMMの作成者はそれらのトークンを保有する権限がなければなりません。トラストラインが認可されているユーザだけが、そのトークンをAMMに預けたり引き出したりすることができます。
  • Clawback Amendment が有効な場合、Clawbackが有効なトークンでAMMを作成することはできません。

LPトークン

AMMの作成者は、最初の流動性供給者となり、AMMのプール内の資産の100%の所有権を表すLPトークンを受け取ります。LPトークンの一部または全部を交換して、現在のプール残高に比例した資産をAMMから引き出せます。(この比率は、人々がAMMに対して取引を行うにつれて変化します)AMMは、同時に両方の資産を引き出す際に手数料はかかりません。

例えば、5ETHと5USDでAMMを作成し、その後誰かが1.26USDを1ETHに交換したとすると、現在プールには4ETHと6.26USDが入っています。LPトークンの半分を使用して、2ETHと3.13USDを引き出すことができます。

誰でも既存のAMMに資産を預けることができます。預け入れると、その金額に応じて新しいLPトークンを受け取ります。流動性供給者がAMMから引き出すことができる金額は、発行済みのLPトークンの総数に対する流動性提供者のLPトークンの保有割合に基づきます。

LPトークンはXRP Ledgerの他のトークンと同様に、様々な種類の支払いで使用したり、分散型取引所で取引したり、新しいAMMの資産として預けることも可能です。(LPトークンを支払い(Payment)として受け取るには、AMMアカウントを発行元として、限度額が0でないトラストラインを設定する必要があります)。ただし、LPトークンをAMMに直接送る(換金する)にはAMMWithdrawトランザクションタイプを使用し、他のタイプの支払いは使用できません。同様に、AMMのプールに資産を送るには、AMMDepositトランザクションタイプを使用する必要があります。

AMMは、発行済のLPトークンがない場合に限り、AMMの資産プールが空になるように設計されています。こうした状況は、AMMWithdrawトランザクションの結果としてのみ発生し、発生した時点でAMMは自動的に削除されます。

LPトークンの通貨コード

LPトークンは、160ビットの16進法"非標準"フォーマットの特別なタイプの通貨コードを使用します。これらのコードの最初の8ビットは0x03です。残りのコードは、2つの資産の通貨コードとその発行者のSHA-512ハッシュで、最初の152ビットまで切り捨てたものです。(資産は、数値の低い通貨と発行者のペアを最初にする「正規化された順序」で配置されます。)その結果、LPトークンは、通貨と発行者のペアを最初にする「正規化された順序」で配置されます。その結果、ある資産ペアのAMMのLPトークンは、予測可能で一貫した通貨コードを持っています。

取引手数料

取引手数料は流動性供給者の収益源であり、プールの資産に対して他者に取引をさせることによる為替リスクを相殺するものです。取引手数料は流動性提供者に直接支払われずにAMMに支払われますが、流動性供給者は自分のLPトークンをAMMのプールの一定割合と交換することができるため、利益を得ることができます。

流動性供給者は、投票によって取引手数料を0%から1%まで、0.001%刻みで設定することが出来ます。流動性供給者は取引手数料を適切に設定するインセンティブがあり、手数料が高すぎる場合、トレーダーはより良いレートを得るために代わりにオーダーブックを使用することになります。手数料が低すぎる場合、流動性供給者はこのプールへの貢献に対してメリットが得られなくなります。AMMの各流動性供給者は、その保有するLPトークンの量に比例して、取引手数料への投票権を有します。

投票するには、流動性供給者がAMMVoteトランザクションを送信します。誰かが新しい票を入れるたびに、AMMは手数料を再計算し、直近の票の平均を、それらの投票者が保有するLPトークンの数で重み付けしたものにします。この方法では、最大8つの流動性供給者の投票がカウントされます。それ以上の流動性供給者が投票しようとすると、上位8つの投票(保有LPトークンの多い順)だけがカウントされます。流動性供給者のLPトークンのシェアは、様々な理由(例えばオファーを使ったトークンの取引)で急速に変化しますが、取引手数料は誰かが新しい票を入れるたびに再計算されます(その票がトップ8に入っていない場合でも計算されます)。

オークションスロット

従来の自動マーケットメーカーとは異なり、XRP LedgerのAMMには、流動性供給者が24時間の取引手数料の割引を得るために入札できる オークションスロット があります。入札はLPトークンで支払われ、AMMに返却されます。他のブロックチェーンとは異なり、AMMの資産価格が外部市場で大きく変動すると、トレーダーはAMMから利益を得るために裁定取引を行うことができますが、これは流動性供給者に損失をもたらします。オークションメカニズムは、その価値の一部を流動性供給者に返し、AMMの価格をより迅速に外部市場とバランスを取ることを意図しています。

一度に複数のアカウントがオークションスロットを保持することはできませんが、入札者は割引を受けるために最大4つのアカウントを指定することができます。スロットが現在使用中の場合、現在のスロット保持者を追い出すために入札する必要があります。追い出された場合、残り時間に応じて一部の入札額が返却されます。アクティブなオークションスロットを保持している間は、そのAMMに対して取引を行う際に、通常の取引手数料の1/10(十分の一)の割引が適用されます。

オークションスロットの最小入札額は、空または期限切れの場合、現在のLPトークンの総数に取引手数料を掛けたものを25で割ったものです。(擬似コードで表すと、MinBid = LPTokens * TradingFee / 25です。) オークションスロットが占有されている場合、現在のスロット保持者が支払った金額の105%までの最小入札額を支払う必要があります。

台帳上の表示

台帳の状態データでは、AMMは複数のレジャーエントリのタイプで構成されています。

  • 自動マーケットメーカー自体を記述したAMMエントリ

  • AMMのLPトークンを発行し、AMMのXRP(保有している場合)を保有する特別なAccountRootエントリ

    このAccountRootのアドレスは、AMMの作成時にランダムに選ばれ、AMMを削除して再作成した場合にも異なるアドレスが選ばれます。これは、AMMのアカウントにユーザが事前にXRPで資金を供給することを防止するためです。

  • AMMのプールにあるトークンのAMM専用アカウントへのトラストライン

これらのレジャーエントリはどのアカウントにも所有されていないため、準備金要件は適用されません。ただし、スパムを防ぐため、AMMを作成するための取引には特別なトランザクションコストがあり、通常よりも多くのXRPを消費する必要があります。

削除

AMMは、AMMWithdrawトランザクションがそのプールから全てのアセットを引き出すと削除されます。これは、AMMのすべての発行済みLPトークンを償還することによってのみ発生します。AMMの削除には、以下のようなAMMに関連するすべてのレジャーエントリの削除も含まれます。

  • AMM
  • AccountRoot
  • AMMのLPトークンのトラストライン。これらのトラストラインは残高が0ですが、限度額など他の詳細がデフォルト以外の値に設定されている可能性があります。
  • AMMのプールに存在するトークンのトラストライン。

AMMアカウントが削除されるときに、512を超えるトラストラインが設定されていた場合、出金は成功し、可能な限り多くのトラストラインを削除します。

AMMのプールに資産がない間は、誰でもAMMDeleteトランザクションを送信してAMMを削除することができます。別の方法として、誰でも特別な入金を行うことで、AMMにあたかも新規であるかのように入金することができます。資産プールが空のAMMに対しては、他の操作は無効です。

空のAMMを削除することによる払い戻しやインセンティブはありません。