gemのnem-rubyを使えば簡単だよ!!実際のコードを見せましょう。
前回はJavaScriptでNEMのAPIを利用するライブラリのNEM Libraryを用いてアカウントの情報取得、XEMの送金を実装しました。
今回はフロントエンドではなくサーバサイドでNEMのAPIを利用してみます。サーバサイドではphp、Python、Rubyと色々ありますがRubyを選択しました。RubyでRuby on Railsになります。
実装内容としては前回同様アカウント情報の取得とXEMの送金にしました。
Contents
nem-rubyの実装方法
まずはgemの指定が必要です。
1 |
gem 'nem-ruby' |
アカウント情報を取得する
gemのインストールができたら次は、アカウント情報の取得です。
1 2 3 4 5 6 7 |
require 'pp' require 'nem' address = 'アカウント情報を取得したいアドレスを入れてください' node = Nem::Node.new(host: 'bigalice2.nem.ninja’) # ノードの指定 account_endpoint = Nem::Endpoint::Account.new(node) Rails::logger::debug(account_endpoint.inspect) |
デフォルトの状態ではテスト環境(TestNet)に接続しています。本番環境(MainNet)に接続させたい場合は設定を変える必要があります。
1 2 3 |
Nem.configure do |conf| conf.default_network = :mainnet end |
他にもAPIの呼び出し内容をログに出力する等の、いくつかの設定はこちらを参考にして下さい。
送金する
次に送金のコードです。送金するには、情報として送金元アカウントの秘密鍵、送金先のアドレス、送金量が必要です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
require 'pp' require 'nem' private_key = '送金元アカウントの秘密鍵を入れてください' recipient = '送金先アドレスを入れてください' kp = Nem::Keypair.new(private_key) node = Nem::Node.new(host: 'bigalice2.nem.ninja') tx_endpoint = Nem::Endpoint::Transaction.new(node) tx = Nem::Transaction::Transfer.new(recipient, 1, '送金テスト') req = Nem::Request::Announce.new(tx, kp) res = tx_endpoint.announce(req) Rails::logger::debug("Message: #{res.message}") Rails::logger::debug("TransactionHash: #{res.transaction_hash}") |
コードとしては以上です。例によってもう一歩進んでRailsでサンプルアプリを作ってみました。前回同様にアカウント情報の取得とXEMの送金ができるだけです。
今回実装したコードはこちらです。
Railsでのサンプルコードを動作させる
動作環境
動作させた環境は以下になります。
- Mac OS High Sierra v10.13.5
- rails v5.2.0
- nem-ruby v0.0.11
セットアップ
リポジトリをクローン
1 2 |
$ git clone git@github.com:Matsushin/nem-ruby-transfer-sample.git $ cd nem-ruby-transfer-sample |
gemのインストールとDBを作成
1 2 |
$ bundle install $ bundle exec rake db:create |
サーバを起動
1 |
$ bundle exec rails s |
トップ画面(http://localhost:3000)にアクセス。エラーが発生していないければOK。
動作確認
前述でも紹介しましたが、動作はNEM Libraryでのサンプルアプリとほぼ同じです。下記記事の「動作確認」を参考にして下さい。
まとめ
今回はgemのnem-rubyを用いてアカウント情報の取得とXEMの送金を実装してみました。
Railsでも簡単に実装できることがわかったと思います。NEM Libraryと比較してもあまり変わらない感じがしました。
[relationId postid=955,1023,1081 head=”あわせて読みたい”]
JavaScriptでNEM LIbraryを使ってNEMのAPIを使えることはわかった!
でも業務ではRails使ってるし、Railsでの実装方法もさくっと知りたいな・・。