# AMMClawback [[ソース]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/AMMClawback.cpp) 発行したトークンをAMMプールに預け入れた保有者からトークンを回収します。 Clawbackはデフォルトで無効です。Clawbackを使用するには、[AccountSetトランザクション](/ja/docs/references/protocol/transactions/types/accountset)を送信して、**Allow Trust Line Clawback**設定を有効にする必要があります。すでにトークンが発行済みである発行者はClawbackを有効にできません。**Allow Trust Line Clawback**を有効にするには、トラストライン、オファー、エスクロー、ペイメントチャネル、チェック、署名者リストを設定する前に、所有者ディレクトリを完全に空にする必要があります。Clawbackを有効にした後は、元に戻すことはできません。つまり発行者アカウントは、トラストラインの発行済みトークンを回収できる権利を永続的に得ます。 AMMClawback ## JSONの例 ```json { "TransactionType": "AMMClawback", "Account": "rPdYxU9dNkbzC5Y2h4jLbVJ3rMRrk7WVRL", "Holder": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B", "Asset": { "currency" : "FOO", "issuer" : "rPdYxU9dNkbzC5Y2h4jLbVJ3rMRrk7WVRL" }, "Asset2" : { "currency" : "BAR", "issuer" : "rHtptZx1yHf6Yv43s1RWffM3XnEYv3XhRg" }, "Amount": { "currency" : "FOO", "issuer" : "rPdYxU9dNkbzC5Y2h4jLbVJ3rMRrk7WVRL", "value" : "1000" } } ``` ## フィールド [共通フィールド](/ja/docs/references/protocol/transactions/common-fields)に加えて、トランザクションは以下のフィールドを使用します。 | フィールド | JSONの型 | [内部の型](/ja/docs/references/protocol/binary-format) | 必須? | 説明 | | --- | --- | --- | --- | --- | | `Account` | 文字列 - [アドレス](/ja/docs/references/protocol/data-types/basic-data-types#%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9) | AccountID | はい | 回収する資産の発行者。このトランザクションは、発行者のみが送信できます。 | | `Asset` | オブジェクト | Issue | はい | AMMプールから回収したい資産を指定します。資産はXRP、トークン、またはMPT([金額なしの指定](/ja/docs/references/protocol/data-types/currency-formats#%E9%87%91%E9%A1%8D%E3%81%AA%E3%81%97%E3%81%A7%E3%81%AE%E9%80%9A%E8%B2%A8%E3%81%AE%E6%8C%87%E5%AE%9A)を参照)です。`issuer`フィールドは`Account`と一致していなければなりません。 | | `Asset2` | オブジェクト | Issue | はい | AMMのプール内のもう一方の資産を指定します。資産はXRP、トークン、またはMPT([金額なしの指定](/ja/docs/references/protocol/data-types/currency-formats#%E9%87%91%E9%A1%8D%E3%81%AA%E3%81%97%E3%81%A7%E3%81%AE%E9%80%9A%E8%B2%A8%E3%81%AE%E6%8C%87%E5%AE%9A)を参照)です。 | | `Amount` | [通貨額](/ja/docs/references/protocol/data-types/basic-data-types#%E9%80%9A%E8%B2%A8%E9%A1%8D%E3%81%AE%E6%8C%87%E5%AE%9A) | Amount | いいえ | AMMアカウントから回収する最大額を指定します。`currency`と`issuer`サブフィールドは`Asset`サブフィールドと一致していなければなりません。このフィールドが指定されていない場合、または`value`サブフィールドがAMMの保有者の利用可能なトークンを超えている場合、保有者のすべてのトークンが回収されます。 | | `Holder` | 文字列 - [アドレス](/ja/docs/references/protocol/data-types/basic-data-types#%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9) | AccountID | はい | 回収する資産を保有しているアカウント。 | ## AMMClawbackのフラグ | フラグ名 | Hex値 | 10進数値 | 説明 | | --- | --- | --- | --- | | `tfClawTwoAssets` | `0x00000001` | 1 | `Asset`の指定額を回収し、AMMプールの資産比率に基づいて`Asset2`の対応する額を回収します。両方の資産は`Account`フィールドの発行者によって発行されなければなりません。このフラグが有効でない場合、発行者は`Asset`の指定された額を回収しますが、`Asset2`の対応する比率は`Holder`に返されます。 | ## エラーのケース すべてのトランザクションで発生する可能性のあるエラーに加えて、`AMMClawback`トランザクションは以下の[トランザクション結果コード](/ja/docs/references/protocol/transactions/transaction-results)をもたらすことがあります。 | エラーコード | 説明 | | --- | --- | | `tecNO_PERMISSION` | `lsfAllowTrustlineClawback` フラグが有効になっていない状態で AMM からトークンを回収しようとした場合、または AMM で両方の資産を発行していない状態で `tfClawTwoAssets` フラグが有効になっている場合に発生します。また、`Asset` の発行者が `Account` と一致しない場合にも発生します。 | | `tecAMM_BALANCE` | `Holder`がAMMプールのLPトークンを保有していない場合に発生します。 | | `temDISABLED` | [AMMClawback amendment](/ja/resources/known-amendments#ammclawback)が有効になっていない場合に発生します。 | | `temBAD_AMOUNT` | `AMMClawback`トランザクションの`Amount`フィールドが0以下の場合、または`currency`と`issuer`サブフィールドが`Amount`と`Asset`の間で一致しない場合に発生します。 | | `temINVALID_FLAG` | `tfClawTwoAssets`以外のフラグを有効にしようとした場合に発生します。 | | `temMALFORMED` | `issuer`サブフィールドが`Asset`と`Account`の間で一致しない場合、`Account`が`Holder`と同じ場合、または`Asset`がXRPの場合に発生します。 | | `terNO_AMM` | `Asset`と`Asset2`で指定されたAMMプールが存在しない場合に発生します。 | ## 関連項目 - [AMMエントリ](/ja/docs/references/protocol/ledger-data/ledger-entry-types/amm)