最終更新:
編集

AMMBid

[ソース]

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

自動マーケットメーカーのオークションスロットに入札することができます。落札されると、競り落とされるか24時間が経過するまで、割引料金でAMMと取引することができます。24時間が経過する前に競り落とされた場合、残り時間に応じて落札価格の一部が払い戻されます。AMMの取引手数料が0の場合、入札は可能ですが、入札スロットは取引手数料が変更されるまでメリットをもたらしません。

AMMのLPトークンを使って落札すると、落札に利用したLPトークンはAMMに返され、LPトークンの残高が減ります。

AMMBid JSONの例

{
    "Account" : "rJVUeRqDFNs2xqA7ncVE6ZoAhPUoaJJSQm",
    "Asset" : {
        "currency" : "XRP"
    },
    "Asset2" : {
        "currency" : "TST",
        "issuer" : "rP9jPyP5kyvFRb6ZiRghAGw5u8SGAmU4bd"
    },
    "AuthAccounts" : [
        {
          "AuthAccount" : {
              "Account" : "rMKXGCbJ5d8LbrqthdG46q3f969MVK2Qeg"
          }
        },
        {
          "AuthAccount" : {
              "Account" : "rBepJuTLFJt3WmtLXYAxSjtBWAeQxVbncv"
          }
        }
    ],
    "BidMax" : {
        "currency" : "039C99CD9AB0B70B32ECDA51EAAE471625608EA2",
        "issuer" : "rE54zDvgnghAoPopCgvtiqWNq3dU5y836S",
        "value" : "100"
    },
    "Fee" : "10",
    "Flags" : 2147483648,
    "Sequence" : 9,
    "TransactionType" : "AMMBid"
}

AMMBid フィールド

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

| フィールド | JSONの型 | 内部の型 | 必須? | 説明 | |:---------------|:-----------|:- ----------|:----- |:------------| | Asset | オブジェクト | STIssue | はい | AMMのプールにある資産の一つを定義します。JSONでは、currencyissuerフィールドを持つオブジェクトになります(XRPの場合はissuerを省略します)。 | | Asset2 | オブジェクト | STIssue | はい | AMMのプールにあるもう一つのアセットの定義です。JSONでは、currencyissuerフィールドを持つオブジェクトになります(XRPの場合はissuerを省略します)。 | | BidMin | 通貨額 | Amount | いいえ | スロットに支払う最小の金額。この値を高く設定すると、他の人から競り落とされにくくなります。省略された場合は、落札に必要な最低額を支払います。 | | BidMax | 通貨額 | Amount | いいえ | スロットに支払う最大の金額。落札するためのコストがこの金額より高い場合、取引は失敗します。省略された場合は、落札に必要な金額を支払います。 | | AuthAccounts | 配列 | STArray | いいえ | 割引料金で取引を許可する最大4つの追加のアカウントのリスト。これには、トランザクション送信者のアドレスは含めることはできません。これらのオブジェクトはそれぞれAuth Accountオブジェクトである必要があります。. |

Auth Accountオブジェクト

AuthAccounts 配列の各メンバーは、以下のフィールドを持つオブジェクトである必要があります。

フィールドJSONの型内部の型必須?説明
Account文字列AccountIDはい認可するアカウントのアドレス。

配列に現れる他の「内部オブジェクト」と同様に、これらのオブジェクトのJSON表現は、オブジェクトタイプAuthAccountのみをキーとするオブジェクトにラップされています。

オークションスロットの価格

落札された場合、トランザクションは自動的に前のスロット所有者を競り落とし、送信者のLPトークンから落札価格が引き落とされます。落札価格は、72分ずつ20回に区切られた時間経過とともに減少します。もし送信者が落札するのに十分なLPトークンを持っていなかったり、入札価格がトランザクションのBidMax値より高い場合、トランザクションはtecAMM_FAILED_BIDという結果で失敗します。

  • オークションスロットが現在空であったり、期限切れ、または最後のインターバルである場合、最低入札価格は次のように定義されます。

    M = L * F / 25
    
    • M: 最低入札価格。
    • L: AMMによって現在発行されているLPトークンの総数。
    • F: 取引手数料。小数で表されます。
  • それ以外の場合、現在の保有者に落札価格は、以下の式で計算されます。

    P = B × 1.05 × (1 - t^60) + M
    
    • P: 落札価格。単位はLPトークン。
    • B: 現在の入札価格。単位はLPトークン。
    • t: 現在の24時間枠で経過した時間の割合。0.05の倍数に切り捨てられる。
    • M: Mは上記で定義された最低入札価格

    落札コストには、2つの特殊なケースがあります。誰かが落札してから最初の時間枠では、その落札価格は、最低入札価格+既存の入札価格の5%アップとなります。

    P = B × 1.05 + M
    

    スロットの最後の時間枠では、落札コストは最低入札額のみです。

    P = M
    

注記
レジャーを作成する際に、ネットワーク上のすべてのサーバが同じ結果になるように、時間の計測は前回のレジャーの正規の閉鎖時刻に基づいており、これはおおよその目安の時間です。

払い戻し

有効なオークションスロットを落札した場合、AMMは以下の計算式で前ホルダーに価格の一部を払い戻します。

R = B × (1 - t)
  • R: は返金する金額。単位はLPトークン。
  • B: 払い戻しの対象となる前回の入札の価格。単位はLPトークン。
  • t: 現在の24時間枠で経過した時間の割合。0.05の倍数に切り捨てられる。

特殊なケースとして、オークションスロットの最終(20番目)区間では、払い戻し額は0となる。

注記
XRP Ledgerの時刻と同様に、トランザクション処理では 前回の レジャーの正規の閉鎖時刻を使用するため、実時間と最大で約10秒の差が生じる場合があります。

エラーケース

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

エラーコード説明
tecAMM_EMPTYAMMのプールに資産がありません。この状態では、AMMを削除するか、新しい入金を行い資金を供給することしかできません。
tecAMM_FAILEDこのトランザクションでは、送信者が必要な入札額を支払うために十分なLPトークンを保有していないか、落札価格がトランザクションで指定されたBidMax値より高いため、落札できませんでした。
tecAMM_INVALID_TOKENSこのトランザクションの送信者は、スロット価格に見合うだけのLPトークンを保有していません。
temBAD_AMM_TOKENS指定されたBidMinまたはBidMaxは、このAMMの正しいLPトークンではありません。
temDISABLEDこのネットワークでは、AMM機能が有効ではありません。
temMALFORMEDトランザクションが無効なオプションを指定しました。例えば、AuthAccountsのリストが長すぎるなど。
terNO_ACCOUNTこのリクエストで指定されたアカウントのいずれかが存在しません。
terNO_AMMこのトランザクションの資産ペアの自動マーケットメーカーのインスタンスが存在しません。