コンテンツにスキップ

ユーザー間のトークンの送金3 | JavaScriptでのXRPL開発初段編

それでは最後にもう一度、アリスからボブへDOJトークンを送信してみましょう。

前提

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

  • チャーリー(トークン発行者)
  • アリス(トークン受領者1)※1000 DOJ を保有中
  • ボブ(トークン受領者2)

スクリプトを作成

以下は、アリスからボブへトークンを送付するスクリプトです。

  1. プロジェクトディレクトリに作成済みのpayment_token_ab.jsを再度、使用します。

  2. 以下のようなコードになっていることを確認してください。

    const xrpl = require('xrpl');
    async function paymentTokenAB() {
    // Testnetサーバーに接続します
    const client = new xrpl.Client('wss://s.altnet.rippletest.net:51233');
    await client.connect();
    // アリスのウォレットを設定
    const senderWallet = xrpl.Wallet.fromSecret('alice_wallet_secret_here');
    // ボブのウォレットアドレスを設定
    const recipientWalletAddress = 'bob_wallet_address_here';
    // トークン発行者のウォレットアドレスを設定(チャーリー)
    const issuerWalletAddress = 'charlie_wallet_address_here';
    const currencyCode = 'DOJ'; // トークンの通貨コード
    const amount = '100'; // 送金するトークンの量
    const response = await client.submitAndWait(
    {
    TransactionType: 'Payment', // 支払い
    Account: senderWallet.address, // アリスのアドレス
    Destination: recipientWalletAddress, // ボブのアドレス
    Amount: {
    issuer: issuerWalletAddress, // トークン発行者のアドレス(チャーリー)
    currency: currencyCode, // DOJ
    value: amount, // 100
    },
    },
    { wallet: senderWallet } // アリスのウォレットで認証
    );
    // コンソールに結果を出力します
    console.log('Transaction result:', response);
    // client.disconnect()メソッドを呼び出して、サーバーとの接続を切断します
    client.disconnect();
    }
    paymentTokenAB().catch(console.error);
    1. alice_wallet_secret_hereには、テストネットのアリスのシークレットキーを入力してください。
    2. bob_wallet_address_hereには、テストネットのボブのアドレスを入力してください。
    3. charlie_wallet_address_hereには、テストネットのチャーリーのアドレスを入力してください。

スクリプトの実行

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

    Terminal window
    node payment_token_ab.js
  2. コンソールの結果を確認します。

    Terminal window
    {
    id: 16,
    result: {
    Account: 'rQr8KfkCQcpqvFwmRspDoaL36reZhcdaeA', // 差出人のアドレス(アリス)
    Amount: {
    currency: 'DOJ', // 通貨コード
    issuer: 'rh8xETfGs1Ktizj9EXZb5QpW4aqk8bWUSU', // 発行者のアドレス(チャーリー)
    value: '100' // 送金したトークンの量
    },
    DeliverMax: {
    currency: 'DOJ',
    issuer: 'rh8xETfGs1Ktizj9EXZb5QpW4aqk8bWUSU',
    value: '100'
    },
    Destination: 'rDNVaJJSp9iQmHC8YAAwHytnLP9aXEPhDw', // 受取人のアドレス(ボブ)
    Fee: '12',
    Flags: 0,
    LastLedgerSequence: 479728,
    Sequence: 474079,
    SigningPubKey: 'ED2924DBD08E093DD7FC9C35B8DCEBD74CA4C8349D68D7BF566AD6C2533B8BB865',
    TransactionType: 'Payment',
    TxnSignature: '6C7CB37EDC28F67E5E93D844946D3460830C8BBA5994AD882A7B30F487CE7C2FBFAECC3A286A638A6FD0BE00292E794BD3B7F4D3288087424BE0400E9062F80B',
    ctid: 'C00751DF00000001',
    date: 768417680,
    hash: '3A30D565CFF91EF55CB29E3FB1FBC61DAFDDB6FEE7707EC6C4AE835FD57413D9', // ハッシュ値
    inLedger: 479711,
    ledger_index: 479711, // レジャーインデックス番号
    meta: {
    AffectedNodes: [Array],
    TransactionIndex: 0,
    TransactionResult: 'tesSUCCESS', //成功
    delivered_amount: [Object]
    },
    validated: true
    },
    type: 'response'
    }

    ついに、アリスからボブへのDOJトークンの送付が成功しました。

    実際のコンソールに表示されたハッシュ値やアリスのアドレスなどを用いて、テストネット版のエクスプローラーで確認してみましょう。

さいごに

「初段」編では、トラストライン機能に関連したスクリプトや概念や仕様について紹介しました。

このガイドの冒頭で記述した「Rippleプロトコルを理解する内容」という意味をご理解いただけたのではないでしょうか。

実際に開発していくには、コンソールに表示されたフィールドフラグなどをある程度理解していく必要がありますので、後学のためにあえて複雑に紹介させていただきました。

XRPLでは、ネイティブトークンのXRPをやり取りするだけでなく、信用に基づいたトークンの仕組みがプロトコル機能として提供されていることが大きな魅力です。

IOURipplingなど、細かな部分についてはこのガイド内では概要のみ記載しておりますので、もっと知りたいかたは公式ドキュメントや、有識者の方の記事をぜひ参考にしてみてください。