ユーザー間のトークンの送金3 | JavaScriptでのXRPL開発初段編
それでは最後にもう一度、アリスからボブへDOJ
トークンを送信してみましょう。
前提
このガイドでは、以下の登場人物が登場する設定で進行します。
- チャーリー(トークン発行者)
- アリス(トークン受領者1)※1000 DOJ を保有中
- ボブ(トークン受領者2)
スクリプトを作成
以下は、アリスからボブへトークンを送付するスクリプトです。
-
プロジェクトディレクトリに作成済みの
payment_token_ab.js
を再度、使用します。 -
以下のようなコードになっていることを確認してください。
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, // DOJvalue: amount, // 100},},{ wallet: senderWallet } // アリスのウォレットで認証);// コンソールに結果を出力しますconsole.log('Transaction result:', response);// client.disconnect()メソッドを呼び出して、サーバーとの接続を切断しますclient.disconnect();}paymentTokenAB().catch(console.error);alice_wallet_secret_here
には、テストネットのアリスのシークレットキーを入力してください。bob_wallet_address_here
には、テストネットのボブのアドレスを入力してください。charlie_wallet_address_here
には、テストネットのチャーリーのアドレスを入力してください。
スクリプトの実行
-
コマンドラインで以下のコマンドを実行して、スクリプトを実行します。
Terminal window node payment_token_ab.js -
コンソールの結果を確認します。
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
をやり取りするだけでなく、信用に基づいたトークンの仕組みがプロトコル機能として提供されていることが大きな魅力です。
IOU
やRippling
など、細かな部分についてはこのガイド内では概要のみ記載しておりますので、もっと知りたいかたは公式ドキュメントや、有識者の方の記事をぜひ参考にしてみてください。