JavaScript
Node.js
Blockchain
NEM

nem-libraryを利用してJavaScriptでXEM送金する

今日からTipSLACKの中身を解剖していきます。

まずはもっとも基本となるXEM送金についてです。
比較的簡単と言われるNEMを利用したアプリ開発ですが、そのライブラリの最高峰とも言えるnem-libraryはTypeScriptの使用を推奨しており、やはり敷居が高いと言わざるを得ません。

今回はnode.js を利用した完全なピュアJavaScriptでの実装方法を紹介します。

環境構築にはこちらの記事を参考にしてください。
amazon linuxでNode.jsのNEM開発環境を爆速で整える

ライブラリは以下のようにrequireします。

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行で終わり。これは便利です。

bootstrap
nemlibrary.NEMLibrary.bootstrap(NetworkTypes.MAIN_NET);

そして肝心の送金部分です。

node.js
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の送金にチャレンジします。ちょっと難しくなりますが、マスターすれば可能性はもっと広がりますよ!お楽しみ!