最終更新:
編集

AMMCreate

[ソース]

(AMM amendmentにより追加されました。)

資産(代替可能トークンまたはXRP)のペアを取引するための新しい自動マーケットメーカー(AMM)インスタンスを作成します。

AMMを表すAMMエントリ特殊なAccountRootエントリを作成します。また、両資産の開始残高の所有権を送信者から、作成されたAccountRootに移し、初期残高の流動性プロバイダトークン(LPトークン)をAMMアカウントから送信者に発行します。

注意
AMMを作成する際には、各資産を(ほぼ)同額ずつ投入する必要があります。そうしないと、他のユーザがこのAMMを使った取引で利益を得ることができ、あなたがその損失を被ることとなります(アービトラージの実行。流動性プロバイダが負う通貨リスクは、資産ペアのボラティリティ(不均衡の可能性)が高ければ高いほど、大きくなります。取引手数料が高いほど、このリスクを相殺することになりますので、資産ペアのボラティリティに応じて取引手数料を設定するとよいでしょう。

AMMCreate JSONの例

{
    "Account" : "rJVUeRqDFNs2xqA7ncVE6ZoAhPUoaJJSQm",
    "Amount" : {
        "currency" : "TST",
        "issuer" : "rP9jPyP5kyvFRb6ZiRghAGw5u8SGAmU4bd",
        "value" : "25"
    },
    "Amount2" : "250000000",
    "Fee" : "10",
    "Flags" : 2147483648,
    "Sequence" : 6,
    "TradingFee" : 500,
    "TransactionType" : "AMMCreate"
}

AMMCreate フィールド

共通フィールドに加えて、AMMCreateトランザクションは以下のフィールドを使用します。

フィールドJSONの型内部の型必須?説明
Amount通貨額AmountはいこのAMMの最初の資金となる2つの資産のうち、1つ目の資産です。これは正数である必要があります。
Amount2通貨額AmountはいこのAMMの最初の資金となる2つの資産のうち、2つ目の資産です。これは正数である必要があります。
TradingFee数値UInt16はいこのAMMインスタンスに対する取引に課される手数料を1/100,000単位で指定します(値1は0.001%に相当)。最大値は1000で、1%の手数料を意味します。最小値は 0です。

AmountAmount2の一方または両方はトークンであり、最大でどちらか一方をXRPにすることが可能です。通貨コードと発行者が同じものは使用できません。AMMのLPトークンは、別のAMMの資産の1つとして使用することができます。トークンの発行者はDefault Rippleを有効にしていなければなりません。AMMのLPトークンは、別のAMMの資産の一つとして使用することはできません。

特殊なトランザクションコスト

各AMMインスタンスはAccountRootレジャーエントリ、AMMレジャーエントリ、プール内の各トークンのトラストラインを含むため、AMMCreateトランザクションは台帳スパムを抑止するために通常よりもはるかに高いトランザクションコストを必要とします。標準的な最低0.00001XRPの代わりに、AMMCreateは少なくとも所有者準備金の増分(現在は2XRP)を破棄しなければなりません。これはAccountDeleteトランザクションと同じ特別なトランザクションコストです。

エラーケース

すべてのトランザクションで発生する可能性のあるエラーに加えて、AMMCreateトランザクションでは、次のトランザクション結果コードが発生する可能性があります。

エラーコード説明
tecAMM_INVALID_TOKENSAmountまたはAmount2が、このAMMのLPトークンと同じ通貨コードを使用しています。(これが起こることは稀です。)
tecDUPLICATEこの通貨ペアを扱っているAMMが既に存在しています。
tecFROZEN資産(AmountまたはAmount2)の少なくとも1つが現在フリーズされています。
tecINSUF_RESERVE_LINE送信者は、このトランザクションを処理するための準備金要件を満たしていません。おそらく、LPトークンを保持するための新しいトラストラインが必要で、新しいトラストラインの所有者準備金を満たす十分なXRPを持っていないためです。
tecNO_AUTH送信者は資産(AmountまたはAmount2)のいずれかを保有する権限がありません。
tecNO_LINE送信者は資産(AmountまたはAmount2)のうちいずれか1つに対するトラストラインを保有していません。
tecNO_PERMISSION少なくとも1つの入金資産はAMMで使用できません。
tecUNFUNDED_AMM送信者はAmountAmount2で指定された金額をAMMに入金するための十分な資金を保有していません。
terNO_RIPPLE少なくとも1つの資産の発行者がDefault Rippleフラグを有効にしていません。
temAMM_BAD_TOKENSAmountAmount2値が正しくありません。例えば、両方とも同じトークンを参照している場合です。
temBAD_FEETradingFeeの値が不正です。ゼロまたは正の整数でなければならず、1000を超えることはできません。
temDISABLEDこのネットワークでは、AMM機能が無効になっています。