xrpl.jsでAPIバージョンを指定する
xrpl.js
xrpl.jsはXRP Ledgerとのやりとりを行うためのJavaScript/TypeScriptライブラリです。
コミュニティによって最も活発に開発が行われているクライアントライブラリの一つであり、XRPL開発を始めるにあたっては一番おすすめのライブラリです。
APIバージョン
XRP Ledgerのコアコードであるrippledのバージョン2.0.0においてAPIバージョン2が導入されました。
rippledで利用されるデフォルトのAPIバージョンは1ですが、xrpl.jsの4.0.0以降ではAPIバージョン2がデフォルトとなっています。
xrpl.jsにおいてもAPIバージョン1を利用したまま開発を行うにはどのようにすればよいでしょうか?
APIバージョン2(デフォルト)を利用する
まずは比較のため、デフォルトのAPIバージョン2を利用する場合のコードを見ていきましょう。
import { Client } from "xrpl";
const client = new Client("wss://xrplcluster.com");
await client.connect();
const response = await client.request({
command: "account_info",
account: "rQQQrUdN1cLdNmxH4dHfKgmX5P4kf3ZrM",
});
console.log(response.result)
xrpl.jsを触ったことがある人にとっては最も基本的なコードであることが分かると思います。
APIバージョン1を利用する
リクエスト毎にAPIバージョンを指定する
各リクエストのパラメータにapi_version
を指定することでAPIバージョンを指定することができます。
import { Client } from "xrpl";
const client = new Client("wss://xrplcluster.com");
await client.connect();
const response = await client.request({
command: "account_info",
account: "rQQQrUdN1cLdNmxH4dHfKgmX5P4kf3ZrM",
api_version: 1, // 追加
});
console.log(response.result)
全てのリクエストにAPIバージョンを指定する
リクエストがデフォルトで利用するAPIバージョンの情報はClientクラスのインスタンスに格納されています。
これを変更することでAPIバージョン1を利用することができます。
import { Client } from "xrpl";
const client = new Client("wss://xrplcluster.com");
client.apiVersion = 1; // 追加
await client.connect();
const response = await client.request({
command: "account_info",
account: "rQQQrUdN1cLdNmxH4dHfKgmX5P4kf3ZrM",
});
console.log(response.result)
APIバージョン1のみをサポートするネットワークを利用する場合
apiVersionが1のみをサポートするネットワークを利用する場合、client.apiVersion = 1;
はclient.connect()
よりも前で設定する必要があります。
これはclient.connect()
の処理内でclient.apiVersion
が利用されており、client.apiVersion = 1;
をclient.connect()
よりも後に設定するとclient.connect()
の処理でapiVersion=2としてリクエストが行われるためです。
import { Client } from "xrpl";
const client = new Client("wss://xrplcluster.com");
await client.connect(); // apiVersion=2として処理されてしまう
client.apiVersion = 1; // ❌
const response = await client.request({ // apiVersion=1
command: "account_info",
account: "rQQQrUdN1cLdNmxH4dHfKgmX5P4kf3ZrM",
});
console.log(response.result)
import { Client } from "xrpl";
const client = new Client("wss://xrplcluster.com");
client.apiVersion = 1; // ⭕️
await client.connect(); // apiVersion=1
const response = await client.request({ // apiVersion=1
command: "account_info",
account: "rQQQrUdN1cLdNmxH4dHfKgmX5P4kf3ZrM",
});
console.log(response.result)
Discussion