今日からTipSLACKの中身を解剖していきます。
まずはもっとも基本となるXEM送金についてです。
比較的簡単と言われるNEMを利用したアプリ開発ですが、そのライブラリの最高峰とも言えるnem-libraryはTypeScriptの使用を推奨しており、やはり敷居が高いと言わざるを得ません。
今回はnode.js を利用した完全なピュアJavaScriptでの実装方法を紹介します。
環境構築にはこちらの記事を参考にしてください。
amazon linuxでNode.jsのNEM開発環境を爆速で整える
ライブラリは以下のようにrequireします。
const nemlibrary = require('nem-library');
const NetworkTypes = nemlibrary.NetworkTypes;
const Account = nemlibrary.Account;
const Address = nemlibrary.Address;
const TimeWindow = nemlibrary.TimeWindow;
const XEM = nemlibrary.XEM;
const PlainMessage = nemlibrary.PlainMessage;
const TransferTransaction = nemlibrary.TransferTransaction;
const TransactionHttp = nemlibrary.TransactionHttp;
メインネットへの接続は以下の1行で終わり。これは便利です。
nemlibrary.NEMLibrary.bootstrap(NetworkTypes.MAIN_NET);
そして肝心の送金部分です。
const PRI_KEY = "aaaaaaaaaaaabbbbbbbbbbbcccccccccccccc";
const address = "NXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZZZZZZZ";
const amount = 1;
const message = "これはテストです";
const transferTransaction = TransferTransaction.create(
TimeWindow.createWithDeadline(),
new Address(address),
new XEM(amount),
PlainMessage.create(message)
);
const account = Account.createWithPrivateKey(PRI_KEY);
const signedTransaction = account.signTransaction(transferTransaction);
const transactionHttp = new TransactionHttp();
transactionHttp.announceTransaction(signedTransaction)
.subscribe(
value => {console.log( "リクエスト結果:\n" + value.message);},
err => {console.log( "失敗:\n" + err.toString());}
);
まず、TransferTransaction.create()でトランザクションを作成します。
引数に指定するのは、締め時間、送信先のアドレス、XEM量、メッセージです。
次に送金したい人の秘密鍵からAccountクラスを生成します。
そして、先ほど作ったTransactionをAccountクラスのsignTransactionで署名します。
ネットワークに乗せるにはTransactionHttpクラスを利用します。announceTransactionを呼び出すと、その結果をsubscribeで捕捉することができます。第一引数に成功時のメッセージ、第二引数に失敗時のメッセージが格納されるので、キャッチして画面に表示してください。
どうですか?とっても簡単ですね!
これを読んでもっと多くの方がNEMアプリ開発に興味をもっていただけると嬉しいです!
次はmosaicの送金にチャレンジします。ちょっと難しくなりますが、マスターすれば可能性はもっと広がりますよ!お楽しみ!