Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

nem_takanobu
ブロックチェーンはNEM、機械学習はPyTorchが好きです。最近はガウス過程(MCMC、GPLVM)を勉強中。経産省・IPA認定ITストラテジスト
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away