🔎

DEX取引のパスの検索

2023/03/16に公開

XRP Ledger とは

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

Pathとは

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

XRP Ledgerにおいて、発行トークン(IOU)を送信する際には、送金人から受取人までのステップをPath(パス)として定義します。パスはPaymentトランザクションに含めることができ、複数のパスを指定することもできます。パスを指定しない場合は、デフォルトパスが使用されます。

受取人が10USDトークンを受け取りたいが、支払人がEURトークンしか保有していない場合、支払人はできるだけ少ないEURトークンで受取人に10USDを送金したいはずです。適切なパスを指定することで、少ないコストで受取人に10USDを送金することができます。

Pathの例

XRP Ledgerでのパスは以下のようなデータで表されます。
これは1XRPUSD.rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59Bへ変換しようとした場合のパスであり、パスの取得時点で0.3747785166511954を届けることが可能であることを表しています。
paths_computedが実際の経路を表し、1回の支払いで複数の経路を利用可能であることがわかります。

{
  source_amount: '1000000',
  destination_amount: { currency: 'USD', issuer: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', value: '0.3747785166511954' },
  paths_computed: [
    [
      { currency: 'USD', issuer: 'rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq', type: 48 },
      { account: 'rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq', type: 1 },
      { account: 'rnAjjXdLxYZjmdYMhQq6eB2dKRfGZt4MxU', type: 1 },
    ],
    [
      { currency: 'USD', issuer: 'rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B', type: 48 }],
    [
      { currency: 'USD', issuer: 'rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y', type: 48 },
      { account: 'rKiCet8SdvWxPXnAgYarFUXMh1zCPz432Y', type: 1 },
      { account: 'rfCVjkbDHdsv2W5rQPCLB94CgwJiJLEBCL', type: 1 },
    ],
  ],
}

上記のパスを図として表すと次のようになります。

ビュー

例えば左の列では、XRPの一部をUSD.rhub8VRN...へ変換し、USD.rhub8VRN...USD.rnAjjXdl...のリップリングを経由してUSD.rvYAfWj5...へ変換するパスであることを表します。

PathFindingについて

XRP Ledgerには、送金人から受取人までのパスを検索できるPathFinding機能が存在します。PathFindingは、可能な限り最適なパスを検索するように設計されています。しかし、レジャーのClose毎(3~4秒毎)にパスが変化することもあり、完全に最良のパスを検索することは保証されていません。

利用例

PathFindingの主な利用例として次のようなものが考えられます。

  1. 送金先への最適なパスの選択

    アカウントにXRPしかない場合に店舗でUSD払いが求められたとき、PathFindingでXRPからUSDへの最適なパスを取得することでよりアカウントがUSDを保有せずに、低コストでUSD払いを行うことができます。(パスを指定せずデフォルトパスでも支払いは可能ですが、PathFindingを利用してパスを取得することでより良いレートで支払いを行えます。)

    Xummのv2.4.0では宛先アドレスが受け取るトークンに対して、自身のアカウントがどの通貨を利用するかを選択できるようになりました。

  2. 通貨交換時の最適なパスの選択

    アカウントが保持するXRPを任意のトークンへ変換したい時、PathFindingを利用しパスを利用することでより低いコストでトークンのスワップを行うことができます。

    Xummのアプリ内アプリ(xApp)としてリリースされているXRPSwapではPathFinding機能を利用したSwapを行えます。

https://xumm.app/detect/xapp:lathan.xrpswap

サンプルコード

path_findコマンドを使用することでパスの検索を行うことができます。
Websocketイベントから最新のパスを取得可能です。

https://github.com/develoQ/xrpl-sample/blob/main/samples/pathfinding/index.ts

おわりに

本記事では、XRP LedgerのPathFind機能について説明しました。PathFind機能は、送金先への支払い時に最適なパスの検索に役立ちます。十分な流動性が存在すれば、XRPやUSD(IOU)などの特定のトークンのみを保持しているだけでEUR(IOU)やBTC(IOU)など様々なトークンでの支払いが可能になります。

PathFindに関するコードは以下のリポジトリから参照できます。
https://github.com/develoQ/xrpl-sample/blob/main/samples/pathfinding

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

Discussion