# 分散型取引所 XRP Ledgerには、世界でおそらく最も古い *分散型取引所* (「DEX」と略されることもあります)があり、2012年のXRP Ledgerのローンチ以来、現在まで稼働し続けています。この取引所では、ユーザが[トークン](/ja/docs/concepts/tokens)をXRPや他のトークンと売買することができ、ネットワーク自体に課される[手数料](/ja/docs/concepts/transactions/fees)はごく僅かです。(いかなる当事者にも支払われることはありません) 誰でも好きな通貨コードやティッカーシンボルで[トークンを発行](/ja/docs/tutorials/how-tos/use-tokens/issue-a-fungible-token)して、分散型取引所で販売することができます。トークンを購入する前に必ずデューデリジェンスを行い、発行者に注意を払うようにしてください。さもなければ、価値あるものを手放し、それと引き換えに価値のないトークンを受け取ることになるかもしれません。 ## 構造 XRP Ledgerの分散型取引所は、無制限の通貨ペアで構成されており、ユーザが取引を行う際にオンデマンドで追跡されます。通貨ペアは、XRPとトークン、または2つの異なるトークンから構成されます。トークンは常に、発行者と通貨コードの組み合わせによって識別されます。同じ通貨コードで異なる発行者のトークン同士、または同じ発行者で異なる通貨コードのトークン同士の取引も可能です。 XRP Ledgerのすべての変更がそうであるように、取引を行うには[トランザクション](/ja/docs/concepts/transactions)を送信する必要があります。XRP Ledgerにおける取引は、[オファー](/ja/docs/concepts/tokens/decentralized-exchange/offers)と呼ばれています。オファーは事実上、ある通貨(XRPまたはトークン)を特定の金額で他の通貨と売買するための[*指値注文*](https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%9F%E3%83%83%E3%83%88%E3%82%AA%E3%83%BC%E3%83%80%E3%83%BC)です。ネットワークがオファーを実行する際、同じ通貨ペアでマッチングするオファーがあれば、最も良い取引レートから順に約定されます。 オファーは、全額または一部が約定されることがあります。すぐに全額が約定されなかった場合は、残りの金額は台帳上のOfferオブジェクトとなります。その後、他のオファーや[クロスカレンシー支払い](/ja/docs/concepts/payment-types/cross-currency-payments)がオファーにマッチし、約定する可能性があります。このため、Offerは最初に注文したときは指定した取引レートよりも高いレートで約定し、後で注文したときは指定した取引レートと全く同じレートで約定することがあります。(端数処理のためのわずかな差は除きます) オファーは、発注後、手動または自動でキャンセルすることができます。この機能およびその他の機能については、[オファー](/ja/docs/concepts/tokens/decentralized-exchange/offers)をご覧ください。 2つのトークンを取引する際、トークンとトークンを直接取引するよりも、トークンとXRP、XRPとトークンを取引した方が安くなる場合、[オートブリッジ](/ja/docs/concepts/tokens/decentralized-exchange/autobridging)によって自動的に取引レートと流動性を向上させることができます。 ### 取引の例 [](/assets/decentralized-exchange-example-trade.ja.99d49f1d89359fc7fa7a35ee06f27381ce631d3c1e6ab1be57fb634664229e06.ac57e6ef.svg) 上の図は、分散型取引所での取引例です。この例では、Tranというトレーダーが、WayGateという架空の企業が発行するFOOという通貨コードのトークン100個の購入オファーを出しています。(簡潔にするため、「FOO.WayGate」はこれらのトークンを指します。)Tranは、合計で最大1000XRPまで支払う意思があることを明記しています。Tranのトランザクションが処理されると、次のようなことが起こります。 1. ネットワークは、購入する通貨額を支払う通貨額で割ることによって、TranのOfferの取引レートを計算します。 2. このオーダーブックには、金額や取引レートが異なる他のトレーダーからのオファーがすでに複数存在します。このケースでは、FOO.WayGateの売りとXRPの買いのオーダーブックを意味します。 3. Tranのオファーが全額約定するか、Tranのオファーは、Tranのオファーで指定されたレートと同等以上の取引レートのオファーがなくなるまで、最良の取引レートから順に、オファーを約定していきます。この例では、22 FOO.WayGateのみが指定されたレート以上で取引可能です。約定したオファーはオーダーブックから削除されます。 4. Tranは、この取引で調達できたFOO.WayGateの量を、それまで売り注文を出していた様々なトレーダーから受け取ります。これらのトークンはWayGateのFOOに対するTranの[トラストライン](/ja/docs/concepts/tokens/fungible-tokens)に送られます。(Tranがまだトラストラインを持っていなかった場合、自動的に作成されます。) 5. その見返りとして、それらのトレーダーは、提示された取引レートに従って、TranからXRPを受け取ります。 6. ネットワークはTranのオファーの残りを計算します。元々のオファーが100 FOO.WayGateの購入で、これまでTranは22を受け取っているので、残りは78 FOO.WayGateとなります。元の取引レートを使用すると、Tranのオファーの残りは780 XRPで78 FOO.WayGateを購入することになります。 7. この「残り」は、Tranの取引と同じ向きの取引、つまりXRPの売りとFOO.WayGateの買いのオーダーブックに載せられます。 同じ台帳でTranの直後に実行されたものも含め、その後の取引は更新されたオーダーブックを使って行われるため、Tranのオファーが全額約定するかTranがキャンセルするまで、その一部または全額を約定することができます。 元帳がクローズされ、検証される際の取引の実行順序は、取引が送信された順序と同じではありません。複数のトランザクションが同じ台帳の同じオーダーブックに影響を与える場合、それらのトランザクションの最終結果は、トランザクション送信時に計算された暫定的な結果とは大きく異なる可能性があります。取引結果が確定する場合、確定しない場合の詳細については、[結果のファイナリティー](/ja/docs/concepts/transactions/finality-of-results)をご覧ください。 ## 制限事項 分散型取引所は、以下のような制限を設けて設計されています。 取引は新しい台帳がクローズするたびに(約3~5秒ごと)実行されるだけなので、XRP Ledgerは[高頻度取引](https://ja.wikipedia.org/wiki/%E9%AB%98%E9%A0%BB%E5%BA%A6%E5%8F%96%E5%BC%95)には適していません。台帳内で取引が実行される順番は、[フロントランニング](https://en.wikipedia.org/wiki/Front_running)を阻止するため、予測できないように設計されています。 XRP Ledgerは、成行注文、指値注文、レバレッジ取引などの概念をネイティブに表現するものではありません。カスタムトークンやOfferのプロパティをクリエイティブに利用することで、いくつかは実現できるかもしれません。 分散型システムであるXRP Ledgerは、取引に関わる[アカウント](/ja/docs/concepts/accounts)の背後にいる実際の人々や組織に関する情報を一切持っていません。また、ユーザや発行者は、様々な種類の裏付け資産を表すトークンの取引を規制するために、関連する法律に従う必要があります。[フリーズ](/ja/docs/concepts/tokens/fungible-tokens/freezes)や[認可トラストライン](/ja/docs/concepts/tokens/fungible-tokens/authorized-trust-lines)などの機能は、発行者が関連法規を順守できるよう意図しています。 ## 関連項目 - **コンセプト:** - [Offers](/ja/docs/concepts/tokens/decentralized-exchange/offers): XRP Ledgerでのトレードの仕組みについて - [トークン](/ja/docs/concepts/tokens): XRP Ledgerで様々な種類の価値を表現する方法の概要について - **リファレンス:** - [account_offersメソッド](/ja/docs/references/http-websocket-apis/public-api-methods/account-methods/account_offers): アカウントから注文されたオファーを検索 - [book_offersメソッド](/ja/docs/references/http-websocket-apis/public-api-methods/path-and-order-book-methods/book_offers): 指定された通貨ペアの売買のオファーを検索 - [OfferCreateトランザクション](/ja/docs/references/protocol/transactions/types/offercreate): 新規オファーを発注や既存のオファーの置き換え - [OfferCancelトランザクション](/ja/docs/references/protocol/transactions/types/offercancel): 既存のオファーをキャンセル - [Offerオブジェクト](/ja/docs/references/protocol/ledger-data/ledger-entry-types/offer) 台帳のオファーのデータ構造 - [DirectoryNodeオブジェクト](/ja/docs/references/protocol/ledger-data/ledger-entry-types/directorynode): 特定の通貨ペアと取引レートのすべてのオファーを追跡するデータ構造