# 代替可能トークン 非公式な"借用書"から、法定通貨を担保とするステーブルコイン、純粋なデジタルファンジブルトークンやセミファンジブルトークンなど、誰でもXRP Ledger上で代替可能なトークンを発行することができます。 代替可能トークンは交換可能で、互いに区別がつきません。トークンは交換可能で、同等の価値を持つ他のトークンと置き換えることができます。交換可能なトークンを作成するには、2つのアカウント間で会計関係の一種である「トラストライン」を設定し、それらのアカウント間で支払いを送信します。ほとんどのユースケースでは、最初に設定する必要がある設定もあります。 ## トラストライン トラストラインとは、XRP Ledgerにおける[トークン](/ja/docs/concepts/tokens)を保持するための仕組みを指します。トラストラインは、XRP Ledgerのルールである「不要なトークンを他者に保有させることはできない」という原則を強制するものです。この制限は、XRP Ledgerのユースケースである[コミュニティクレジット](/ja/docs/concepts/tokens#%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%82%AF%E3%83%AC%E3%82%B8%E3%83%83%E3%83%88)などを実現するために不可欠なものです。 トラストラインは[RippleState](/ja/docs/references/protocol/ledger-data/ledger-entry-types/ripplestate)オブジェクトとして定義されます。それぞれのトラストラインは、以下のような *双方向* の関係から成り立っています。 - トラストラインが接続する **2つの[アカウント](/ja/docs/concepts/accounts)** の識別子 - 一方のアカウントから見てプラス、他方のアカウントから見てマイナスとなる、単一の共有された**残高** - 残高がマイナスのアカウントは、一般的にトークンの「発行者」とみなされます。ただし、[API](/ja/docs/references/http-websocket-apis)では、`issuer`という名称はどちらを指すこともあるようです。 - 様々な **設定** とメタデータ。2つのアカウントの *それぞれ* は、トラストライン上の設定を制御することができます。 - 最も重要なことは、各サイドがトラストラインに **限度額** を設定できることです。これはデフォルトでは0です。各アカウントの残高は(トラストラインから見て)そのアカウントの上限を超えることはできません。ただし、[アカウント自身の操作](#%E9%99%90%E5%BA%A6%E9%A1%8D%E4%BB%A5%E4%B8%8A%E3%82%92%E4%BF%9D%E6%9C%89%E3%81%99%E3%82%8B)を除きます。 各トラストラインは、特定の[通貨コード](/ja/docs/references/protocol/data-types/currency-formats#%E9%80%9A%E8%B2%A8%E3%82%B3%E3%83%BC%E3%83%89)に固有です。2つのアカウント間に作成できる各種通貨コードのトラストラインの数に制限はありませんが、どの通貨コードについても、作成できるトラストラインは1方向に1つだけです。 トラストラインの残高は、それをどちらの側から見るかによって負または正になります。負の残高を持つ側は「発行者」と呼ばれ、トークンの振る舞いに関するいくつかのプロパティを制御できます。トークンを発行者ではない別のアカウントに送ると、そのトークンは発行者や、おそらく同じ通貨コードを使用している他のアカウントを通じて「ripple(波及)」します。これは便利な場合もありますが、予期しない望ましくない動作を引き起こす場合もあります。トラストラインに[No Rippleフラグ](/ja/docs/concepts/tokens/fungible-tokens/rippling)を使用することで、トラストラインが波及しないようにすることができます。 ## 作成 アカウントはいずれも、ゼロでない上限と独自の設定を持つ[TrustSetトランザクション](/ja/docs/references/protocol/transactions/types/trustset)を送信することによって、他のアカウントに対して一方的にトークンを「トラスト」することができます。これによって、残高ゼロのトラストラインが作成され、相手側の設定がデフォルトとして設定されます。 トラストラインは、[分散型取引所](/ja/docs/concepts/tokens/decentralized-exchange)でトークンを購入するときなど、いくつかのトランザクションによって暗黙的に作成されることがあります。この場合、トラストラインはデフォルト設定をそのまま使用します。 ## 限度額以上を保有する トラストラインの限度額よりも *大きい* 残高を保有できるケースは次の3つがあります。 1. [トレード](/ja/docs/concepts/tokens/decentralized-exchange)によって、限度額以上のトークンを取得した場合 2. プラスの残高があるトラストラインの限度額を減らした場合 3. [チェックの現金化](/ja/docs/concepts/payment-types/checks)によって、トークンを限度額以上取得する場合 ## トラストラインの設定 アカウントごとに、共通残高のほかに、トラストラインの設定項目があり、その構成は以下のとおりです。 - **Limit**: 0から[トークンの上限量](/ja/docs/references/protocol/data-types/currency-formats)の範囲内の数字です。支払いや他のアカウントの操作によって、(このアカウントから見た)トラストラインの残高が限度額を超えることはできません。デフォルトは`0`です。 - **Authorized**: [Authorized Trust Lines](/ja/docs/concepts/tokens/fungible-tokens/authorized-trust-lines)と併用し、このアカウントが発行するトークンを相手側に保持させることを許可するための値(true/false)です。デフォルトは`false`です。一度`true`に設定すると、元に戻すことはできません。 - **No Ripple**: トークンがこのトラストラインを通過して[ripple](/ja/docs/concepts/tokens/fungible-tokens/rippling)するかどうかを設定するための値(true/false)です。デフォルトはアカウントの"Default Ripple"設定に依存します。新しいアカウントでは"Default Ripple"はoffで、つまり`true`がNo Rippleのデフォルト値となります。通常、発行者はrippleを許可し、非発行者はコミュニティクレジットのためにトラストラインを使用していない限り、rippleを無効にするべきです。 - **Freeze**: このトラストラインに[個別のフリーズ](/ja/docs/concepts/tokens/fungible-tokens/freezes#individual-freeze)が適用されているかどうかを示す値(true/false)です。デフォルトは`false` です。 - **DeepFreeze**: このトラストラインに[ディープフリーズ](/ja/docs/concepts/tokens/fungible-tokens/deep-freeze)が適用されているかどうかを示す値(true/false)です。デフォルトは`false` です。 - **Quality In** および **Quality Out**: この設定により、このトラストライン上の他のアカウントで発行されたトークンを額面より少なく(または多く)評価することができます。たとえば、ステーブルコインの発行者が、オフレッジャーにある同等の資産に対してトークンの引き出しに3%の手数料を課している場合、この設定を使用して、それらのトークンを額面の97%で評価することが可能です。デフォルトは`0`で、額面価格を表しています。 ## 準備金と削除 トラストラインは台帳のスペースを使用するため、[トラストラインはあなたのアカウントが準備金として保持しなければならないXRPを増加させます](/ja/docs/concepts/accounts/reserves)。 トラストラインのどちらか、または両方のアカウントにトラストラインの準備金が負担されることがあります。トラストラインの設定がデフォルトでない場合、またはプラス残高を保持している場合、所有者準備金の1つとしてカウントされます。 一般に、トラストラインを作成したアカウントが準備金を負担し、発行者は負担しないという意味です。 トラストラインは、両者の設定がデフォルトの状態で、残高が0であれば自動的に削除されます。つまり、トラストラインを削除するには次の方法があります。 1. 設定した内容をデフォルトに戻すために、[TrustSetトランザクション](/ja/docs/references/protocol/transactions/types/trustset)を送信する。 2. トラストラインにあるプラスの残高をすべて処分します。これは[支払い](/ja/docs/concepts/payment-types/cross-currency-payments)によって通貨を送るか、[分散型取引所](/ja/docs/concepts/tokens/decentralized-exchange)で通貨を売却することで可能です。 残高がマイナス(あなたが発行者)の場合や、相手側の設定が初期状態でない場合、トラストラインを完全に削除させることはできませんが、同様の手順で所有者準備金にカウントされないようにすることが可能です。 **Authorized** の設定は、一度オンにするとオフにできないため、トラストラインの初期状態にはカウントされません。 ## 無料のトラストライン [[Source]](https://github.com/XRPLF/rippled/blob/72377e7bf25c4eaee5174186d2db3c6b4210946f/src/ripple/app/tx/impl/SetTrust.cpp#L148-L168) トラストラインはXRP Ledgerの強力な機能であるため、アカウントの最初の2つのトラストラインを「無料」にする特別な機能が用意されています。 アカウントが新しいトラストラインを作成する際、台帳の中で新しいトラストラインを含む最大2つのオブジェクトを所有している場合、アカウントの所有者準備金は通常の量ではなく、0として扱われます。これにより、アカウントが台帳内のオブジェクトを所有するために必要な準備金の増加分を満たすだけのXRPを保有していない場合でも、取引を成功させることができます。 アカウントが台帳に3つ以上のオブジェクトを所有している場合、所有者準備金が全額適用されます。 ## 関連項目 - **コンセプト:** - [分散型取引所](/ja/docs/concepts/tokens/decentralized-exchange) - [リップリング](/ja/docs/concepts/tokens/fungible-tokens/rippling) - **リファレンス:** - [account_linesメソッド](/ja/docs/references/http-websocket-apis/public-api-methods/account-methods/account_lines) - 指定されたアカウントに関連付けられたトラストラインを確認 - [gateway_balancesメソッド](/ja/docs/references/http-websocket-apis/public-api-methods/account-methods/gateway_balances) - 発行者の発行残高を確認 - [RippleStateオブジェクト](/ja/docs/references/protocol/ledger-data/ledger-entry-types/ripplestate) - 台帳の状態データのうち、トラストラインのデータ形式 - [TrustSetトランザクション](/ja/docs/references/protocol/transactions/types/trustset) - トラストラインを作成・変更するトランザクション