ユーザー間のトークンの送金2 | JavaScriptでのXRPL開発初段編
先ほどの章では、DOJ
トークンの発行者であるチャーリーのアカウントのRippling
機能を許可することに成功しました。
XRPLでは、発行者以外のユーザー間でのトークンの送付は通常不可ですが、発行者のアカウントにてRippling
機能が許可されていれば、ユーザー間でも(アリスとボブ)トークンを送り合うことができるようになるはずです。
※アリスとボブが直接やり取りするわけではなく、チャーリーを介して残高を調整するイメージです。
前提
このガイドでは、以下の登場人物が登場する設定で進行します。
- チャーリー(トークン発行者)
- アリス(トークン受領者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: 12,result: {Account: 'rQr8KfkCQcpqvFwmRspDoaL36reZhcdaeA',Amount: {currency: 'DOJ',issuer: 'rh8xETfGs1Ktizj9EXZb5QpW4aqk8bWUSU',value: '100'},DeliverMax: {currency: 'DOJ',issuer: 'rh8xETfGs1Ktizj9EXZb5QpW4aqk8bWUSU',value: '100'},Destination: 'rDNVaJJSp9iQmHC8YAAwHytnLP9aXEPhDw',Fee: '12',Flags: 0,LastLedgerSequence: 476082,Sequence: 474068,SigningPubKey: 'ED2924DBD08E093DD7FC9C35B8DCEBD74CA4C8349D68D7BF566AD6C2533B8BB865',TransactionType: 'Payment',TxnSignature: '51A2FC9136890DA4CEE45C54B81CBD9DA6266F99D190C96CE6E0E43FDC8A0DB2659804EB7C25A6992F01A0484DF3931E6131B5C9C356B1CCAA87D7B5D34EF401',ctid: 'C00743A0002D0001',date: 768406122,hash: '9E5EECCBE9D4CB8897783FB763EC715BD0BB763DFBF12E6DBD4FB5ED255783DB',inLedger: 476064,ledger_index: 476064,meta: {AffectedNodes: [Array],TransactionIndex: 45,TransactionResult: 'tecPATH_DRY' // 失敗},validated: true},type: 'response'}またも、送付に失敗してしまいました。なぜでしょうか?
こういった場合はアカウントの設定などに問題がある場合があるので一度、発行者であるチャーリーのウォレットアドレスにて、トラストラインの状態を確認してみましょう。