コンテンツにスキップ

path_findで送金経路を確認する | JavaScriptでのXRPL開発 三段編

このガイドはクロスカレンシー送金について、発行者AのA.USD、発行者BのB.EURを取り扱う形で解説しています。

前章でアリスが発行者AのA.USDを売り、発行者BのB.EURを買うオファー(注文)を出し、流動性を提供しました。

この章では、クロスカレンシー送金を行う前に、送金経路を検索するコマンドであるpath_findを紹介します。

前提

アリスが発行者AのA.USDを売り、発行者BのB.EURを買うオファーを出し、流動性を提供済みです。

ダニエルは、チャーリーに支払いを行う必要がありますが、チャーリーはA.USDで受け取りたいそうです。しかし、現時点では、ダニエルはA.USDを保有していません。

XRPまたは発行者BのB.EURしか保有していないダニエルは、手持ちのB.EURを交換できないかと考えました。 B.EURA.USDに希望額分交換してくれる人がいれば、ダニエルのB.EURA.USDとして送ることができるはずです。

ダニエルはB.EURをチャーリーにA.USDとして、送付することが可能かを検索しようと考えました。

スクリプトの作成

  1. プロジェクトディレクトリにpathFinding.jsという新しいファイルを作成します。

  2. 以下のコードをpathFinding.jsに貼り付けます。

    import { Client, xrpToDrops } from 'xrpl';
    import { wallets } from './wallets.js';
    const client = new Client('wss://s.altnet.rippletest.net:51233');
    const main = async () => {
    await client.connect();
    const { issuerA, issuerB, alice, bob, charlie, daniel } = wallets;
    client.on('path_find', (stream) => {
    console.log(JSON.stringify(stream.alternatives, null, ' '));
    });
    client.request({
    command: 'path_find',
    subcommand: 'create',
    source_account: daniel.address, // 差出人:ダニエル
    destination_account: charlie.address, // 受取人:チャーリー
    destination_amount: {
    currency: 'USD', // 通貨コード
    issuer: issuerA.address, // 発行者Aのアドレス
    value: '100', // ダニエルがチャーリーへ送りたいA.USDの量
    },
    });
    };
    main();

スクリプトの実行

  1. コマンドラインで以下のコマンドを実行して、スクリプトを実行します。

    Terminal window
    node pathFinding.js
  2. 以下のようなログが表示されれば、成功です。

    Terminal window
    [
    {
    "paths_computed": [
    [
    {
    "account": "rstM9rxhKo4N4WEaQgQmQSPQRgZqkhHkaU", // 発行者Bのアドレス
    "type": 1
    },
    {
    "currency": "USD",
    "issuer": "rfkJ7Uz6NrNV1FdbmKB5wepoim51KFpYQp", // 発行者Aのアドレス
    "type": 48
    }
    ]
    ],
    "source_amount": {
    "currency": "EUR",
    "issuer": "rf6R7pFgytT9JKjMVjKqeTv6MeDTrbNw3", // ダニエルのアドレス
    "value": "100"
    }
    }
    ]