コンテンツにスキップ

発行者に紐づくトラストライン情報を確認する | JavaScriptでのXRPL開発初段編

先ほどの章では、Ripplingを許可したにもかかわらず、アリスからボブへのトークンの送付が失敗してしまいました。

原因を探るため、チャーリーに紐づくトラストラインの情報を一度確認してみましょう。

トラストラインのアカウント情報を取得するには、rippledパブリックメソッドであるアカウントメソッドを使用します。

前提

このガイドは、以下の登場人物が登場する設定で進行しています。

  • チャーリー(トークン発行者)
  • アリス(トークン受領者)

スクリプトを作成

トラストラインのリストを確認するため、account_linesコマンドを使用します。

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

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

    const xrpl = require('xrpl');
    async function checkAccountLines(accountAddress) {
    // Testnetに接続
    const client = new xrpl.Client('wss://s.altnet.rippletest.net:51233');
    await client.connect();
    try {
    // account_lines コマンドを用いて確認
    const response = await client.request({
    command: 'account_lines', // コマンド
    account: accountAddress, // 確認したいアドレス
    ledger_index: 'validated', // 確実に検証済みのレジャーから取得する
    });
    // コンソールに結果を出力します
    console.log('Account Lines:', response.result.lines);
    } catch (error) {
    console.error('Error retrieving account lines:', error);
    }
    // client.disconnect()メソッドを呼び出して、サーバーとの接続を切断します
    client.disconnect();
    }
    // 関数に引数としてアカウントアドレスを渡す
    const charlieAddress = 'charlie_wallet_address_here'; // チャーリーのアドレス
    checkAccountLines(charlieAddress);

    charlie_wallet_address_hereには、テストネットのチャーリーのアドレスを入力してください。

スクリプトの実行

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

    Terminal window
    node check_account_lines.js
  2. 成功すれば、コンソールに以下が表示されます。

    Terminal window
    Account Lines: [
    { // アリス
    account: 'rQr8KfkCQcpqvFwmRspDoaL36reZhcdaeA',
    balance: '-1000', // アリスに対しての債務
    currency: 'DOJ',
    limit: '0',
    limit_peer: '10000',
    no_ripple: true, // No Rippleフラグ
    no_ripple_peer: false,
    quality_in: 0,
    quality_out: 0
    },
    { // ボブ
    account: 'rDNVaJJSp9iQmHC8YAAwHytnLP9aXEPhDw',
    balance: '0',
    currency: 'DOJ',
    limit: '0',
    limit_peer: '10000',
    no_ripple: true, // No Rippleフラグ
    no_ripple_peer: false,
    quality_in: 0,
    quality_out: 0
    }
    ]

    発行者であるチャーリー視点で確認した結果、紐づくアカウントのトラストラインが、no_ripple: trueとなってしまっていました。

    また、-1000となっているのは、チャーリーの視点では「アリスに対して債務がある」という意味になるからです。例えるのであれば、これは国民が所有している国債と同じような概念となります。

Ripplingの許可とトラストラインの関係について

アリスとボブはトラストラインを設定し、チャーリーからトークンを送付してもらえる権利は得てはいますが、NoRippleフラグが有効になってしまっていました。

原因は、DOJトークンの発行者であるチャーリーのアカウントに対してRippleフラグを許可する前に、トラストラインをセットしてしまっていたことです。

基本的にユーザー間でのトークンの送付を許可したい場合は、発行者自身のアカウントのRipplingを有効にしてから、ユーザーにトラストラインをセットしてもらう必要がありますのでご注意ください。

次の章では、TrustSetトランザクションを用いて、NoRippleフラグを無効化する方法を紹介します。