コンテンツにスキップ

発行者からトークンを送付する | JavaScriptでのXRPL開発初段編

XRPLでは、トラストラインを設定したアカウントとユーザー間であれば、即座にトークンを送金することができるようになります。

先ほどの章で、アリスはチャーリーが発行体となるDOJトークンを10,000ほど受領する権利を得ましたので、チャーリーからアリスに1000 DOJを送付してみます。

前提

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

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

スクリプトを作成

以下は、チャーリーからアリスにトークンを送金するスクリプトです。

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

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

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

スクリプトの実行

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

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

    Terminal window
    {
    id: 12,
    result: {
    Account: 'rh8xETfGs1Ktizj9EXZb5QpW4aqk8bWUSU', // 差出人のアドレス(トークン発行者:チャーリー)
    Amount: {
    currency: 'DOJ',
    issuer: 'rh8xETfGs1Ktizj9EXZb5QpW4aqk8bWUSU', // トークン発行者のアドレス(チャーリー)
    value: '1000'
    },
    DeliverMax: {
    currency: 'DOJ',
    issuer: 'rh8xETfGs1Ktizj9EXZb5QpW4aqk8bWUSU',
    value: '1000'
    },
    Destination: 'rQr8KfkCQcpqvFwmRspDoaL36reZhcdaeA', // アリスのアドレス
    Fee: '12', // 送金手数料: 12 drops
    Flags: 0,
    LastLedgerSequence: 475482,
    Sequence: 473776,
    SigningPubKey: 'EDF36017DE68C9A5E24ECB129161EACE7AE303E3FF151FF71E1160B0EEA6B8074F',
    TransactionType: 'Payment',
    TxnSignature: '8BFCFDD9E88C09277376C295C494231883C15BF91AEC86CFC288CF58731526CD8BDE4B13CC4EAEE1E6E51254F0BB0A8B9E7ACC1C0ABFEB9EB5C4ECBA891A330B',
    ctid: 'C007414800000001',
    date: 768404212,
    hash: '89283A3D48F7776E9FCE061713A787415A8E79428C318709C133A7A5F085EDC5', // ハッシュ値
    inLedger: 475464,
    ledger_index: 475464, // レジャーインデックス番号
    meta: {
    AffectedNodes: [Array],
    TransactionIndex: 0,
    TransactionResult: 'tesSUCCESS', // 成功
    delivered_amount: [Object]
    },
    validated: true // 検証済みのトランザクション
    },
    type: 'response'
    }

    ここで実際にアリスのアカウントアドレス情報用いて、エクスプローラーで確認してみましょう。成功していれば、1000 DOJを受領できていることが確認できるかと思います。

    このように、XRPLではトラストライン機能を利用することで、非常にスマートで安全にトークンを発行することが可能となっています。