ライブラリを利用した実際のコードを見せましょう!!
前回はNEMのAPIを利用するためにテスト用アドレスの作成等の環境準備の手順を解説しました。
今回はせっかく開発の準備したのでAPIを利用したライブラリの具体的な実装方法を紹介します。実装内容としては基本的なアカウント情報の取得とXEMの送金にしました。
利用するライブラリとしてはJavaScriptのNEM Libraryにしました。JavaScriptでは他にNEM-sdkやnem-apiと複数存在していますが、このようなツイートを見かけたので、NEM Libraryを利用することに。
NEM2-SDKは現行のNEM-sdkというよりNEM Libraryの後継なので、これからNEMで何か作りたい人はNEM Libraryの利用を検討した方がよいと思う。https://t.co/23zQOhxcjJ
— Daoka (@DaokaTrade)
NEM2-SDKとは現在開発中のNEMの次のバージョンであるNEM2(Catapult)のライブラリになります。
NEM2での新機能について詳しくしりたい方はこちらの記事が参考になります。
またAPIを呼び出すライブラリは他にも複数の言語であります。
[relationId postid=955 head=”あわせて読みたい”]
それではコードを見ていきましょう!
Contents
NEM Libraryの実装方法
アカウント情報を取得する
まずはアカウント情報の取得です。たったこれだけ。いくつか定数の定義をしていますが実質アカウント情報の取得している箇所は数行だけです。
1 2 3 4 5 6 7 8 9 10 11 12 |
const nemlibrary = require('nem-library'); const NetworkTypes = nemlibrary.NetworkTypes; const AccountHttp = nemlibrary.AccountHttp; const Address = nemlibrary.Address; nemlibrary.NEMLibrary.bootstrap(NetworkTypes.TEST_NET); // TestNetへの接続 const address = "アカウント情報を取得したいアドレスを入れてください"; const accountHttp = new AccountHttp(); // アカウント情報の取得 accountHttp.getFromAddress(new Address(address)) .subscribe(accountInfoWithMetaData => { console.log(accountInfoWithMetaData); } ); |
今回はテスト環境(TestNet)に接続していますが本番環境に(MainNet)に接続させたい場合は上から4行目のコードを以下のような記述にします。
1 |
nemlibrary.NEMLibrary.bootstrap(NetworkTypes.MAIN_NET); |
送金する
次に送金のコードです。送金するには、情報として送金元アカウントの秘密鍵、送金先のアドレス、送金量が必要です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
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; nemlibrary.NEMLibrary.bootstrap(NetworkTypes.TEST_NET); // TestNetへの接続 const PRIVATE_KEY = "送金元アカウントの秘密鍵を入れてください"; const address = "送金先アドレスを入れてください"; const amount = 1; // 送金量 const message = "送金テスト"; // 送金トランザクションを作成 const transferTransaction = TransferTransaction.create( TimeWindow.createWithDeadline(), new Address(address), new XEM(amount), PlainMessage.create(message) ); const account = Account.createWithPrivateKey(PRIVATE_KEY); // トランザクションを署名 const signedTransaction = account.signTransaction(transferTransaction); const transactionHttp = new TransactionHttp(); // 送金実行 transactionHttp.announceTransaction(signedTransaction) .subscribe( value => {console.log(value.message);}, err => {console.log(err.toString());} ); |
流れとしてはまずは送金トランザクションを作成、署名してから送金を実行させます。コードとしては以上です!そんなに難しいことはしていないのではないでしょうか?
さらにもう一歩進んでReact.jsでサンプルアプリを作ってみました。アカウント情報の取得とXEMの送金ができるのみのシンプルな作りとなっています。動作を見てみるとイメージしやすいのではないでしょうか?
今回実装したコードはこちらです。
サンプルコードを動作させる
動作環境
動作させた環境は以下になります。
- Mac OS High Sierra v10.13.5
- node v10.0.0
- yarn v1.6.0
- react v16.4.1
- new-library v1.0.7
セットアップ
リポジトリをクローン
1 2 |
$ git clone git@github.com:Matsushin/nem-library-transfer-sample.git $ cd new-library-transfer-sample |
各ライブラリをインストール
1 |
$ yarn install |
ローカルサーバを起動
1 |
$ yarn start |
トップ画面(http://localhost:3000)にアクセス。エラーが発生していないければOK。
それでは次に動作を確認していきましょう。
動作確認
テスト用のアドレスを入力して「アカウント情報を取得する」をクリック。
残高が表示されたらOK。
続いて送金のテストをするために送金先のアドレス、取得したアカウント情報に紐づく、秘密鍵と送金金額を入力して「XEMを送金する」をクリック。
送金結果に「送金成功」と表示されればOK!
少し待って画面をリロードして残高が減っていることも確認できます。もちろんNanoWalletからでも確認できるはずです。
ちなみに0.1は送金の手数料のため入力した2ではなく2.1XEM減っています。
またトップ画面に戻って再度フォームに送金先のアドレスを入力すると、着金していることが確認できるはずです!
サンプルコードの動作はここまでになります。
まとめ
今回はNEM Libraryを用いてアカウント情報の取得とXEMの送金を実装してみました。
ライブラリを使えば簡単に実装できることがわかったと思います。
次はよりサービスを作るときにより使いそうなモザイクの作成、送金や別のライブラリでの実装方法を紹介したいです。
テスト用のアドレスとXEMが準備できた!でもせっかくならAPI利用の実装方法もさくっと分かったりしないかな・・・。