NEM Infrastructure Server(NIS) 用 rubygem を作りました、が…

NEMのAPIを触ってみていろいろと見えてきたのでrubyでAPIラッパーを作ってみました。

ラッパーなのでただサーバへリクエストを投げるだけですが、NISから帰ってくる JSON構造をクラス化したりといろいろやってみました。

gem install nis-ruby

インストールはgemなりbundlerなりでできます。

そして、nis-ruby を組み込んで蛇口のようなWebインターフェイスを作りました。

ローカルノードを立て、そこへnis-rubyがリクエストを行う感じのWebインターフェイスです。

課題

さて、いろいろ発表しておいてですが、nis-ruby は肝心の部分が未完成です…。

肝心な部分とは、トランザクションの暗号化です。

ローカルノードに対してであれば、このあたりのサンプルどおりjsonをPOSTしてあげれば動きます。

ローカルノードへのトランザクションには対応しているので、githubリポジトリの samples/ のファイルを参考にしてみてください。

問題は、リモートノードへのトランザクションです。

リモートノードへのトランザクションはトランザクションを暗号化しなければなりません。

このあたりにシリアライズと署名の説明があるのですがその辺の実装が上手く出来ませんでした。

NanoWallet ではやっているはずなので、ソースをそのまま移植していけばいいと思ったのですが、私には難解で手が止まってしまっている状態です。

いっそ ExecJS でラップして、暗号化部分だけでも使えればと思ったんですがそれも失敗(これは単に ExecJS の使い方がわかってないからかも…)

この辺について何かアドバイス、もしくはもっといいモノを誰かが作ってくれるとありがたいですね…。

Rubyでまともに使えるgemが作れれば、Ruby on Rails もかなり普及しましたし、組み込めるシステムの幅が広がるのではないでしょうか。

メモ

暗号化部分の実装を調査中に見つけたなにか役に立ちそうな情報を残します。

ruby で実装した蛇口ですがしばらくはサーバを借りて運用していたのですが、Express+NEM-sdkの組み合わせで再制作し、Herokuへデプロイしました。

ソースも公開しているのでご参考ください。

ちなみにNEM-sdkとはリポジトリの説明によると、NanoWalletからコアの部分を切り出した(まだ未完成のようです)もので、UIとの分離を目的としたものです。

将来的には NanoWallet はUI部分とコア部分でリポジトリが分離していくのではないでしょうか。

そうなれば色々なウォレットが開発されていきそうですね。

(NanoWalletをいじってみようと思ったのですがAngularJSでした。以前触ってみたのですがどうにも馴染めなくて…)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする