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では、currency
とissuer
フィールドを持つオブジェクトになります(XRPの場合はissuer
を省略します)。 | | Asset2
| オブジェクト | STIssue | はい | AMMのプールにあるもう一つのアセットの定義です。JSONでは、currency
とissuer
フィールドを持つオブジェクトになります(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となる。
エラーケース
すべてのトランザクションで発生する可能性のあるエラーに加えて、AMMBidトランザクションでは、次のトランザクション結果コードが発生する可能性があります。
エラーコード | 説明 |
---|---|
tecAMM_EMPTY | AMMのプールに資産がありません。この状態では、AMMを削除するか、新しい入金を行い資金を供給することしかできません。 |
tecAMM_FAILED | このトランザクションでは、送信者が必要な入札額を支払うために十分なLPトークンを保有していないか、落札価格がトランザクションで指定されたBidMax 値より高いため、落札できませんでした。 |
tecAMM_INVALID_TOKENS | このトランザクションの送信者は、スロット価格に見合うだけのLPトークンを保有していません。 |
temBAD_AMM_TOKENS | 指定されたBidMin またはBidMax は、このAMMの正しいLPトークンではありません。 |
temDISABLED | このネットワークでは、AMM機能が有効ではありません。 |
temMALFORMED | トランザクションが無効なオプションを指定しました。例えば、AuthAccounts のリストが長すぎるなど。 |
terNO_ACCOUNT | このリクエストで指定されたアカウントのいずれかが存在しません。 |
terNO_AMM | このトランザクションの資産ペアの自動マーケットメーカーのインスタンスが存在しません。 |