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.EUR
をA.USD
に希望額分交換してくれる人がいれば、ダニエルのB.EUR
はA.USD
として送ることができるはずです。
ダニエルはB.EUR
をチャーリーにA.USD
として、送付することが可能かを検索しようと考えました。
スクリプトの作成
-
プロジェクトディレクトリに
pathFinding.js
という新しいファイルを作成します。 -
以下のコードを
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();
スクリプトの実行
-
コマンドラインで以下のコマンドを実行して、スクリプトを実行します。
Terminal window node pathFinding.js -
以下のようなログが表示されれば、成功です。
Terminal window [{"paths_computed": [[{"account": "rstM9rxhKo4N4WEaQgQmQSPQRgZqkhHkaU", // 発行者Bのアドレス"type": 1},{"currency": "USD","issuer": "rfkJ7Uz6NrNV1FdbmKB5wepoim51KFpYQp", // 発行者Aのアドレス"type": 48}]],"source_amount": {"currency": "EUR","issuer": "rf6R7pFgytT9JKjMVjKqeTv6MeDTrbNw3", // ダニエルのアドレス"value": "100"}}]