♻️

XRPレジャーでトークンをスワップする

2023/05/04に公開

XRPレジャー とは

XRPレジャーはBitcoinやEthereumなどと同じ分散型のパブリックブロックチェーンです。PoWやPoSとは異なる独自のコンセンサスアルゴリズムが用いられています。
トークン機能やDEX機能をプロトコルネイティブに搭載しており、強力な決済機能があります。決済機能だけでなくNFTやAMM(開発中)、Hooks(スマコン/開発中)など様々な機能を搭載しています。

XRPレジャーはDEXをネイティブ機能として搭載しているため、第三者のスマートコントラクトを使用することなく、XRPやトークンの交換をネイティブに行うことができます。

トークンのスワップ

XRPレジャーではXRPL自身がネイティブに持つDEX機能を利用して自信が持つトークンを別のトークンにスワップすることができます。
スワップ時には複数の取引ペアの流動性を統合して最適なレートでスワップすることができます。

トークンのスワップには2つの方法があり、それぞれに特徴があります。

OfferCreate

1つ目はOfferCreateトランザクションを用いたスワップです。こちらはDEXの板に対する成行注文のイメージに似たものです。

https://xrpl.org/ja/offercreate.html

{
  "TransactionType": "OfferCreate",
  "Account" : "トランザクションを送信するアカウント",
  "TakerPays": "変換元のトークン",
  "TakerGets": "変換先のトークン",
  "Flags": 131072 // tfImmediateOrCancel
}

OfferCrateトランザクションでは例としてUSDをEURへ変換する場合、以下の取引ペアの流動性が暗黙的に利用され、最良のレートで取引を実行します。

  • USD/EUR
  • USD/XRP
  • EUR/XRP

変換先のトークンのトラストラインを事前に設定しておく必要がなく、また、Pathの指定なしにトークンの変換が行えるため、手軽に行えるトークンスワップと言えるでしょう。

Payment

2つ目はPaymentトランザクションを用いたスワップです。

https://xrpl.org/ja/payment.html

{
  "TransactionType": "Payment",
  "Account": "トランザクションを送信するアカウント",
  "Destination": "トランザクションを送信するアカウント",
  "SendMax": "変換元のトークン",
  "Amount": "変換先のトークン",
  "Paths": [
    [
      {
        "currency": "経路となるトークン",
        "issuer": "経路となるトークンの発行者",
      },
      {
        "account": "経路となるのトークンの発行者",
      }
      ...
    ]
  ]
}

Account = Destinationの場合に自身の保有するトークンを別のトークンへ変換することになります。

Account ≠ Destinationの場合は自身の保有するトークンを別のトークンとして宛先アカウントへ送信することになります。

Account = Destinationの場合、Pathsフィールドの指定が必須となります。また、Paymentトランザクションでのトークンスワップでは、執筆時点では変換元のトークンのトラストラインを事前に設定しておく必要があります。

https://github.com/XRPLF/rippled/issues/4415

パスの指定により、利用する取引板などを柔軟に指定することができます。

パスの取得に関しては以下の記事を参照してください。

https://zenn.dev/tequ/articles/xrpl-path-find#pathfindingについて

OfferCreateとPaymentの違い

OfferCreateとPaymentの違いは以下の通りです。

事前のトラストラインの設定

OfferCreateトランザクションでは事前に変換先トークンのトラストラインを設定する必要がありませんが、Paymentトランザクションでは事前に変換先トークンのトラストラインを設定する必要があります。

利用するDEXの取引板

OfferCreateトランザクションでは、最大3つの取引板の流動性が暗黙的に利用されますが、Paymentトランザクションでは明示的に利用する取引板などのPathを指定することができます。

指定可能なPathは最大6つです。
https://github.com/XRPLF/rippled/blob/67238b9fa66c5f99fe2a969b2a8851a4bca2c74f/src/ripple/app/tx/impl/Payment.h#L33-L36

オートブリッジング

OfferCreateトランザクションにおいて暗黙的にパスが設定されることをオートブリッジング(Auto-Bridging)と呼びます。

オートブリッジングではXRPレジャーのネイティブ資産であるXRPがブリッジ通貨として利用されます。

https://xrpl.org/ja/autobridging.html

パスファインディング

Paymentトランザクションにおいて使用するパスを検索することをパスファインディング(Path Finding)と呼びます。

例えば、USDをEURへ変換する場合に、以下のように自由なパスを複数指定することができ、その中から。最良なレートでの取引を実行します。

  • USD -> EUR
  • USD -> XRP -> EUR
  • USD -> JPY -> XRP -> EUR
  • USD -> MXN -> JPY -> EUR

https://xrpl.org/ja/paths.html#pathfinding

まとめ

XRPレジャーではネイティブなDEXを利用したトークンスワップが利用可能です。特徴が異なる2つのトランザクションを用いることで、様々な用途に応じたトークンスワップを実現することができます。

興味を持たれた方はXRP Ledger開発者のDiscordチャンネルへ是非お越しください!
日本語チャンネルもありますので、英語ができなくても大丈夫です!
https://xrpldevs.org

Discussion